Skip to content

session-per-request to session-over-time #16

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
change module naming, fix test
  • Loading branch information
runawaycoast committed Apr 5, 2022
commit a715192f6d8ff58e7c15948061c33d34dcd55cad
4 changes: 2 additions & 2 deletions nasdaqdatalink/model/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import nasdaqdatalink.model.dataset
from nasdaqdatalink.api_config import ApiConfig
import nasdaqdatalink.connection as Connection
import nasdaqdatalink.connection as connection
from nasdaqdatalink.errors.data_link_error import DataLinkError
from nasdaqdatalink.message import Message
from nasdaqdatalink.operations.get import GetOperation
Expand Down Expand Up @@ -43,7 +43,7 @@ def bulk_download_to_file(self, file_or_folder_path, **options):
path_url = self._bulk_download_path()

options['stream'] = True
r = Connection.request('get', path_url, **options)
r = connection.request('get', path_url, **options)
file_path = file_or_folder_path
if os.path.isdir(file_or_folder_path):
file_path = file_or_folder_path + '/' + os.path.basename(urlparse(r.url).path)
Expand Down
4 changes: 2 additions & 2 deletions nasdaqdatalink/model/datatable.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from six.moves.urllib.request import urlopen

import nasdaqdatalink.connection as Connection
import nasdaqdatalink.connection as connection
from nasdaqdatalink.errors.data_link_error import DataLinkError
from nasdaqdatalink.message import Message
from nasdaqdatalink.operations.get import GetOperation
Expand Down Expand Up @@ -51,7 +51,7 @@ def _request_file_info(self, file_or_folder_path, **options):

updated_options = Util.convert_options(request_type=request_type, **options)

r = Connection.request(request_type, url, **updated_options)
r = connection.request(request_type, url, **updated_options)

response_data = r.json()

Expand Down
4 changes: 2 additions & 2 deletions nasdaqdatalink/operations/get.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from inflection import singularize

from .operation import Operation
import nasdaqdatalink.connection as Connection
import nasdaqdatalink.connection as connection
from nasdaqdatalink.util import Util


Expand All @@ -21,7 +21,7 @@ def __get_raw_data__(self):

path = Util.constructed_path(cls.get_path(), options['params'])

r = Connection.request('get', path, **options)
r = connection.request('get', path, **options)
response_data = r.json()
Util.convert_to_dates(response_data)
self._raw_data = response_data[singularize(cls.lookup_key())]
Expand Down
6 changes: 3 additions & 3 deletions nasdaqdatalink/operations/list.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from .operation import Operation
import nasdaqdatalink.connection as Connection
import nasdaqdatalink.connection as connection
from nasdaqdatalink.util import Util
from nasdaqdatalink.model.paginated_list import PaginatedList
from nasdaqdatalink.utils.request_type_util import RequestType
Expand All @@ -12,7 +12,7 @@ def all(cls, **options):
if 'params' not in options:
options['params'] = {}
path = Util.constructed_path(cls.list_path(), options['params'])
r = Connection.request('get', path, **options)
r = connection.request('get', path, **options)
response_data = r.json()
Util.convert_to_dates(response_data)
resource = cls.create_list_from_response(response_data)
Expand All @@ -27,7 +27,7 @@ def page(cls, datatable, **options):

updated_options = Util.convert_options(request_type=request_type, **options)

r = Connection.request(request_type, path, **updated_options)
r = connection.request(request_type, path, **updated_options)

response_data = r.json()
Util.convert_to_dates(response_data)
Expand Down
10 changes: 5 additions & 5 deletions test/test_connection.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import nasdaqdatalink.connection as Connection
import nasdaqdatalink.connection as connection
from nasdaqdatalink.api_config import ApiConfig
from nasdaqdatalink.errors.data_link_error import (
DataLinkError, LimitExceededError, InternalServerError,
Expand Down Expand Up @@ -42,7 +42,7 @@ def test_nasdaqdatalink_exceptions_no_retries(self, request_method):

for expected_error in data_link_errors:
self.assertRaises(
expected_error[2], lambda: Connection.request(request_method, 'databases'))
expected_error[2], lambda: connection.request(request_method, 'databases'))

@parameterized.expand(['GET', 'POST'])
def test_parse_error(self, request_method):
Expand All @@ -51,7 +51,7 @@ def test_parse_error(self, request_method):
"https://data.nasdaq.com/api/v3/databases",
body="not json", status=500)
self.assertRaises(
DataLinkError, lambda: Connection.request(request_method, 'databases'))
DataLinkError, lambda: connection.request(request_method, 'databases'))

@parameterized.expand(['GET', 'POST'])
def test_non_data_link_error(self, request_method):
Expand All @@ -62,7 +62,7 @@ def test_non_data_link_error(self, request_method):
{'foobar':
{'code': 'blah', 'message': 'something went wrong'}}), status=500)
self.assertRaises(
DataLinkError, lambda: Connection.request(request_method, 'databases'))
DataLinkError, lambda: connection.request(request_method, 'databases'))

