{ "info": { "author": "Jonathan Turnock", "author_email": "jonathan.turnock@fxquants.net", "bugtrack_url": null, "classifiers": [], "description": "# FXQuants Core\n\nFxquants core for python is a declarative based IOC framework for helping to build large applications in python.\n\nDue to the way in which Python loads packages IOC frameworks are not as popular as for example in java.\nFor example you could just use a flat file and declare instances inside of it them import it as required.\n\nHowever there is still great value in employing the design patterns many developers are familiar with, and (IMHO) more useful is the declarative \nconfiguration-less nature that is used in modern versions of spring-boot allowing a developer to include at the point of code the \nintended purpose for a class. Defining these categories with the code allows a developer to focus on the problem domain, and\nless about how any given framework injects such dependencies.\n\nThe fxq series of python libraries look to take some of the best features of the Sping IOC framework and Spring\nboot annotations and port them as Decorators on top of a managed IOC container.\n\n## Getting Started\nCreate a class i.e. ComponentExample and decorate it with @Component, this will trigger an instance of this component\nto be registered with the IOC container and it can be pulled out with the decorator method Autowired (python doesnt\ncurrently support decorator syntax on fields so simply call the method itself, specifying either the bean name, or expected type)\n```python\nimport logging\n\nformat = \"[%(asctime)s] [%(levelname)s] [%(name)s] - %(message)s\"\nlogging.basicConfig(format=format, level=logging.DEBUG)\n\nfrom fxq.core.beans.factory.annotation import Autowired\nfrom fxq.core.stereotype import Component\n\n\n@Component\nclass ComponentExample:\n def __init__(self):\n self.id = \"1\"\n\n def __repr__(self):\n return \"ComponentExample instance %s - ID:%s\" % (hash(self), self.id)\n\n\nif __name__ == '__main__':\n component_example = Autowired(type=ComponentExample)\n same_component = Autowired(name=\"component_example\")\n same_component_again = Autowired(name=\"component_example\", type=ComponentExample)\n logging.info(component_example)\n logging.info(same_component)\n logging.info(same_component_again)\n\n\n\n```\nProduces\n```text\n[2019-05-19 19:17:07,789] [INFO] [BeanFactory] - Bean Factory Initialized\n[2019-05-19 19:17:07,789] [INFO] [ApplicationContext] - Application Context Initialized\n[2019-05-19 19:17:07,791] [DEBUG] [BeanFactory] - Registering Bean for type ComponentExample with name component_example\n[2019-05-19 19:17:07,791] [DEBUG] [BeanFactory] - Matched component_example to be of class type ComponentExample\n[2019-05-19 19:17:07,792] [DEBUG] [BeanFactory] - Found instance of type ComponentExample for requested bean component_example\n[2019-05-19 19:17:07,792] [DEBUG] [BeanFactory] - Validated Bean component_example to be of type ComponentExample\n[2019-05-19 19:17:07,792] [INFO] [root] - ComponentExample instance -9223372036577000402 - ID:1\n[2019-05-19 19:17:07,792] [INFO] [root] - ComponentExample instance -9223372036577000402 - ID:1\n[2019-05-19 19:17:07,792] [INFO] [root] - ComponentExample instance -9223372036577000402 - ID:1\n```\n\n### Installing\n\nSimply install the python module using \n```bash\npip install fxq-core\n```\n\n## Contributing\n\nContributions are most welcome to the project, please raise issues first and contribute in response to the issue with a pull request.\n\n## Versioning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://bitbucket.org/fxquants/fxq-ioc-core/downloads/?tab=tags). \n\n## Authors\n\n* **Jonathan Turnock** - *Initial work* - [fxquants - profile](https://fxquants.atlassian.net/people/5c4e3005043b4f5d172a732a)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/fxquants/fxq-core/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "fxq-core", "package_url": "https://pypi.org/project/fxq-core/", "platform": "", "project_url": "https://pypi.org/project/fxq-core/", "project_urls": { "Homepage": "https://bitbucket.org/fxquants/fxq-core/" }, "release_url": "https://pypi.org/project/fxq-core/1.0.3/", "requires_dist": [ "stringcase" ], "requires_python": "", "summary": "Decorator driven declarative framework to assist in creating large applications and manage beans", "version": "1.0.3" }, "last_serial": 5353697, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "dc0e7624732536ba094e19352b1eb05c", "sha256": "aaf6140f204b732bf90483378f84f06c8614abb477dfe2d0e6b1a711aa4919b2" }, "downloads": -1, "filename": "fxq_core-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "dc0e7624732536ba094e19352b1eb05c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9025, "upload_time": "2019-06-02T22:13:50", "url": "https://files.pythonhosted.org/packages/68/da/4cfb3a2ac91883dfe2d10457a13687dde4f9e7e3fb452a17cd0776d8e10f/fxq_core-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e8ed693879791911fe801cf752f9fa86", "sha256": "ba75fcf71eb6ed6df424b61b4ad98827d9dc1db49c2c26d2465517e5c6b316c7" }, "downloads": -1, "filename": "fxq-core-1.0.2.tar.gz", "has_sig": false, "md5_digest": "e8ed693879791911fe801cf752f9fa86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5374, "upload_time": "2019-06-02T22:13:52", "url": "https://files.pythonhosted.org/packages/ac/86/808daf4e1876a9e0c70a9f528ad376b2a89f6a6424263049508fe5858ce0/fxq-core-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "b8ccb6ce6da9bde779c196f5fbb3ea7c", "sha256": "b3c51fd31a545719a7af8f887ba2d66c464a8253d7bb7f80e9c3284a560e8ed2" }, "downloads": -1, "filename": "fxq_core-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b8ccb6ce6da9bde779c196f5fbb3ea7c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7747, "upload_time": "2019-06-03T17:51:33", "url": "https://files.pythonhosted.org/packages/5e/41/7a68285e947ca6fd10eea9a7370b0209ee870ca56d7f1ca85e0ba33f7331/fxq_core-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7701a6a3ef53625ee08542e4e196bf74", "sha256": "665a87c97a43bbd9865883c2e40e7c58a34a6531718536ac42d582484264a151" }, "downloads": -1, "filename": "fxq-core-1.0.3.tar.gz", "has_sig": false, "md5_digest": "7701a6a3ef53625ee08542e4e196bf74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4842, "upload_time": "2019-06-03T17:51:35", "url": "https://files.pythonhosted.org/packages/48/1e/bccd06ff574b7e4cf04616aeaefcf48a49466eb15858efcbaf0cb93cef86/fxq-core-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b8ccb6ce6da9bde779c196f5fbb3ea7c", "sha256": "b3c51fd31a545719a7af8f887ba2d66c464a8253d7bb7f80e9c3284a560e8ed2" }, "downloads": -1, "filename": "fxq_core-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b8ccb6ce6da9bde779c196f5fbb3ea7c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7747, "upload_time": "2019-06-03T17:51:33", "url": "https://files.pythonhosted.org/packages/5e/41/7a68285e947ca6fd10eea9a7370b0209ee870ca56d7f1ca85e0ba33f7331/fxq_core-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7701a6a3ef53625ee08542e4e196bf74", "sha256": "665a87c97a43bbd9865883c2e40e7c58a34a6531718536ac42d582484264a151" }, "downloads": -1, "filename": "fxq-core-1.0.3.tar.gz", "has_sig": false, "md5_digest": "7701a6a3ef53625ee08542e4e196bf74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4842, "upload_time": "2019-06-03T17:51:35", "url": "https://files.pythonhosted.org/packages/48/1e/bccd06ff574b7e4cf04616aeaefcf48a49466eb15858efcbaf0cb93cef86/fxq-core-1.0.3.tar.gz" } ] }