{ "info": { "author": "Jorge A. Medina", "author_email": "j@engine.cl", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Instrospective Factory pattern library\n======================================\n\n.. image:: https://travis-ci.org/engine-cl/ng-factory.svg\n :target: https://travis-ci.org/engine-cl/ng-factory\n\n.. image:: https://codecov.io/github/engine-cl/ng-factory/coverage.svg?branch=master\n :target: https://codecov.io/github/engine-cl/ng-factory?branch=master\n\n.. image:: https://www.quantifiedcode.com/api/v1/project/f57003898f714494b2a6f2bb66516a18/badge.svg\n :target: https://www.quantifiedcode.com/app/project/f57003898f714494b2a6f2bb66516a18\n\nOverview\n--------\n\nPython 3 object factory pattern implementation.\nThe principal idea is keep it simple and readable, the main function provide a mechanism to factorize any object\nwith introspection and don't make the horrible code conditions commonly showed in factory_ examples:\n\n.. _factory: http://python-3-patterns-idioms-test.readthedocs.io/en/latest/Factory.html\n\n.. code-block:: python\n\n def factory(type):\n if type == 'MyClass': \n return MyClass()\n if type == 'MyOtherClass': \n return MyOtherClass()\n\n\nSo, this module factorize any class from any module and works only in python 3\nfor python 2 don't make any sense wasted time adapting differences between both version\nalso is important know which this module only factorize classes or functions from modules\nso if can't __import__ them, raises an exception, and if you want factorize class or function\nwho is in the same module you need make it reachable to the __import__ statement\n\n\nInstallation\n------------\n\n.. code-block:: bash\n\n git clone https://github.com/engine-cl/ng_factory.git\n cd ng-factory\n python3 setup.py install\n pip install ng_factory\n\n\nTesting\n-------\n\n.. code-block:: shell\n\n python test/factory.py\n\n\nExample\n-------\n\nCreate any module with your atomic class encapsulation with GOPS and then factorize object to inject the dependencies \ninto the business logic like persistence layer or any another layer.\n\n.. code-block:: python\n\n from ng_factory import factorize\n class persistence(object):\n \"\"\" assumes all code needed to connect db and commit data transaction \"\"\"\n def __init__(self, data):\n import database\n self._dbcon = database.get_connection()\n self.data = data\n def save(self):\n self._dbcon.commit(this.data.persist())\n \n class DataObjectTypeOne(object):\n \"\"\" assumes all serializable function to format the data output \"\"\"\n @staticmethod\n def persist():\n return self.get_save_format()\n\n try:\n db = persistence(factorize(module=Example, object_type=DataObjectTypeOne))\n except(ArgumentError, NonExistentTypeError, NonExistentModuleError) as e:\n print(\"factory error {}\".format(e))\n raise\n \n db.save()", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/engine-cl/ng-factory", "keywords": "factory,introspective", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "ng_factory", "package_url": "https://pypi.org/project/ng_factory/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ng_factory/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/engine-cl/ng-factory" }, "release_url": "https://pypi.org/project/ng_factory/0.1.2/", "requires_dist": null, "requires_python": null, "summary": "Instrospective Factory pattern library", "version": "0.1.2" }, "last_serial": 2185578, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "ae253df69be352de6837cd2279735643", "sha256": "da7ab0184dc29583662ff6aadc8d794d510ddb35d8b2ee0f20bed07dab078883" }, "downloads": -1, "filename": "ng_factory-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ae253df69be352de6837cd2279735643", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2786, "upload_time": "2016-05-20T16:41:06", "url": "https://files.pythonhosted.org/packages/c1/24/66203e128af9485f09950a5886251759366e60aa73df73299d046771cc15/ng_factory-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "0e2b08e2a7b4f8e8e2f88b6f742a817a", "sha256": "7f27eee454550a35d7389ce4789925f438a013cbdcc1e595e29a06cbe1bd386a" }, "downloads": -1, "filename": "ng_factory-0.1.1.tar.gz", "has_sig": false, "md5_digest": "0e2b08e2a7b4f8e8e2f88b6f742a817a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2766, "upload_time": "2016-05-26T10:11:15", "url": "https://files.pythonhosted.org/packages/f0/ec/8c937359067333abcd217d713d74c9703185befeb9f1a8561c4c91560f84/ng_factory-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "f7d30b338171d8f893c3d127bb18d8ec", "sha256": "d0b677aa93c420319e5c7bbfa592fe02ec26e6eebe875ee04e004a8706e59dec" }, "downloads": -1, "filename": "ng_factory-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f7d30b338171d8f893c3d127bb18d8ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4237, "upload_time": "2016-06-24T16:16:34", "url": "https://files.pythonhosted.org/packages/76/8f/4ec7946e3a6666248f65391a93fcb898fb9dae8047519634b7d4f7dae229/ng_factory-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f7d30b338171d8f893c3d127bb18d8ec", "sha256": "d0b677aa93c420319e5c7bbfa592fe02ec26e6eebe875ee04e004a8706e59dec" }, "downloads": -1, "filename": "ng_factory-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f7d30b338171d8f893c3d127bb18d8ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4237, "upload_time": "2016-06-24T16:16:34", "url": "https://files.pythonhosted.org/packages/76/8f/4ec7946e3a6666248f65391a93fcb898fb9dae8047519634b7d4f7dae229/ng_factory-0.1.2.tar.gz" } ] }