@parameterized.expand(['GET', 'POST'])
@patch('nasdaqdatalink.connection.execute_request')
Expand All @@ -71,7 +71,7 @@ def test_build_request(self, request_method, mock):
ApiConfig.api_version = '2015-04-09'
params = {'per_page': 10, 'page': 2}
headers = {'x-custom-header': 'header value'}
Connection.request(request_method, 'databases', headers=headers, params=params)
connection.request(request_method, 'databases', headers=headers, params=params)
expected = call(request_method, 'https://data.nasdaq.com/api/v3/databases',
headers={'x-custom-header': 'header value',
'x-api-token': 'api_token',
Expand Down
4 changes: 2 additions & 2 deletions test/test_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from six.moves.urllib.parse import parse_qs, urlparse

from nasdaqdatalink.api_config import ApiConfig
import nasdaqdatalink.connection as Connection
import nasdaqdatalink.connection as connection
from nasdaqdatalink.errors.data_link_error import (InternalServerError, DataLinkError)
from nasdaqdatalink.model.database import Database
from test.factories.database import DatabaseFactory
Expand Down Expand Up @@ -148,7 +148,7 @@ def test_get_bulk_download_url_without_download_type(self):

def test_bulk_download_to_fileaccepts_download_type(self):
m = mock_open()
with patch.object(Connection, 'request') as mock_method:
with patch.object(connection, 'request') as mock_method:
mock_method.return_value.url = 'https://www.blah.com/download/db.zip'
with patch('nasdaqdatalink.model.database.open', m, create=True):
self.database.bulk_download_to_file(
Expand Down
4 changes: 2 additions & 2 deletions test/test_get.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from nasdaqdatalink.model.merged_dataset import MergedDataset
from nasdaqdatalink.get import get
from nasdaqdatalink.api_config import ApiConfig
import nasdaqdatalink.connection as Connection
import nasdaqdatalink.connection as connection


class GetSingleDatasetTest(unittest.TestCase):
Expand Down Expand Up @@ -36,7 +36,7 @@ def test_returns_numpys_when_requested(self):
self.assertIsInstance(result, numpy.core.records.recarray)

def test_setting_api_key_config(self):
mock_connection = Mock(wraps=Connection)
mock_connection = Mock(wraps=connection)
with patch('nasdaqdatalink.connection.execute_request',
new=mock_connection.execute_request) as mock:
ApiConfig.api_key = 'api_key_configured'
Expand Down
20 changes: 11 additions & 9 deletions test/test_retries.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import unittest
import json

import nasdaqdatalink.connection as Connection
import nasdaqdatalink.connection as connection
from nasdaqdatalink.api_config import ApiConfig
from test.factories.datatable import DatatableFactory
from test.helpers.httpretty_extension import httpretty
Expand All @@ -28,6 +28,8 @@ def tearDown(self):
class TestRetries(ModifyRetrySettingsTestCase):

def setUp(self):
# reset session to None before every test
connection.session = None
ApiConfig.use_retries = True
super(TestRetries, self).setUp()

Expand All @@ -47,13 +49,13 @@ def setUpClass(cls):
def test_modifying_use_retries(self):
ApiConfig.use_retries = False

retries = Connection.get_session().get_adapter(ApiConfig.api_protocol).max_retries
retries = connection.get_session().get_adapter(ApiConfig.api_protocol).max_retries
self.assertEqual(retries.total, 0)

def test_modifying_number_of_retries(self):
ApiConfig.number_of_retries = 3000

retries = Connection.get_session().get_adapter(ApiConfig.api_protocol).max_retries
retries = connection.get_session().get_adapter(ApiConfig.api_protocol).max_retries

self.assertEqual(retries.total, ApiConfig.number_of_retries)
self.assertEqual(retries.connect, ApiConfig.number_of_retries)
Expand All @@ -62,19 +64,19 @@ def test_modifying_number_of_retries(self):
def test_modifying_retry_backoff_factor(self):
ApiConfig.retry_backoff_factor = 3000

retries = Connection.get_session().get_adapter(ApiConfig.api_protocol).max_retries
retries = connection.get_session().get_adapter(ApiConfig.api_protocol).max_retries
self.assertEqual(retries.backoff_factor, ApiConfig.retry_backoff_factor)

def test_modifying_retry_status_codes(self):
ApiConfig.retry_status_codes = [1, 2, 3]

retries = Connection.get_session().get_adapter(ApiConfig.api_protocol).max_retries
retries = connection.get_session().get_adapter(ApiConfig.api_protocol).max_retries
self.assertEqual(retries.status_forcelist, ApiConfig.retry_status_codes)

def test_modifying_max_wait_between_retries(self):
ApiConfig.max_wait_between_retries = 3000

retries = Connection.get_session().get_adapter(ApiConfig.api_protocol).max_retries
retries = connection.get_session().get_adapter(ApiConfig.api_protocol).max_retries
self.assertEqual(retries.BACKOFF_MAX, ApiConfig.max_wait_between_retries)

@httpretty.enabled
Expand All @@ -87,7 +89,7 @@ def test_correct_response_returned_if_retries_succeed(self):
"https://data.nasdaq.com/api/v3/databases",
responses=mock_responses)

response = Connection.request('get', 'databases')
response = connection.request('get', 'databases')
self.assertEqual(response.json(), self.datatable)
self.assertEqual(response.status_code, self.success_response.status)

Expand All @@ -100,7 +102,7 @@ def test_correct_response_exception_raised_if_retries_fail(self):
"https://data.nasdaq.com/api/v3/databases",
responses=mock_responses)

self.assertRaises(InternalServerError, Connection.request, 'get', 'databases')
self.assertRaises(InternalServerError, connection.request, 'get', 'databases')

@httpretty.enabled
def test_correct_response_exception_raised_for_errors_not_in_retry_status_codes(self):
Expand All @@ -110,4 +112,4 @@ def test_correct_response_exception_raised_for_errors_not_in_retry_status_codes(
"https://data.nasdaq.com/api/v3/databases",
responses=mock_responses)

self.assertRaises(InternalServerError, Connection.request, 'get', 'databases')
self.assertRaises(InternalServerError, connection.request, 'get', 'databases')
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy