mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-11-22 09:36:48 +03:00
Remove required DynamicCatalog.name attribute
This commit is contained in:
parent
05d6db5664
commit
548847f83a
|
@ -42,7 +42,7 @@ from .utils import ensure_is_catalog_bundle
|
||||||
|
|
||||||
from .errors import Error
|
from .errors import Error
|
||||||
|
|
||||||
# Backward compatimility fix for versions < 0.11.*
|
# Backward compatibility for versions < 0.11.*
|
||||||
from . import catalogs
|
from . import catalogs
|
||||||
catalog = catalogs
|
catalog = catalogs
|
||||||
|
|
||||||
|
|
|
@ -35,8 +35,7 @@ class CatalogBundle(object):
|
||||||
:rtype: CatalogBundle
|
:rtype: CatalogBundle
|
||||||
:return: Subclass of CatalogBundle
|
:return: Subclass of CatalogBundle
|
||||||
"""
|
"""
|
||||||
return type('{0}Bundle'.format(catalog.name), (cls,),
|
return type('BundleSubclass', (cls,), dict(catalog=catalog))
|
||||||
dict(catalog=catalog))
|
|
||||||
|
|
||||||
def get(self, name):
|
def get(self, name):
|
||||||
"""Return provider with specified name or raise an error."""
|
"""Return provider with specified name or raise an error."""
|
||||||
|
@ -69,19 +68,17 @@ class DynamicCatalog(object):
|
||||||
"""Catalog of providers."""
|
"""Catalog of providers."""
|
||||||
|
|
||||||
__IS_CATALOG__ = True
|
__IS_CATALOG__ = True
|
||||||
__slots__ = ('name', 'Bundle', 'providers', 'provider_names',
|
__slots__ = ('Bundle', 'providers', 'provider_names',
|
||||||
'overridden_by')
|
'overridden_by', 'name')
|
||||||
|
|
||||||
def __init__(self, name, **providers):
|
def __init__(self, **providers):
|
||||||
"""Initializer.
|
"""Initializer.
|
||||||
|
|
||||||
:param name: Catalog's name
|
:param name: Catalog's name
|
||||||
:type name: str
|
:type name: str
|
||||||
|
|
||||||
:param kwargs: Dict of providers with their catalog names
|
|
||||||
:type kwargs: dict[str, dependency_injector.providers.Provider]
|
:type kwargs: dict[str, dependency_injector.providers.Provider]
|
||||||
"""
|
"""
|
||||||
self.name = name
|
|
||||||
self.Bundle = CatalogBundle.sub_cls_factory(self)
|
self.Bundle = CatalogBundle.sub_cls_factory(self)
|
||||||
self.providers = dict()
|
self.providers = dict()
|
||||||
self.provider_names = dict()
|
self.provider_names = dict()
|
||||||
|
@ -94,6 +91,8 @@ class DynamicCatalog(object):
|
||||||
self.provider_names[provider] = name
|
self.provider_names[provider] = name
|
||||||
self.providers[name] = provider
|
self.providers[name] = provider
|
||||||
self.overridden_by = tuple()
|
self.overridden_by = tuple()
|
||||||
|
self.name = '.'.join((self.__class__.__module__,
|
||||||
|
self.__class__.__name__))
|
||||||
|
|
||||||
def is_bundle_owner(self, bundle):
|
def is_bundle_owner(self, bundle):
|
||||||
"""Check if catalog is bundle owner."""
|
"""Check if catalog is bundle owner."""
|
||||||
|
@ -191,9 +190,9 @@ class DeclarativeCatalogMetaClass(type):
|
||||||
providers = cls_providers + inherited_providers
|
providers = cls_providers + inherited_providers
|
||||||
|
|
||||||
cls.name = '.'.join((cls.__module__, cls.__name__))
|
cls.name = '.'.join((cls.__module__, cls.__name__))
|
||||||
cls.catalog = DynamicCatalog(cls.name, **dict(providers))
|
cls.catalog = DynamicCatalog(**dict(providers))
|
||||||
|
cls.catalog.name = cls.name
|
||||||
cls.Bundle = cls.catalog.Bundle
|
cls.Bundle = cls.catalog.Bundle
|
||||||
|
|
||||||
cls.cls_providers = dict(cls_providers)
|
cls.cls_providers = dict(cls_providers)
|
||||||
cls.inherited_providers = dict(inherited_providers)
|
cls.inherited_providers = dict(inherited_providers)
|
||||||
|
|
||||||
|
|
|
@ -273,8 +273,7 @@ class OverrideTests(unittest.TestCase):
|
||||||
|
|
||||||
def test_overriding_with_dynamic_catalog(self):
|
def test_overriding_with_dynamic_catalog(self):
|
||||||
"""Test catalog overriding with another dynamic catalog."""
|
"""Test catalog overriding with another dynamic catalog."""
|
||||||
self.Catalog.override(di.DynamicCatalog('OverridingCatalog',
|
self.Catalog.override(di.DynamicCatalog(obj=di.Value(1),
|
||||||
obj=di.Value(1),
|
|
||||||
another_obj=di.Value(2)))
|
another_obj=di.Value(2)))
|
||||||
self.assertEqual(self.Catalog.obj(), 1)
|
self.assertEqual(self.Catalog.obj(), 1)
|
||||||
self.assertEqual(self.Catalog.another_obj(), 2)
|
self.assertEqual(self.Catalog.another_obj(), 2)
|
||||||
|
|
|
@ -217,7 +217,7 @@ class IsCatalogTests(unittest.TestCase):
|
||||||
|
|
||||||
def test_with_dynamic_catalog(self):
|
def test_with_dynamic_catalog(self):
|
||||||
"""Test with class."""
|
"""Test with class."""
|
||||||
self.assertTrue(di.is_catalog(di.DynamicCatalog('TestCatalog')))
|
self.assertTrue(di.is_catalog(di.DynamicCatalog()))
|
||||||
|
|
||||||
def test_with_child_class(self):
|
def test_with_child_class(self):
|
||||||
"""Test with parent class."""
|
"""Test with parent class."""
|
||||||
|
@ -244,8 +244,7 @@ class IsDynamicCatalogTests(unittest.TestCase):
|
||||||
|
|
||||||
def test_with_dynamic_catalog(self):
|
def test_with_dynamic_catalog(self):
|
||||||
"""Test with dynamic catalog."""
|
"""Test with dynamic catalog."""
|
||||||
self.assertTrue(di.is_dynamic_catalog(di.DynamicCatalog(
|
self.assertTrue(di.is_dynamic_catalog(di.DynamicCatalog()))
|
||||||
'TestCatalog')))
|
|
||||||
|
|
||||||
|
|
||||||
class IsDeclarativeCatalogTests(unittest.TestCase):
|
class IsDeclarativeCatalogTests(unittest.TestCase):
|
||||||
|
@ -257,8 +256,7 @@ class IsDeclarativeCatalogTests(unittest.TestCase):
|
||||||
|
|
||||||
def test_with_dynamic_catalog(self):
|
def test_with_dynamic_catalog(self):
|
||||||
"""Test with dynamic catalog."""
|
"""Test with dynamic catalog."""
|
||||||
self.assertFalse(di.is_declarative_catalog(di.DynamicCatalog(
|
self.assertFalse(di.is_declarative_catalog(di.DynamicCatalog()))
|
||||||
'TestCatalog')))
|
|
||||||
|
|
||||||
|
|
||||||
class IsCatalogBundleTests(unittest.TestCase):
|
class IsCatalogBundleTests(unittest.TestCase):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user