From 25f1c222fd263d0eb3b9e69d1f222ee10f15f86f Mon Sep 17 00:00:00 2001 From: Roman Mogilatov Date: Fri, 3 Apr 2015 00:35:22 +0300 Subject: [PATCH] Adding examples seactions to readme --- README.rst | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 437a4e11..d1956cbc 100644 --- a/README.rst +++ b/README.rst @@ -61,8 +61,88 @@ Documentation - `Stable version`_ - `Latest version`_ +Examples +-------- + +.. code-block:: python + + """Concept example of `Objects`.""" + + from objects.catalog import AbstractCatalog + + 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 + + import sqlite3 + + + class ObjectA(object): + + """Example class ObjectA, that has dependency on database.""" + + def __init__(self, db): + """Initializer.""" + self.db = db + + + class ObjectB(object): + + """Example class ObjectB, that has dependencies on ObjectA and database.""" + + def __init__(self, a, db): + """Initializer.""" + self.a = a + self.db = db + + + class Catalog(AbstractCatalog): + + """Catalog of objects providers.""" + + database = Singleton(sqlite3.Connection, + KwArg('database', ':memory:'), + Attribute('row_factory', sqlite3.Row)) + """:type: (objects.Provider) -> sqlite3.Connection""" + + object_a = NewInstance(ObjectA, + KwArg('db', database)) + """:type: (objects.Provider) -> ObjectA""" + + object_b = NewInstance(ObjectB, + KwArg('a', object_a), + 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() + + assert a1 is not a2 + assert b1 is not b2 + 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('database', Catalog.database)) + def example(a, b, database): + assert a.db is b.db is database is Catalog.database() + + + example() + +You can get more **Objects** examples in ``/examples`` directory on +GitHub: https://github.com/rmk135/objects + + Feedback -======== +-------- Feel free to post questions, bugs, feature requests, proposals etc. on **Objects** GitHub Issues: