Hello community,

here is the log from the commit of package python-Quandl for openSUSE:Factory 
checked in at 2019-01-10 15:21:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Quandl (Old)
 and      /work/SRC/openSUSE:Factory/.python-Quandl.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Quandl"

Thu Jan 10 15:21:08 2019 rev:10 rq:663657 version:3.4.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Quandl/python-Quandl.changes      
2018-12-19 13:52:07.603059540 +0100
+++ /work/SRC/openSUSE:Factory/.python-Quandl.new.28833/python-Quandl.changes   
2019-01-10 15:21:22.754452370 +0100
@@ -1,0 +2,6 @@
+Tue Jan  8 12:39:05 UTC 2019 - Tomáš Chvátal <tchva...@suse.com>
+
+- Update to 3.4.5:
+  * Various small fixes see https://github.com/quandl/quandl-python/pull/126
+
+-------------------------------------------------------------------

Old:
----
  Quandl-3.4.4.tar.gz

New:
----
  Quandl-3.4.5.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-Quandl.spec ++++++
--- /var/tmp/diff_new_pack.jFBfvV/_old  2019-01-10 15:21:23.138451972 +0100
+++ /var/tmp/diff_new_pack.jFBfvV/_new  2019-01-10 15:21:23.142451967 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-Quandl
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-Quandl
-Version:        3.4.4
+Version:        3.4.5
 Release:        0
 Summary:        Package for quandl API access
 License:        MIT
@@ -48,6 +48,7 @@
 BuildRequires:  %{python_module nose}
 BuildRequires:  %{python_module numpy >= 1.8}
 BuildRequires:  %{python_module pandas >= 0.14}
+BuildRequires:  %{python_module parameterized}
 BuildRequires:  %{python_module pyOpenSSL}
 BuildRequires:  %{python_module pyasn1}
 BuildRequires:  %{python_module pycodestyle}

