Skip to content

Commit

Permalink
Merge 04603b8 into 89d14be
Browse files Browse the repository at this point in the history
  • Loading branch information
alfred82santa committed Oct 10, 2016
2 parents 89d14be + 04603b8 commit 9804db9
Show file tree
Hide file tree
Showing 9 changed files with 57 additions and 46 deletions.
4 changes: 3 additions & 1 deletion .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@
omit =
*/tests/*
*/site-packages/*

exclude_lines =
pragma: no cover
def __repr__
raise AssertionError
raise NotImplementedError
if __name__ == .__main__.:

show_missing = True
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
@@ -1 +1 @@
aio-service-client@0.1.0
aio-service-client@0.5.0
6 changes: 6 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,12 @@ In order to send a payload you must use ``payload`` keyword on call:
Changelog
=========

v0.5.2
------

- Made compatible with aiohttp 1.0.x.
- Simplified factory code.

v0.5.1
------

Expand Down
4 changes: 2 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
dirty-loader >= 0.2.0
dirty-loader >= 0.2.2
git+https://github.com/alfred82santa/configure.git
aiohttp
aiohttp >= 1.0.0
36 changes: 19 additions & 17 deletions service_client/factories.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
from logging import Logger

from dirty_loader.factories import BaseFactory, instance_params

from . import ServiceClient
from .plugins import BasePlugin, BaseLogger


def load_spec_by_sepc_loader(spec_loader, loader):
loader_class, params = instance_params(spec_loader)
loader = loader.load_class(loader_class)
return loader(**params)


class ServiceClientFactory(BaseFactory):

def __call__(self, spec=None, spec_loader=None, plugins=None,
parser=None, serializer=None, logger=None, **kwargs):
if spec_loader:
loader_class, params = instance_params(spec_loader)
loader = self.loader.load_class(loader_class)
spec = loader(**params)
spec = load_spec_by_sepc_loader(spec_loader, self.loader)

try:
loaded_plugins = []
for plugin in plugins:
if not isinstance(plugin, BasePlugin):
klass, params = instance_params(plugin)
plugin = self.loader.factory(klass, **params)
loaded_plugins.append(plugin)
plugins = loaded_plugins
except TypeError:
plugins = self.iter_loaded_item_list(plugins, BasePlugin)
except TypeError: # pragma: no cover
pass

if isinstance(parser, str):
Expand All @@ -30,9 +30,10 @@ def __call__(self, spec=None, spec_loader=None, plugins=None,
if isinstance(serializer, str):
serializer = self.loader.load_class(serializer)

if logger and not isinstance(logger, Logger):
klass, params = instance_params(logger)
logger = self.loader.factory(klass, **params)
try:
logger = self.load_item(logger, Logger)
except TypeError: # pragma: no cover
pass

return super(ServiceClientFactory, self).__call__(spec=spec, plugins=plugins, parser=parser,
serializer=serializer, logger=logger, **kwargs)
Expand All @@ -41,9 +42,10 @@ def __call__(self, spec=None, spec_loader=None, plugins=None,
class LoggerPluginFactory(BaseFactory):

def __call__(self, logger, **kwargs):
if logger and not isinstance(logger, Logger):
klass, params = instance_params(logger)
logger = self.loader.factory(klass, **params)
try:
logger = self.load_item(logger, Logger)
except TypeError: # pragma: no cover
pass

return super(LoggerPluginFactory, self).__call__(logger=logger, **kwargs)

Expand Down
2 changes: 1 addition & 1 deletion service_client/mocks.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from aiohttp.client_reqrep import ClientResponse
from aiohttp.multidict import CIMultiDict
from multidict import CIMultiDict
from functools import wraps
from asyncio import coroutine, get_event_loop
from dirty_loader import LoaderNamespaceReversedCached
Expand Down
3 changes: 2 additions & 1 deletion service_client/plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
from functools import wraps
from datetime import datetime
from urllib.parse import quote_plus
from aiohttp.multidict import CIMultiDict
from aiohttp.helpers import Timeout as TimeoutContext
from multidict import CIMultiDict

from service_client.utils import IncompleteFormatter, random_token


Expand Down
6 changes: 3 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
name='aio-service-client',
url='https://github.com/alfred82santa/aio-service-client',
author='alfred82santa',
version='0.5.1',
version='0.5.2',
license='LGPLv3',
author_email='alfred82santa@gmail.com',
classifiers=[
Expand All @@ -16,8 +16,8 @@
'License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)',
'Development Status :: 4 - Beta'],
packages=['service_client'],
include_package_data=True,
install_requires=['dirty-loader', 'aiohttp'],
include_package_data=False,
install_requires=['dirty-loader>=0.2.2', 'aiohttp>=1.0.0'],
description="Service Client Framework powered by Python asyncio.",
long_description=open(os.path.join(os.path.dirname(__file__), 'README.rst')).read(),
test_suite="nose.collector",
Expand Down
40 changes: 20 additions & 20 deletions tests/tests_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@
from datetime import datetime, timedelta
from aiohttp.client import ClientSession
from aiohttp.client_reqrep import ClientResponse
from aiohttp.multidict import CIMultiDict
from multidict import CIMultiDict
from asynctest.case import TestCase
from service_client.utils import ObjectWrapper
from service_client.plugins import PathTokens, Timeout, Headers, QueryParams, Elapsed, InnerLogger, OuterLogger, \
TrackingToken, Pool


class PathTest(TestCase):
class PathTests(TestCase):

def setUp(self):
self.plugin = PathTokens()
Expand All @@ -31,7 +31,7 @@ def setUp(self):
'path_param2': 'bar'}

@coroutine
def testNoChanges(self):
def test_no_changes(self):
self.assertEqual((yield from self.plugin.prepare_path(self.endpoint_desc,
self.session,
self.request_params,
Expand All @@ -42,7 +42,7 @@ def testNoChanges(self):
'path_param2': 'bar'})

@coroutine
def testOneParam(self):
def test_one_param(self):
self.assertEqual((yield from self.plugin.prepare_path(self.endpoint_desc,
self.session,
self.request_params,
Expand All @@ -52,7 +52,7 @@ def testOneParam(self):
self.assertDictEqual(self.request_params, {'path_param2': 'bar'})

@coroutine
def testOneSpecialParam(self):
def test_one_special_param(self):
request_params = {'path_param1': '*'}
self.assertEqual((yield from self.plugin.prepare_path(self.endpoint_desc,
self.session,
Expand All @@ -63,7 +63,7 @@ def testOneSpecialParam(self):
self.assertDictEqual(request_params, {})

@coroutine
def testOneIntParam(self):
def test_one_int_param(self):
request_params = {'path_param1': 1}
self.assertEqual((yield from self.plugin.prepare_path(self.endpoint_desc,
self.session,
Expand All @@ -74,7 +74,7 @@ def testOneIntParam(self):
self.assertDictEqual(request_params, {})

@coroutine
def testTwoParams(self):
def test_two_params(self):
self.assertEqual((yield from self.plugin.prepare_path(self.endpoint_desc,
self.session,
self.request_params,
Expand All @@ -84,7 +84,7 @@ def testTwoParams(self):
self.assertDictEqual(self.request_params, {})

@coroutine
def testTwoParamsRepeated(self):
def test_two_params_repeated(self):
self.assertEqual((yield from self.plugin.prepare_path(self.endpoint_desc,
self.session,
self.request_params,
Expand All @@ -94,7 +94,7 @@ def testTwoParamsRepeated(self):
self.assertDictEqual(self.request_params, {'path_param2': 'bar'})

@coroutine
def testNoParam(self):
def test_no_param(self):
self.assertEqual((yield from self.plugin.prepare_path(self.endpoint_desc,
self.session,
self.request_params,
Expand All @@ -104,7 +104,7 @@ def testNoParam(self):
self.assertDictEqual(self.request_params, {'path_param2': 'bar'})


class TimeoutTest(TestCase):
class TimeoutTests(TestCase):

def setUp(self):

Expand Down Expand Up @@ -167,7 +167,7 @@ def test_no_timeout(self):
yield from self.session.request()


class TimeoutWithResponseTest(TestCase):
class TimeoutWithResponseTests(TestCase):

def setUp(self):

Expand Down Expand Up @@ -196,7 +196,7 @@ def test_no_timeout(self):
self.assertEqual((yield from self.session.request()), 'response')


class HeadersTest(TestCase):
class HeadersTests(TestCase):

def setUp(self):
self.plugin = Headers(default_headers={'x-foo-bar': 'test headers'})
Expand All @@ -215,7 +215,7 @@ def test_use_default(self):

self.assertDictEqual(self.request_params, {'path_param1': 'foo',
'path_param2': 'bar',
'headers': {'X-FOO-BAR': 'test headers'}})
'headers': {'X-Foo-Bar': 'test headers'}})

@coroutine
def test_use_service(self):
Expand All @@ -224,7 +224,7 @@ def test_use_service(self):

self.assertDictEqual(self.request_params, {'path_param1': 'foo',
'path_param2': 'bar',
'headers': {'X-FOO-BAR': 'test headers service_client'}})
'headers': {'X-Foo-Bar': 'test headers service_client'}})

@coroutine
def test_add_from_service(self):
Expand All @@ -233,8 +233,8 @@ def test_add_from_service(self):

self.assertDictEqual(self.request_params, {'path_param1': 'foo',
'path_param2': 'bar',
'headers': {'X-FOO-BAR': 'test headers',
'X-FOO-BAR-SERVICE': 'test headers service_client'}})
'headers': {'X-Foo-Bar': 'test headers',
'X-Foo-Bar-Service': 'test headers service_client'}})

@coroutine
def test_use_request(self):
Expand All @@ -244,7 +244,7 @@ def test_use_request(self):

self.assertDictEqual(self.request_params, {'path_param1': 'foo',
'path_param2': 'bar',
'headers': {'X-FOO-BAR': 'test headers request'}})
'headers': {'X-Foo-Bar': 'test headers request'}})

@coroutine
def test_add_from_request(self):
Expand All @@ -254,9 +254,9 @@ def test_add_from_request(self):

self.assertDictEqual(self.request_params, {'path_param1': 'foo',
'path_param2': 'bar',
'headers': {'X-FOO-BAR': 'test headers',
'X-FOO-BAR-SERVICE': 'test headers service_client',
'X-FOO-BAR-REQUEST': 'test headers request'}})
'headers': {'X-Foo-Bar': 'test headers',
'X-Foo-Bar-Service': 'test headers service_client',
'X-Foo-Bar-Request': 'test headers request'}})


class QueryParamsTest(TestCase):
Expand Down

0 comments on commit 9804db9

Please sign in to comment.