From a5337b2fc83c848e1ad5e4b50629451bb7a97343 Mon Sep 17 00:00:00 2001 From: Roman Mogilatov Date: Thu, 14 May 2015 11:59:47 +0300 Subject: [PATCH] Last modifications on NewInstance to Factory provider renaming --- README.rst | 23 ++++++++++---------- docs/providers.rst | 50 ++++++++++++++++++++++++-------------------- examples/concept.py | 21 +++++++++---------- objects/providers.py | 2 +- 4 files changed, 50 insertions(+), 46 deletions(-) diff --git a/README.rst b/README.rst index 497b8259..99e33eda 100644 --- a/README.rst +++ b/README.rst @@ -84,12 +84,12 @@ Examples from objects.catalog import AbstractCatalog + from objects.providers import Factory from objects.providers import Singleton - from objects.providers import NewInstance from objects.injections import KwArg from objects.injections import Attribute - from objects.injections import inject + from objects.decorators import inject import sqlite3 @@ -122,19 +122,19 @@ Examples Attribute('row_factory', sqlite3.Row)) """:type: (objects.Provider) -> sqlite3.Connection""" - object_a = NewInstance(ObjectA, - KwArg('db', database)) + object_a_factory = Factory(ObjectA, + KwArg('db', database)) """:type: (objects.Provider) -> ObjectA""" - object_b = NewInstance(ObjectB, - KwArg('a', object_a), - KwArg('db', database)) + object_b_factory = Factory(ObjectB, + KwArg('a', object_a_factory), + KwArg('db', database)) """:type: (objects.Provider) -> ObjectB""" # Catalog static provides. - a1, a2 = Catalog.object_a(), Catalog.object_a() - b1, b2 = Catalog.object_b(), Catalog.object_b() + a1, a2 = Catalog.object_a_factory(), Catalog.object_a_factory() + b1, b2 = Catalog.object_b_factory(), Catalog.object_b_factory() assert a1 is not a2 assert b1 is not b2 @@ -142,8 +142,8 @@ Examples # Example of inline injections. - @inject(KwArg('a', Catalog.object_a)) - @inject(KwArg('b', Catalog.object_b)) + @inject(KwArg('a', Catalog.object_a_factory)) + @inject(KwArg('b', Catalog.object_b_factory)) @inject(KwArg('database', Catalog.database)) def example(a, b, database): assert a.db is b.db is database is Catalog.database() @@ -151,6 +151,7 @@ Examples example() + You can get more *Objects* examples in ``/examples`` directory on GitHub: diff --git a/docs/providers.rst b/docs/providers.rst index 01b06752..6e755c5d 100644 --- a/docs/providers.rst +++ b/docs/providers.rst @@ -18,7 +18,7 @@ initialization. There are few *Instance* providers: - - ``NewInstance`` provider creates new instance of specified class on every + - ``Factory`` provider creates new instance of specified class on every call. - ``Singleton`` provider creates new instance of specified class on first call and returns same instance on every next call. @@ -27,14 +27,14 @@ Example: .. code-block:: python - """`NewInstance` and `Singleton` providers example.""" + """`Factory` and `Singleton` providers example.""" - from objects.providers import NewInstance + from objects.providers import Factory from objects.providers import Singleton - # NewInstance provider creates new instance of specified class on every call. - new_object = NewInstance(object) + # Factory provider creates new instance of specified class on every call. + new_object = Factory(object) object_1 = new_object() object_2 = new_object() @@ -85,12 +85,12 @@ Example: .. code-block:: python - """`NewInstance` and `Singleton` providers with injections example.""" + """`Factory` and `Singleton` providers with injections example.""" import sqlite3 from objects.providers import Singleton - from objects.providers import NewInstance + from objects.providers import Factory from objects.injections import KwArg from objects.injections import Attribute @@ -119,18 +119,19 @@ Example: KwArg('isolation_level', 'EXCLUSIVE'), Attribute('row_factory', sqlite3.Row)) - object_a = NewInstance(ObjectA, - KwArg('database', database)) + object_a_factory = Factory(ObjectA, + KwArg('database', database)) # Creating several `ObjectA` instances. - object_a_1 = object_a() - object_a_2 = object_a() + object_a_1 = object_a_factory() + object_a_2 = object_a_factory() # Making some asserts. assert object_a_1 is not object_a_2 assert object_a_1.database is object_a_2.database is database() assert object_a_1.get_one() == object_a_2.get_one() == 1 + Static providers ---------------- @@ -163,6 +164,7 @@ Example: value_provider = Value(123) assert value_provider() == 123 + Callable providers ------------------ @@ -172,7 +174,7 @@ callable. Example: - .. code-block:: python +.. code-block:: python """`Callable` providers examples.""" @@ -236,7 +238,7 @@ Example: import sqlite3 from objects.providers import Singleton - from objects.providers import NewInstance + from objects.providers import Factory from objects.providers import ExternalDependency from objects.injections import KwArg @@ -261,8 +263,8 @@ Example: # Database and `ObjectA` providers. database = ExternalDependency(instance_of=sqlite3.Connection) - object_a = NewInstance(ObjectA, - KwArg('database', database)) + object_a_factory = Factory(ObjectA, + KwArg('database', database)) # Satisfaction of external dependency. database.override(Singleton(sqlite3.Connection, @@ -273,14 +275,15 @@ Example: Attribute('row_factory', sqlite3.Row))) # Creating several `ObjectA` instances. - object_a_1 = object_a() - object_a_2 = object_a() + object_a_1 = object_a_factory() + object_a_2 = object_a_factory() # Making some asserts. assert object_a_1 is not object_a_2 assert object_a_1.database is object_a_2.database is database() + Config providers ---------------- @@ -300,8 +303,8 @@ Example: import sqlite3 + from objects.providers import Factory from objects.providers import Singleton - from objects.providers import NewInstance from objects.injections import KwArg from objects.injections import Attribute @@ -348,17 +351,18 @@ Example: KwArg('isolation_level', 'EXCLUSIVE'), Attribute('row_factory', sqlite3.Row)) - object_a = NewInstance(ObjectA, - KwArg('database', database)) + object_a_factory = Factory(ObjectA, + KwArg('database', database)) # Overriding `ObjectA` provider with `ObjectAMock` provider. - object_a.override(NewInstance(ObjectAMock)) + object_a_factory.override(Factory(ObjectAMock)) # Creating several `ObjectA` instances. - object_a_1 = object_a() - object_a_2 = object_a() + object_a_1 = object_a_factory() + object_a_2 = object_a_factory() # Making some asserts. assert object_a_1 is not object_a_2 assert object_a_1.get_one() == object_a_2.get_one() == 2 + diff --git a/examples/concept.py b/examples/concept.py index 75fe2c98..3a7b1feb 100644 --- a/examples/concept.py +++ b/examples/concept.py @@ -2,12 +2,11 @@ from objects.catalog import AbstractCatalog +from objects.providers import Factory from objects.providers import Singleton -from objects.providers import NewInstance from objects.injections import KwArg from objects.injections import Attribute - from objects.decorators import inject import sqlite3 @@ -41,19 +40,19 @@ class Catalog(AbstractCatalog): Attribute('row_factory', sqlite3.Row)) """:type: (objects.Provider) -> sqlite3.Connection""" - object_a = NewInstance(ObjectA, - KwArg('db', database)) + object_a_factory = Factory(ObjectA, + KwArg('db', database)) """:type: (objects.Provider) -> ObjectA""" - object_b = NewInstance(ObjectB, - KwArg('a', object_a), - KwArg('db', database)) + object_b_factory = Factory(ObjectB, + KwArg('a', object_a_factory), + KwArg('db', database)) """:type: (objects.Provider) -> ObjectB""" # Catalog static provides. -a1, a2 = Catalog.object_a(), Catalog.object_a() -b1, b2 = Catalog.object_b(), Catalog.object_b() +a1, a2 = Catalog.object_a_factory(), Catalog.object_a_factory() +b1, b2 = Catalog.object_b_factory(), Catalog.object_b_factory() assert a1 is not a2 assert b1 is not b2 @@ -61,8 +60,8 @@ assert a1.db is a2.db is b1.db is b2.db is Catalog.database() # Example of inline injections. -@inject(KwArg('a', Catalog.object_a)) -@inject(KwArg('b', Catalog.object_b)) +@inject(KwArg('a', Catalog.object_a_factory)) +@inject(KwArg('b', Catalog.object_b_factory)) @inject(KwArg('database', Catalog.database)) def example(a, b, database): assert a.db is b.db is database is Catalog.database() diff --git a/objects/providers.py b/objects/providers.py index a69d1f05..71f40087 100644 --- a/objects/providers.py +++ b/objects/providers.py @@ -73,7 +73,7 @@ class Factory(Provider): """Factory provider. - Factory providers will create and return new instance on every call. + Factory provider creates new instance of specified class on every call. """ __slots__ = ('provides', 'kwargs', 'attributes', 'methods')