++++++ Quandl-3.4.4.tar.gz -> Quandl-3.4.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/CHANGELOG.md 
new/Quandl-3.4.5/CHANGELOG.md
--- old/Quandl-3.4.4/CHANGELOG.md       2018-10-24 21:24:58.000000000 +0200
+++ new/Quandl-3.4.5/CHANGELOG.md       2018-11-27 15:11:55.000000000 +0100
@@ -1,6 +1,10 @@
 ### unreleased
 * Remove dependency on unittest2, use unittest instead (#113)
 
+### 3.4.5 - 2018-11-21
+
+* Use POST requests for some datatable calls 
https://github.com/quandl/quandl-python/pull/126
+
 ### 3.4.4 - 2018-10-24
 
 * Add functionality to automatically retry failed API calls 
https://github.com/quandl/quandl-python/pull/124
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/PKG-INFO new/Quandl-3.4.5/PKG-INFO
--- old/Quandl-3.4.4/PKG-INFO   2018-10-24 21:27:57.000000000 +0200
+++ new/Quandl-3.4.5/PKG-INFO   2018-11-27 15:25:55.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: Quandl
-Version: 3.4.4
+Version: 3.4.5
 Summary: Package for quandl API access
 Home-page: https://github.com/quandl/quandl-python
 Author: Quandl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/Quandl.egg-info/PKG-INFO 
new/Quandl-3.4.5/Quandl.egg-info/PKG-INFO
--- old/Quandl-3.4.4/Quandl.egg-info/PKG-INFO   2018-10-24 21:27:56.000000000 
+0200
+++ new/Quandl-3.4.5/Quandl.egg-info/PKG-INFO   2018-11-27 15:25:55.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: Quandl
-Version: 3.4.4
+Version: 3.4.5
 Summary: Package for quandl API access
 Home-page: https://github.com/quandl/quandl-python
 Author: Quandl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/Quandl.egg-info/SOURCES.txt 
new/Quandl-3.4.5/Quandl.egg-info/SOURCES.txt
--- old/Quandl-3.4.4/Quandl.egg-info/SOURCES.txt        2018-10-24 
21:27:56.000000000 +0200
+++ new/Quandl-3.4.5/Quandl.egg-info/SOURCES.txt        2018-11-27 
15:25:55.000000000 +0100
@@ -45,6 +45,7 @@
 quandl/operations/operation.py
 quandl/utils/__init__.py
 quandl/utils/api_key_util.py
+quandl/utils/request_type_util.py
 test/__init__.py
 test/test_connection.py
 test/test_data.py
@@ -56,21 +57,9 @@
 test/test_get_table.py
 test/test_merged_dataset.py
 test/test_model.py
+test/test_request_type_util.py
 test/test_retries.py
 test/test_util.py
-test/__pycache__/__init__.cpython-37.pyc
-test/__pycache__/test_connection.cpython-37.pyc
-test/__pycache__/test_data.cpython-37.pyc
-test/__pycache__/test_database.cpython-37.pyc
-test/__pycache__/test_dataset.cpython-37.pyc
-test/__pycache__/test_datatable.cpython-37.pyc
-test/__pycache__/test_datatable_data.cpython-37.pyc
-test/__pycache__/test_get.cpython-37.pyc
-test/__pycache__/test_get_table.cpython-37.pyc
-test/__pycache__/test_merged_dataset.cpython-37.pyc
-test/__pycache__/test_model.cpython-37.pyc
-test/__pycache__/test_retries.cpython-37.pyc
-test/__pycache__/test_util.cpython-37.pyc
 test/factories/__init__.py
 test/factories/database.py
 test/factories/dataset.py
@@ -79,21 +68,9 @@
 test/factories/datatable_data.py
 test/factories/datatable_meta.py
 test/factories/meta.py
-test/factories/__pycache__/__init__.cpython-37.pyc
-test/factories/__pycache__/database.cpython-37.pyc
-test/factories/__pycache__/dataset.cpython-37.pyc
-test/factories/__pycache__/dataset_data.cpython-37.pyc
-test/factories/__pycache__/datatable.cpython-37.pyc
-test/factories/__pycache__/datatable_data.cpython-37.pyc
-test/factories/__pycache__/datatable_meta.cpython-37.pyc
-test/factories/__pycache__/meta.cpython-37.pyc
 test/helpers/__init__.py
 test/helpers/httpretty_extension.py
 test/helpers/merged_datasets_helper.py
 test/helpers/my_httpretty.py
-test/helpers/__pycache__/__init__.cpython-37.pyc
-test/helpers/__pycache__/httpretty_extension.cpython-37.pyc
-test/helpers/__pycache__/merged_datasets_helper.cpython-37.pyc
-test/helpers/__pycache__/my_httpretty.cpython-37.pyc
-test/test_operations/__init__.py
-test/test_operations/__pycache__/__init__.cpython-37.pyc
\ No newline at end of file
+test/helpers/random_data_helper.py
+test/test_operations/__init__.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/quandl/model/datatable.py 
new/Quandl-3.4.5/quandl/model/datatable.py
--- old/Quandl-3.4.4/quandl/model/datatable.py  2018-10-24 21:24:58.000000000 
+0200
+++ new/Quandl-3.4.5/quandl/model/datatable.py  2018-11-27 15:11:55.000000000 
+0100
@@ -11,6 +11,7 @@
 from quandl.errors.quandl_error import QuandlError
 from quandl.operations.get import GetOperation
 from quandl.operations.list import ListOperation
+from quandl.utils.request_type_util import RequestType
 
 from .model_base import ModelBase
 from quandl.message import Message
@@ -26,8 +27,9 @@
         return "%s/metadata" % cls.default_path()
 
     def data(self, **options):
-        updated_options = Util.convert_options(**options)
-        return Data.page(self, **updated_options)
+        if not options:
+            options = {'params': {}}
+        return Data.page(self, **options)
 
     def download_file(self, file_or_folder_path, **options):
         if not isinstance(file_or_folder_path, str):
@@ -36,19 +38,21 @@
         file_is_ready = False
 
         while not file_is_ready:
-            file_is_ready = self._request_file_info(file_or_folder_path, 
**options)
+            file_is_ready = self._request_file_info(file_or_folder_path, 
params=options)
             if not file_is_ready:
                 print(Message.LONG_GENERATION_TIME)
                 sleep(self.WAIT_GENERATION_INTERVAL)
 
     def _request_file_info(self, file_or_folder_path, **options):
         url = self._download_request_path()
-        updated_options = Util.convert_options(params=options)
         code_name = self.code
+        options['params']['qopts.export'] = 'true'
 
-        updated_options['params']['qopts.export'] = 'true'
+        request_type = RequestType.get_request_type(url, **options)
 
-        r = Connection.request('get', url, **updated_options)
+        updated_options = Util.convert_options(request_type=request_type, 
**options)
+
+        r = Connection.request(request_type, url, **updated_options)
 
         response_data = r.json()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/quandl/operations/list.py 
new/Quandl-3.4.5/quandl/operations/list.py
--- old/Quandl-3.4.4/quandl/operations/list.py  2018-10-12 17:12:24.000000000 
+0200
+++ new/Quandl-3.4.5/quandl/operations/list.py  2018-11-27 15:11:55.000000000 
+0100
@@ -2,6 +2,7 @@
 from quandl.connection import Connection
 from quandl.util import Util
 from quandl.model.paginated_list import PaginatedList
+from quandl.utils.request_type_util import RequestType
 
 
 class ListOperation(Operation):
@@ -21,7 +22,13 @@
     def page(cls, datatable, **options):
         params = {'id': str(datatable.code)}
         path = Util.constructed_path(datatable.default_path(), params)
-        r = Connection.request('get', path, **options)
+
+        request_type = RequestType.get_request_type(path, **options)
+
+        updated_options = Util.convert_options(request_type=request_type, 
**options)
+
+        r = Connection.request(request_type, path, **updated_options)
+
         response_data = r.json()
         Util.convert_to_dates(response_data)
         resource = cls.create_datatable_list_from_response(response_data)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/quandl/util.py 
new/Quandl-3.4.5/quandl/util.py
--- old/Quandl-3.4.4/quandl/util.py     2018-10-12 17:12:24.000000000 +0200
+++ new/Quandl-3.4.5/quandl/util.py     2018-11-27 15:11:55.000000000 +0100
@@ -60,7 +60,16 @@
             return value
 
     @staticmethod
-    def convert_options(**options):
+    def convert_options(request_type, **options):
+        if request_type == 'get':
+            return Util._convert_options_for_get_request(**options)
+        elif request_type == 'post':
+            return Util._convert_options_for_post_request(**options)
+        else:
+            raise Exception('Can only convert options for get or post 
requests')
+
+    @staticmethod
+    def _convert_options_for_get_request(**options):
         new_options = dict()
         if 'params' in options.keys():
             for key, value in options['params'].items():
@@ -86,6 +95,28 @@
         return {'params': new_options}
 
     @staticmethod
+    def _convert_options_for_post_request(**options):
+        new_options = dict()
+        if 'params' in options.keys():
+            for key, value in options['params'].items():
+                if isinstance(value, dict) and value != {}:
+                    new_value = dict()
+                    is_dict = True
+                    old_key = key
+                    for k, v in value.items():
+                        key = key + '.' + k
+                        new_value[key] = v
+                        key = old_key
+                else:
+                    is_dict = False
+
+                if is_dict:
+                    new_options.update(new_value)
+                else:
+                    new_options[key] = value
+        return {'json': new_options}
+
+    @staticmethod
     def convert_to_columns_list(meta, type):
         columns = []
         for key in meta:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/quandl/utils/request_type_util.py 
new/Quandl-3.4.5/quandl/utils/request_type_util.py
--- old/Quandl-3.4.4/quandl/utils/request_type_util.py  1970-01-01 
01:00:00.000000000 +0100
+++ new/Quandl-3.4.5/quandl/utils/request_type_util.py  2018-11-27 
15:11:55.000000000 +0100
@@ -0,0 +1,24 @@
+try:
+    from urllib import urlencode
+except ImportError:
+    from urllib.parse import urlencode
+
+from quandl.api_config import ApiConfig
+
+
+class RequestType(object):
+    """ Determines whether a request should be made using a GET or a POST 
request.
+    Default limit of 8000 is set here as it appears to be the maximum for many
+    webservers.
+    """
+    MAX_URL_LENGTH_FOR_GET = 8000
+    USE_GET_REQUEST = True  # This is used to simplify testing code
+
+    @classmethod
+    def get_request_type(cls, url, **params):
+        query_string = urlencode(params['params'])
+        request_url = '%s/%s/%s' % (ApiConfig.api_base, url, query_string)
+        if RequestType.USE_GET_REQUEST and (len(request_url) < 
cls.MAX_URL_LENGTH_FOR_GET):
+            return 'get'
+        else:
+            return 'post'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/quandl/version.py 
new/Quandl-3.4.5/quandl/version.py
--- old/Quandl-3.4.4/quandl/version.py  2018-10-24 21:24:58.000000000 +0200
+++ new/Quandl-3.4.5/quandl/version.py  2018-11-27 15:25:29.000000000 +0100
@@ -1 +1 @@
-VERSION = '3.4.4'
+VERSION = '3.4.5'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/setup.cfg new/Quandl-3.4.5/setup.cfg
--- old/Quandl-3.4.4/setup.cfg  2018-10-24 21:27:57.000000000 +0200
+++ new/Quandl-3.4.5/setup.cfg  2018-11-27 15:25:55.000000000 +0100
@@ -3,7 +3,7 @@
 
 [flake8]
 max-line-length = 100
-exclude = 
.git,__init__.py,tmp,__pycache__,.eggs,Quandl.egg-info,build,dist,.tox
+exclude = 
.git,__init__.py,tmp,__pycache__,.eggs,Quandl.egg-info,build,dist,.tox,venv
 
 [egg_info]
 tag_build = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/setup.py new/Quandl-3.4.5/setup.py
--- old/Quandl-3.4.4/setup.py   2018-10-12 17:12:24.000000000 +0200
+++ new/Quandl-3.4.5/setup.py   2018-11-27 15:11:55.000000000 +0100
@@ -61,7 +61,8 @@
         'httpretty',
         'mock',
         'factory_boy',
-        'jsondate'
+        'jsondate',
+        'parameterized'
     ],
     test_suite="nose.collector",
     packages=packages
Binary files old/Quandl-3.4.4/test/__pycache__/__init__.cpython-37.pyc and 
new/Quandl-3.4.5/test/__pycache__/__init__.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/__pycache__/test_connection.cpython-37.pyc 
and new/Quandl-3.4.5/test/__pycache__/test_connection.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/__pycache__/test_data.cpython-37.pyc and 
new/Quandl-3.4.5/test/__pycache__/test_data.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/__pycache__/test_database.cpython-37.pyc and 
new/Quandl-3.4.5/test/__pycache__/test_database.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/__pycache__/test_dataset.cpython-37.pyc and 
new/Quandl-3.4.5/test/__pycache__/test_dataset.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/__pycache__/test_datatable.cpython-37.pyc 
and new/Quandl-3.4.5/test/__pycache__/test_datatable.cpython-37.pyc differ
Binary files 
old/Quandl-3.4.4/test/__pycache__/test_datatable_data.cpython-37.pyc and 
new/Quandl-3.4.5/test/__pycache__/test_datatable_data.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/__pycache__/test_get.cpython-37.pyc and 
new/Quandl-3.4.5/test/__pycache__/test_get.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/__pycache__/test_get_table.cpython-37.pyc 
and new/Quandl-3.4.5/test/__pycache__/test_get_table.cpython-37.pyc differ
Binary files 
old/Quandl-3.4.4/test/__pycache__/test_merged_dataset.cpython-37.pyc and 
new/Quandl-3.4.5/test/__pycache__/test_merged_dataset.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/__pycache__/test_model.cpython-37.pyc and 
new/Quandl-3.4.5/test/__pycache__/test_model.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/__pycache__/test_retries.cpython-37.pyc and 
new/Quandl-3.4.5/test/__pycache__/test_retries.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/__pycache__/test_util.cpython-37.pyc and 
new/Quandl-3.4.5/test/__pycache__/test_util.cpython-37.pyc differ
Binary files 
old/Quandl-3.4.4/test/factories/__pycache__/__init__.cpython-37.pyc and 
new/Quandl-3.4.5/test/factories/__pycache__/__init__.cpython-37.pyc differ
Binary files 
old/Quandl-3.4.4/test/factories/__pycache__/database.cpython-37.pyc and 
new/Quandl-3.4.5/test/factories/__pycache__/database.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/factories/__pycache__/dataset.cpython-37.pyc 
and new/Quandl-3.4.5/test/factories/__pycache__/dataset.cpython-37.pyc differ
Binary files 
old/Quandl-3.4.4/test/factories/__pycache__/dataset_data.cpython-37.pyc and 
new/Quandl-3.4.5/test/factories/__pycache__/dataset_data.cpython-37.pyc differ
Binary files 
old/Quandl-3.4.4/test/factories/__pycache__/datatable.cpython-37.pyc and 
new/Quandl-3.4.5/test/factories/__pycache__/datatable.cpython-37.pyc differ
Binary files 
old/Quandl-3.4.4/test/factories/__pycache__/datatable_data.cpython-37.pyc and 
new/Quandl-3.4.5/test/factories/__pycache__/datatable_data.cpython-37.pyc differ
Binary files 
old/Quandl-3.4.4/test/factories/__pycache__/datatable_meta.cpython-37.pyc and 
new/Quandl-3.4.5/test/factories/__pycache__/datatable_meta.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/factories/__pycache__/meta.cpython-37.pyc 
and new/Quandl-3.4.5/test/factories/__pycache__/meta.cpython-37.pyc differ
Binary files old/Quandl-3.4.4/test/helpers/__pycache__/__init__.cpython-37.pyc 
and new/Quandl-3.4.5/test/helpers/__pycache__/__init__.cpython-37.pyc differ
Binary files 
old/Quandl-3.4.4/test/helpers/__pycache__/httpretty_extension.cpython-37.pyc 
and 
new/Quandl-3.4.5/test/helpers/__pycache__/httpretty_extension.cpython-37.pyc 
differ
Binary files 
old/Quandl-3.4.4/test/helpers/__pycache__/merged_datasets_helper.cpython-37.pyc 
and 
new/Quandl-3.4.5/test/helpers/__pycache__/merged_datasets_helper.cpython-37.pyc 
differ
Binary files 
old/Quandl-3.4.4/test/helpers/__pycache__/my_httpretty.cpython-37.pyc and 
new/Quandl-3.4.5/test/helpers/__pycache__/my_httpretty.cpython-37.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/test/helpers/random_data_helper.py 
new/Quandl-3.4.5/test/helpers/random_data_helper.py
--- old/Quandl-3.4.4/test/helpers/random_data_helper.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/Quandl-3.4.5/test/helpers/random_data_helper.py 2018-11-27 
15:11:55.000000000 +0100
@@ -0,0 +1,13 @@
+import random
+import string
+
+
+def generate_random_string(n=10):
+    return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ 
in range(n))
+
+
+def generate_random_dictionary(n):
+    random_dictionary = dict()
+    for _ in range(n):
+        random_dictionary[generate_random_string()] = generate_random_string()
+    return random_dictionary
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/test/test_connection.py 
new/Quandl-3.4.5/test/test_connection.py
--- old/Quandl-3.4.4/test/test_connection.py    2018-10-24 21:24:58.000000000 
+0200
+++ new/Quandl-3.4.5/test/test_connection.py    2018-11-27 15:11:55.000000000 
+0100
@@ -9,12 +9,19 @@
 import json
 from mock import patch, call
 from quandl.version import VERSION
+from parameterized import parameterized
 
 
 class ConnectionTest(ModifyRetrySettingsTestCase):
 
-    @httpretty.activate
-    def test_quandl_exceptions_no_retries(self):
+    def setUp(self):
+        httpretty.enable()
+
+    def tearDown(self):
+        httpretty.disable()
+
+    @parameterized.expand(['GET', 'POST'])
+    def test_quandl_exceptions_no_retries(self, request_method):
         ApiConfig.use_retries = False
         quandl_errors = [('QELx04', 429, LimitExceededError),
                          ('QEMx01', 500, InternalServerError),
@@ -25,7 +32,7 @@
                          ('QEXx01', 503, ServiceUnavailableError),
                          ('QEZx02', 400, QuandlError)]
 
-        httpretty.register_uri(httpretty.GET,
+        httpretty.register_uri(getattr(httpretty, request_method),
                                "https://www.quandl.com/api/v3/databases";,
                                responses=[httpretty.Response(body=json.dumps(
                                    {'quandl_error':
@@ -35,37 +42,37 @@
 
         for expected_error in quandl_errors:
             self.assertRaises(
-                expected_error[2], lambda: Connection.request('get', 
'databases'))
+                expected_error[2], lambda: Connection.request(request_method, 
'databases'))
 
-    @httpretty.activate
-    def test_parse_error(self):
+    @parameterized.expand(['GET', 'POST'])
+    def test_parse_error(self, request_method):
         ApiConfig.retry_backoff_factor = 0
-        httpretty.register_uri(httpretty.GET,
+        httpretty.register_uri(getattr(httpretty, request_method),
                                "https://www.quandl.com/api/v3/databases";,
                                body="not json", status=500)
         self.assertRaises(
-            QuandlError, lambda: Connection.request('get', 'databases'))
+            QuandlError, lambda: Connection.request(request_method, 
'databases'))
 
-    @httpretty.activate
-    def test_non_quandl_error(self):
+    @parameterized.expand(['GET', 'POST'])
+    def test_non_quandl_error(self, request_method):
         ApiConfig.retry_backoff_factor = 0
-        httpretty.register_uri(httpretty.GET,
+        httpretty.register_uri(getattr(httpretty, request_method),
                                "https://www.quandl.com/api/v3/databases";,
                                body=json.dumps(
                                 {'foobar':
                                  {'code': 'blah', 'message': 'something went 
wrong'}}), status=500)
         self.assertRaises(
-            QuandlError, lambda: Connection.request('get', 'databases'))
+            QuandlError, lambda: Connection.request(request_method, 
'databases'))
 
-    @httpretty.activate
+    @parameterized.expand(['GET', 'POST'])
     @patch('quandl.connection.Connection.execute_request')
-    def test_build_request(self, mock):
+    def test_build_request(self, request_method, mock):
         ApiConfig.api_key = 'api_token'
         ApiConfig.api_version = '2015-04-09'
         params = {'per_page': 10, 'page': 2}
         headers = {'x-custom-header': 'header value'}
-        Connection.request('get', 'databases', headers=headers, params=params)
-        expected = call('get', 'https://www.quandl.com/api/v3/databases',
+        Connection.request(request_method, 'databases', headers=headers, 
params=params)
+        expected = call(request_method, 
'https://www.quandl.com/api/v3/databases',
                         headers={'x-custom-header': 'header value',
                                  'x-api-token': 'api_token',
                                  'accept': ('application/json, '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/test/test_datatable.py 
new/Quandl-3.4.5/test/test_datatable.py
--- old/Quandl-3.4.4/test/test_datatable.py     2018-10-24 21:24:58.000000000 
+0200
+++ new/Quandl-3.4.5/test/test_datatable.py     2018-11-27 15:11:55.000000000 
+0100
@@ -13,7 +13,9 @@
 from test.factories.datatable import DatatableFactory
 from test.test_retries import ModifyRetrySettingsTestCase
 from quandl.api_config import ApiConfig
+from quandl.utils.request_type_util import RequestType
 from quandl.errors.quandl_error import (InternalServerError, QuandlError)
+from parameterized import parameterized
 
 
 class GetDatatableDatasetTest(ModifyRetrySettingsTestCase):
@@ -34,18 +36,69 @@
         httpretty.disable()
         httpretty.reset()
 
+    def tearDown(self):
+        RequestType.USE_GET_REQUEST = True
+
     @patch('quandl.connection.Connection.request')
-    def test_datatable_meatadata_calls_connection(self, mock):
+    def test_datatable_metadata_calls_connection(self, mock):
         Datatable('ZACKS/FC').data_fields()
         expected = call('get', 'datatables/ZACKS/FC/metadata', params={})
         self.assertEqual(mock.call_args, expected)
 
     @patch('quandl.connection.Connection.request')
-    def test_datatable_data_calls_connection(self, mock):
+    def 
test_datatable_data_calls_connection_with_no_params_for_get_request(self, mock):
         Datatable('ZACKS/FC').data()
         expected = call('get', 'datatables/ZACKS/FC', params={})
         self.assertEqual(mock.call_args, expected)
 
+    @patch('quandl.connection.Connection.request')
+    def 
test_datatable_data_calls_connection_with_no_params_for_post_request(self, 
mock):
+        RequestType.USE_GET_REQUEST = False
+        Datatable('ZACKS/FC').data()
+        expected = call('post', 'datatables/ZACKS/FC', json={})
+        self.assertEqual(mock.call_args, expected)
+
+    @patch('quandl.connection.Connection.request')
+    def test_datatable_calls_connection_with_params_for_get_request(self, 
mock):
+        params = {'ticker': ['AAPL', 'MSFT'],
+                  'per_end_date': {'gte': '2015-01-01'},
+                  'qopts': {'columns': ['ticker', 'per_end_date']},
+                  'foo': 'bar',
+                  'baz': 4
+                  }
+
+        expected_params = {'ticker[]': ['AAPL', 'MSFT'],
+                           'per_end_date.gte': '2015-01-01',
+                           'qopts.columns[]': ['ticker', 'per_end_date'],
+                           'foo': 'bar',
+                           'baz': 4
+                           }
+
+        Datatable('ZACKS/FC').data(params=params)
+        expected = call('get', 'datatables/ZACKS/FC', params=expected_params)
+        self.assertEqual(mock.call_args, expected)
+
+    @patch('quandl.connection.Connection.request')
+    def test_datatable_calls_connection_with_params_for_post_request(self, 
mock):
+        RequestType.USE_GET_REQUEST = False
+        params = {'ticker': ['AAPL', 'MSFT'],
+                  'per_end_date': {'gte': '2015-01-01'},
+                  'qopts': {'columns': ['ticker', 'per_end_date']},
+                  'foo': 'bar',
+                  'baz': 4
+                  }
+
+        expected_params = {'ticker': ['AAPL', 'MSFT'],
+                           'per_end_date.gte': '2015-01-01',
+                           'qopts.columns': ['ticker', 'per_end_date'],
+                           'foo': 'bar',
+                           'baz': 4
+                           }
+
+        Datatable('ZACKS/FC').data(params=params)
+        expected = call('post', 'datatables/ZACKS/FC', json=expected_params)
+        self.assertEqual(mock.call_args, expected)
+
     def test_datatable_returns_datatable_object(self):
         datatable = Datatable('ZACKS/FC')
         self.assertIsInstance(datatable, Datatable)
@@ -69,6 +122,11 @@
                                re.compile(
                                    
'https://www.quandl.com/api/v3/datatables/*'),
                                body=json.dumps(datatable))
+
+        httpretty.register_uri(httpretty.POST,
+                               re.compile(
+                                   
'https://www.quandl.com/api/v3/datatables/*'),
+                               body=json.dumps(datatable))
         cls.datatable_instance = Datatable(datatable['datatable'])
 
     @classmethod
@@ -84,15 +142,19 @@
         ApiConfig.api_key = 'api_token'
         ApiConfig.api_version = '2015-04-09'
 
+    def tearDown(self):
+        RequestType.USE_GET_REQUEST = True
+
     def test_download_get_file_info(self):
         url = self.datatable._download_request_path()
         parsed_url = urlparse(url)
         self.assertEqual(parsed_url.path, 'datatables/AUSBS/D.json')
 
-    def test_download_generated_file(self):
+    @parameterized.expand(['GET', 'POST'])
+    def test_download_generated_file(self, request_method):
         m = mock_open()
 
-        httpretty.register_uri(httpretty.GET,
+        httpretty.register_uri(getattr(httpretty, request_method),
                                re.compile(
                                    
'https://www.quandl.com/api/v3/datatables/*'),
                                body=json.dumps({
@@ -106,15 +168,21 @@
                                status=200)
 
         with patch('quandl.model.datatable.urlopen', m, create=True):
-            self.datatable.download_file('.')
+            self.datatable.download_file('.', params={})
 
         self.assertEqual(m.call_count, 1)
 
-    def test_bulk_download_raises_exception_when_no_path(self):
-            self.assertRaises(
-                QuandlError, lambda: self.datatable.download_file(None))
+    @parameterized.expand(['GET', 'POST'])
+    def test_bulk_download_raises_exception_when_no_path(self, request_method):
+        if request_method == 'POST':
+            RequestType.USE_GET_REQUEST = False
+        self.assertRaises(
+            QuandlError, lambda: self.datatable.download_file(None, params={}))
 
-    def test_bulk_download_table_raises_exception_when_error_response(self):
+    @parameterized.expand(['GET', 'POST'])
+    def test_bulk_download_table_raises_exception_when_error_response(self, 
request_method):
+        if request_method == 'POST':
+            RequestType.USE_GET_REQUEST = False
         httpretty.reset()
         ApiConfig.number_of_retries = 2
         error_responses = [httpretty.Response(
@@ -122,10 +190,10 @@
                                               'message': 'something went 
wrong'}}),
             status=500)]
 
-        httpretty.register_uri(httpretty.GET,
+        httpretty.register_uri(getattr(httpretty, request_method),
                                re.compile(
                                    
'https://www.quandl.com/api/v3/datatables/*'),
                                responses=error_responses)
 
         self.assertRaises(
-            InternalServerError, lambda: self.datatable.download_file('.'))
+            InternalServerError, lambda: self.datatable.download_file('.', 
params={}))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/test/test_datatable_data.py 
new/Quandl-3.4.5/test/test_datatable_data.py
--- old/Quandl-3.4.4/test/test_datatable_data.py        2018-10-19 
21:55:16.000000000 +0200
+++ new/Quandl-3.4.5/test/test_datatable_data.py        2018-11-27 
15:11:55.000000000 +0100
@@ -7,9 +7,11 @@
 import six
 from quandl.model.data import Data
 from quandl.model.datatable import Datatable
+from quandl.utils.request_type_util import RequestType
 from mock import patch, call
 from test.factories.datatable_data import DatatableDataFactory
 from test.factories.datatable_meta import DatatableMetaFactory
+from parameterized import parameterized
 
 
 class DatatableDataTest(unittest.TestCase):
@@ -64,6 +66,11 @@
                                re.compile(
                                    
'https://www.quandl.com/api/v3/datatables/*'),
                                body=json.dumps(datatable_data))
+
+        httpretty.register_uri(httpretty.POST,
+                               re.compile(
+                                   
'https://www.quandl.com/api/v3/datatables/*'),
+                               body=json.dumps(datatable_data))
         cls.expected_raw_data = []
         cls.expected_list_values = []
 
@@ -72,41 +79,67 @@
         httpretty.disable()
         httpretty.reset()
 
+    def tearDown(self):
+        RequestType.USE_GET_REQUEST = True
+
     @patch('quandl.connection.Connection.request')
-    def test_data_calls_connection(self, mock):
+    def test_data_calls_connection_get(self, mock):
         datatable = Datatable('ZACKS/FC')
         Data.page(datatable, params={'ticker': ['AAPL', 'MSFT'],
-                                     'per_end_date': {'gte': {'2015-01-01'}},
+                                     'per_end_date': {'gte': '2015-01-01'},
                                      'qopts': {'columns': ['ticker', 
'per_end_date']}})
-        expected = call('get', 'datatables/ZACKS/FC', params={'ticker': 
['AAPL', 'MSFT'],
-                                                              'per_end_date':
-                                                              {'gte': 
{'2015-01-01'}},
-                                                              'qopts': 
{'columns':
-                                                                        
['ticker',
-                                                                         
'per_end_date']}})
+        expected = call('get', 'datatables/ZACKS/FC',
+                        params={'ticker[]': ['AAPL', 'MSFT'],
+                                'per_end_date.gte': '2015-01-01',
+                                'qopts.columns[]': ['ticker', 'per_end_date']})
         self.assertEqual(mock.call_args, expected)
 
-    def test_values_and_meta_exist(self):
+    @patch('quandl.connection.Connection.request')
+    def test_data_calls_connection_post(self, mock):
+        RequestType.USE_GET_REQUEST = False
+        datatable = Datatable('ZACKS/FC')
+        Data.page(datatable, params={'ticker': ['AAPL', 'MSFT'],
+                                     'per_end_date': {'gte': '2015-01-01'},
+                                     'qopts': {'columns': ['ticker', 
'per_end_date']}})
+        expected = call('post', 'datatables/ZACKS/FC',
+                        json={'ticker': ['AAPL', 'MSFT'],
+                                'per_end_date.gte': '2015-01-01',
+                                'qopts.columns': ['ticker', 'per_end_date']})
+        self.assertEqual(mock.call_args, expected)
+
+    @parameterized.expand(['GET', 'POST'])
+    def test_values_and_meta_exist(self, request_method):
+        if request_method == 'POST':
+            RequestType.USE_GET_REQUEST = False
         datatable = Datatable('ZACKS/FC')
         results = Data.page(datatable, params={})
         self.assertIsNotNone(results.values)
         self.assertIsNotNone(results.meta)
 
-    def test_to_pandas_returns_pandas_dataframe_object(self):
+    @parameterized.expand(['GET', 'POST'])
+    def test_to_pandas_returns_pandas_dataframe_object(self, request_method):
+        if request_method == 'POST':
+            RequestType.USE_GET_REQUEST = False
         datatable = Datatable('ZACKS/FC')
         results = Data.page(datatable, params={})
         df = results.to_pandas()
         self.assertIsInstance(df, pandas.core.frame.DataFrame)
 
     # no index is set for datatable.to_pandas
-    def test_pandas_dataframe_index_is_none(self):
+    @parameterized.expand(['GET', 'POST'])
+    def test_pandas_dataframe_index_is_none(self, request_method):
+        if request_method == 'POST':
+            RequestType.USE_GET_REQUEST = False
         datatable = Datatable('ZACKS/FC')
         results = Data.page(datatable, params={})
         df = results.to_pandas()
         self.assertEqual(df.index.name, 'None')
 
     # if datatable has Date field then it should be convert to pandas datetime
-    def test_pandas_dataframe_date_field_is_datetime(self):
+    @parameterized.expand(['GET', 'POST'])
+    def test_pandas_dataframe_date_field_is_datetime(self, request_method):
+        if request_method == 'POST':
+            RequestType.USE_GET_REQUEST = False
         datatable = Datatable('ZACKS/FC')
         results = Data.page(datatable, params={})
         df = results.to_pandas()
@@ -115,13 +148,19 @@
         self.assertIsInstance(df['per_end_date'][2], pandas.datetime)
         self.assertIsInstance(df['per_end_date'][3], pandas.datetime)
 
-    def test_to_numpy_returns_numpy_object(self):
+    @parameterized.expand(['GET', 'POST'])
+    def test_to_numpy_returns_numpy_object(self, request_method):
+        if request_method == 'POST':
+            RequestType.USE_GET_REQUEST = False
         datatable = Datatable('ZACKS/FC')
         results = Data.page(datatable, params={})
         data = results.to_numpy()
         self.assertIsInstance(data, numpy.core.records.recarray)
 
-    def test_to_csv_returns_expected_csv(self):
+    @parameterized.expand(['GET', 'POST'])
+    def test_to_csv_returns_expected_csv(self, request_method):
+        if request_method == 'POST':
+            RequestType.USE_GET_REQUEST = False
         datatable = Datatable('ZACKS/FC')
         results = Data.page(datatable, params={})
         data = results.to_csv()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/test/test_get_table.py 
new/Quandl-3.4.5/test/test_get_table.py
--- old/Quandl-3.4.4/test/test_get_table.py     2018-10-19 21:55:16.000000000 
+0200
+++ new/Quandl-3.4.5/test/test_get_table.py     2018-11-27 15:11:55.000000000 
+0100
@@ -4,11 +4,12 @@
 import json
 from quandl.model.datatable import Datatable
 import pandas
-from mock import patch
+from mock import patch, call
 from test.factories.datatable import DatatableFactory
 from test.factories.datatable_data import DatatableDataFactory
 from test.factories.datatable_meta import DatatableMetaFactory
 import quandl
+from quandl.utils.request_type_util import RequestType
 
 
 class GetDataTableTest(unittest.TestCase):
@@ -33,6 +34,9 @@
         httpretty.disable()
         httpretty.reset()
 
+    def tearDown(self):
+        RequestType.USE_GET_REQUEST = True
+
     @patch('quandl.connection.Connection.request')
     def test_datatable_returns_datatable_object(self, mock):
         df = quandl.get_table('ZACKS/FC', params={})
@@ -42,3 +46,58 @@
     def test_datatable_with_code_returns_datatable_object(self, mock):
         df = quandl.get_table('AR/MWCF', code="ICEP_WAC_Z2017_S")
         self.assertIsInstance(df, pandas.core.frame.DataFrame)
+
+    @patch('quandl.connection.Connection.request')
+    def test_get_table_calls_connection_with_no_params_for_get_request(self, 
mock):
+        quandl.get_table('ZACKS/FC')
+        expected = call('get', 'datatables/ZACKS/FC', params={})
+        self.assertEqual(mock.call_args, expected)
+
+    @patch('quandl.connection.Connection.request')
+    def test_get_table_calls_connection_with_no_params_for_post_request(self, 
mock):
+        RequestType.USE_GET_REQUEST = False
+
+        quandl.get_table('ZACKS/FC')
+        expected = call('post', 'datatables/ZACKS/FC', json={})
+        self.assertEqual(mock.call_args, expected)
+
+    @patch('quandl.connection.Connection.request')
+    def test_get_table_calls_connection_with_params_for_get_request(self, 
mock):
+        params = {'ticker': ['AAPL', 'MSFT'],
+                  'per_end_date': {'gte': '2015-01-01'},
+                  'qopts': {'columns': ['ticker', 'per_end_date']},
+                  'foo': 'bar',
+                  'baz': 4
+                  }
+
+        expected_params = {'ticker[]': ['AAPL', 'MSFT'],
+                           'per_end_date.gte': '2015-01-01',
+                           'qopts.columns[]': ['ticker', 'per_end_date'],
+                           'foo': 'bar',
+                           'baz': 4
+                           }
+
+        quandl.get_table('ZACKS/FC', **params)
+        expected = call('get', 'datatables/ZACKS/FC', params=expected_params)
+        self.assertEqual(mock.call_args, expected)
+
+    @patch('quandl.connection.Connection.request')
+    def test_get_table_calls_connection_with_params_for_post_request(self, 
mock):
+        RequestType.USE_GET_REQUEST = False
+        params = {'ticker': ['AAPL', 'MSFT'],
+                  'per_end_date': {'gte': '2015-01-01'},
+                  'qopts': {'columns': ['ticker', 'per_end_date']},
+                  'foo': 'bar',
+                  'baz': 4
+                  }
+
+        expected_params = {'ticker': ['AAPL', 'MSFT'],
+                           'per_end_date.gte': '2015-01-01',
+                           'qopts.columns': ['ticker', 'per_end_date'],
+                           'foo': 'bar',
+                           'baz': 4
+                           }
+
+        quandl.get_table('ZACKS/FC', **params)
+        expected = call('post', 'datatables/ZACKS/FC', json=expected_params)
+        self.assertEqual(mock.call_args, expected)
Binary files 
old/Quandl-3.4.4/test/test_operations/__pycache__/__init__.cpython-37.pyc and 
new/Quandl-3.4.5/test/test_operations/__pycache__/__init__.cpython-37.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/test/test_request_type_util.py 
new/Quandl-3.4.5/test/test_request_type_util.py
--- old/Quandl-3.4.4/test/test_request_type_util.py     1970-01-01 
01:00:00.000000000 +0100
+++ new/Quandl-3.4.5/test/test_request_type_util.py     2018-11-27 
15:11:55.000000000 +0100
@@ -0,0 +1,27 @@
+import unittest
+from quandl.utils.request_type_util import RequestType
+from test.helpers.random_data_helper import generate_random_dictionary
+
+
+class RequestTypeUtilTest(unittest.TestCase):
+
+    def setUp(self):
+        self.test_url = '/datables/WIKI/PRICES.json'
+        RequestType.MAX_URL_LENGTH_FOR_GET = 200
+
+    def tearDown(self):
+        RequestType.MAX_URL_LENGTH_FOR_GET = 8000
+
+    def test_no_params(self):
+        request_type = RequestType.get_request_type(self.test_url, params={})
+        self.assertEqual(request_type, 'get')
+
+    def test_small_params(self):
+        params = {'foo': 'bar', 'qopts': {'columns': 'date'}}
+        request_type = RequestType.get_request_type(self.test_url, 
params=params)
+        self.assertEqual(request_type, 'get')
+
+    def test_long_params(self):
+        params = generate_random_dictionary(20)
+        request_type = RequestType.get_request_type(self.test_url, 
params=params)
+        self.assertEqual(request_type, 'post')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/test/test_retries.py 
new/Quandl-3.4.5/test/test_retries.py
--- old/Quandl-3.4.4/test/test_retries.py       2018-10-24 21:24:58.000000000 
+0200
+++ new/Quandl-3.4.5/test/test_retries.py       2018-11-27 15:11:55.000000000 
+0100
@@ -76,7 +76,7 @@
         retries = 
Connection.get_session().get_adapter(ApiConfig.api_protocol).max_retries
         self.assertEqual(retries.BACKOFF_MAX, 
ApiConfig.max_wait_between_retries)
 
-    @httpretty.activate
+    @httpretty.enabled
     def test_correct_response_returned_if_retries_succeed(self):
         ApiConfig.number_of_retries = 3
         ApiConfig.retry_status_codes = [self.error_response.status]
@@ -90,7 +90,7 @@
         self.assertEqual(response.json(), self.datatable)
         self.assertEqual(response.status_code, self.success_response.status)
 
-    @httpretty.activate
+    @httpretty.enabled
     def test_correct_response_exception_raised_if_retries_fail(self):
         ApiConfig.number_of_retries = 2
         ApiConfig.retry_status_codes = [self.error_response.status]
@@ -101,7 +101,7 @@
 
         self.assertRaises(InternalServerError, Connection.request, 'get', 
'databases')
 
-    @httpretty.activate
+    @httpretty.enabled
     def 
test_correct_response_exception_raised_for_errors_not_in_retry_status_codes(self):
         ApiConfig.retry_status_codes = []
         mock_responses = [self.error_response]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Quandl-3.4.4/test/test_util.py 
new/Quandl-3.4.5/test/test_util.py
--- old/Quandl-3.4.4/test/test_util.py  2018-10-19 21:55:16.000000000 +0200
+++ new/Quandl-3.4.5/test/test_util.py  2018-11-27 15:11:55.000000000 +0100
@@ -47,22 +47,100 @@
         self.assertEqual(result, '/hello/bar/world/1')
         self.assertDictEqual(params, {'another': 'a'})
 
-    def test_convert_options(self):
-        options = {'params': {'ticker': ['AAPL', 'MSFT'],
-                              'per_end_date': {'gte': {'2015-01-01'}},
+    def test_convert_options_get_request_with_empty_params(self):
+        options = {'params': {}}
+        expected_result = options
+
+        result = Util.convert_options(request_type='get', **options)
+        self.assertEqual(cmp(result, expected_result), 0)
+
+    def test_convert_options_get_request_with_simple_params(self):
+        options = {'params': {'foo': 'bar'}}
+        expected_result = options
+
+        result = Util.convert_options(request_type='get', **options)
+        self.assertEqual(cmp(result, expected_result), 0)
+
+    def test_convert_options_get_request_with_array_params(self):
+        options = {'params': {'foo': ['bar', 'baz']}}
+        expected_result = {'params': {'foo[]': ['bar', 'baz']}}
+
+        result = Util.convert_options(request_type='get', **options)
+        self.assertEqual(cmp(result, expected_result), 0)
+
+    def test_convert_options_get_request_with_dictionary_params(self):
+        options = {'params': {'foo': {'bar': 'baz'}}}
+        expected_result = {'params': {'foo.bar': 'baz'}}
+
+        result = Util.convert_options(request_type='get', **options)
+        self.assertEqual(cmp(result, expected_result), 0)
+
+    def 
test_convert_options_get_request_with_dictionary_params_and_array_values(self):
+        options = {'params': {'foo': {'bar': ['baz', 'bax']}}}
+        expected_result = {'params': {'foo.bar[]': ['baz', 'bax']}}
+
+        result = Util.convert_options(request_type='get', **options)
+        self.assertEqual(cmp(result, expected_result), 0)
+
+    def test_convert_options_get_request_all_param_types(self):
+        options = {'params': {'foo': 'bar',
+                              'ticker': ['AAPL', 'MSFT'],
+                              'per_end_date': {'gte': '2015-01-01'},
+                              'qopts': {'columns': ['ticker', 'per_end_date'],
+                                        'per_page': 5}}}
+        expected_result = {'params': {'foo': 'bar',
+                                      'qopts.per_page': 5,
+                                      'per_end_date.gte': '2015-01-01',
+                                      'ticker[]': ['AAPL', 'MSFT'],
+                                      'qopts.columns[]': ['ticker', 
'per_end_date']}}
+        result = Util.convert_options(request_type='get', **options)
+        self.assertEqual(cmp(result, expected_result), 0)
+
+    def test_convert_options_post_request_with_empty_params(self):
+        options = {'params': {}}
+        expected_result = {'json': {}}
+
+        result = Util.convert_options(request_type='post', **options)
+        self.assertEqual(cmp(result, expected_result), 0)
+
+    def test_convert_options_post_request_with_simple_params(self):
+        options = {'params': {'foo': 'bar'}}
+        expected_result = {'json': options['params']}
+
+        result = Util.convert_options(request_type='post', **options)
+        self.assertEqual(cmp(result, expected_result), 0)
+
+    def test_convert_options_post_request_with_array_params(self):
+        options = {'params': {'foo': ['bar', 'baz']}}
+        expected_result = {'json': options['params']}
+
+        result = Util.convert_options(request_type='post', **options)
+        self.assertEqual(cmp(result, expected_result), 0)
+
+    def test_convert_options_post_request_with_dictionary_params(self):
+        options = {'params': {'foo': {'bar': 'baz'}}}
+        expected_result = {'json': {'foo.bar': 'baz'}}
+
+        result = Util.convert_options(request_type='post', **options)
+        self.assertEqual(cmp(result, expected_result), 0)
+
+    def 
test_convert_options_post_request_with_dictionary_params_and_array_values(self):
+        options = {'params': {'foo': {'bar': ['baz', 'bax']}}}
+        expected_result = {'json': {'foo.bar': ['baz', 'bax']}}
+
+        result = Util.convert_options(request_type='post', **options)
+        self.assertEqual(cmp(result, expected_result), 0)
+
+    def test_convert_options_post_request_all_param_types(self):
+        options = {'params': {'foo': 'bar',
+                              'ticker': ['AAPL', 'MSFT'],
+                              'per_end_date': {'gte': '2015-01-01'},
                               'qopts': {'columns': ['ticker', 'per_end_date'],
                                         'per_page': 5}}}
-        expect_result = {'params': {'qopts.per_page': 5,
-                                    'per_end_date.gte': set(['2015-01-01']),
-                                    'ticker[]': ['AAPL', 'MSFT'],
-                                    'qopts.columns[]': ['ticker', 
'per_end_date']}}
-        result = Util.convert_options(**options)
-        self.assertEqual(cmp(result, expect_result), 0)
-
-        options = {'params': {'ticker': 'AAPL', 'per_end_date': {'gte': 
{'2015-01-01'}},
-                              'qopts': {'columns': ['ticker', 
'per_end_date']}}}
-        expect_result = {'params': {'per_end_date.gte': set(['2015-01-01']),
-                                    'ticker': 'AAPL',
-                                    'qopts.columns[]': ['ticker', 
'per_end_date']}}
-        result = Util.convert_options(**options)
-        self.assertEqual(cmp(result, expect_result), 0)
+        expected_result = {'json': {'foo': 'bar',
+                                    'qopts.per_page': 5,
+                                    'per_end_date.gte': '2015-01-01',
+                                    'ticker': ['AAPL', 'MSFT'],
+                                    'qopts.columns': ['ticker', 
'per_end_date']}}
+        result = Util.convert_options(request_type='post', **options)
+        self.assertEqual(cmp(result, expected_result), 0)


Reply via email to