{ "info": { "author": "C.W.", "author_email": "wangc_2011@hotmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries" ], "description": "================================================================================\nlml - Load me later. A lazy plugin management system.\n================================================================================\n\n.. image:: https://api.travis-ci.org/chfw/lml.svg\n :target: http://travis-ci.org/chfw/lml\n\n.. image:: https://codecov.io/github/chfw/lml/coverage.png\n :target: https://codecov.io/github/chfw/lml\n\n\n.. image:: https://readthedocs.org/projects/lml/badge/?version=latest\n :target: http://lml.readthedocs.org/en/latest/\n\n**lml** seamlessly finds the lml based plugins from your current python\nenvironment but loads your plugins on demand. It is designed to support\nplugins that have external dependencies, especially bulky and/or\nmemory hungry ones. lml provides the plugin management system only and the\nplugin interface is on your shoulder.\n\n**lml** enabled applications helps your customers [#f1]_ in two ways:\n\n#. Your customers could cherry-pick the plugins from pypi per python environment.\n They could remove a plugin using `pip uninstall` command.\n#. Only the plugins used at runtime gets loaded into computer memory.\n\nWhen you would use **lml** to refactor your existing code, it aims to flatten the\ncomplexity and to shrink the size of your bulky python library by\ndistributing the similar functionalities across its plugins. However, you as\nthe developer need to do the code refactoring by yourself and lml would lend you a hand.\n\n.. [#f1] the end developers who uses your library and packages achieve their\n objectives.\n\nInstallation\n================================================================================\n\n\nYou can install lml via pip:\n\n.. code-block:: bash\n\n $ pip install lml\n\n\nor clone it and install it:\n\n.. code-block:: bash\n\n $ git clone https://github.com/chfw/lml.git\n $ cd lml\n $ python setup.py install\n\nLicense\n================================================================================\n\nNew BSD\n\nChange log\n================================================================================\n\n0.0.9 - 7/1/2019\n--------------------------------------------------------------------------------\n\nUpdated\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n#. `#11 `_: more test contents for\n OpenSuse package validation\n\n0.0.8 - 4/1/2019\n--------------------------------------------------------------------------------\n\nUpdated\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n#. `#9 `_: include tests, docs for\n OpenSuse package validation\n\n0.0.7 - 17/11/2018\n--------------------------------------------------------------------------------\n\nFixed\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n#. `#8 `_: get_primary_key will fail when\n a module is loaded later\n#. deprecated old style plugin scanner: scan_plugins\n\n0.0.6 - 07/11/2018\n--------------------------------------------------------------------------------\n\nFixed\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n#. Revert the version 0.0.5 changes. Raise Import error and log the exception\n\n0.0.5 - 06/11/2018\n--------------------------------------------------------------------------------\n\nFixed\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n#. `#6 `_: Catch and Ignore\n ModuleNotFoundError\n\n0.0.4 - 07.08.2018\n--------------------------------------------------------------------------------\n\nAdded\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n#. `#4 `_: to find plugin names with\n different naming patterns\n\n0.0.3 - 12/06/2018\n--------------------------------------------------------------------------------\n\nAdded\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n#. `dict` can be a pluggable type in addition to `function`, `class`\n#. get primary tag of your tag, helping you find out which category of plugins\n your tag points to\n\n0.0.2 - 23/10/2017\n--------------------------------------------------------------------------------\n\nUpdated\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n#. `pyexcel#103 `_: include\n LICENSE in tar ball\n\n0.0.1 - 30/05/2017\n--------------------------------------------------------------------------------\n\nAdded\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n#. First release\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/chfw/lml/archive/0.0.9.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/chfw/lml", "keywords": "python", "license": "New BSD", "maintainer": "", "maintainer_email": "", "name": "lml", "package_url": "https://pypi.org/project/lml/", "platform": "", "project_url": "https://pypi.org/project/lml/", "project_urls": { "Download": "https://github.com/chfw/lml/archive/0.0.9.tar.gz", "Homepage": "https://github.com/chfw/lml" }, "release_url": "https://pypi.org/project/lml/0.0.9/", "requires_dist": null, "requires_python": "", "summary": "Load me later. A lazy plugin management system.", "version": "0.0.9" }, "last_serial": 4667622, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "eebc26960153f6d3115f169bffd7dbef", "sha256": "58a11170ecb0ce5e4680ad8971f1e353b795d58953217d65c9a56e0d774261d6" }, "downloads": -1, "filename": "lml-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eebc26960153f6d3115f169bffd7dbef", "packagetype": "bdist_wheel", "python_version": "any", "requires_python": null, "size": 9280, "upload_time": "2017-05-30T22:26:25", "url": "https://files.pythonhosted.org/packages/21/95/2362855180df8aea80c18d7d5ea5f8e3a46f678c3b132be3b76ebd97c995/lml-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c4e9b0cc53c8be5195d696dcc09e6c9", "sha256": "12783c8851bb1b1aacf6d139aa41fb529e1723bff863e71034af07a55bf1e5a3" }, "downloads": -1, "filename": "lml-0.0.1.tar.gz", "has_sig": false, "md5_digest": "6c4e9b0cc53c8be5195d696dcc09e6c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7190, "upload_time": "2017-05-31T08:24:50", "url": "https://files.pythonhosted.org/packages/8c/7c/f6d8f39e3663d6db2b1ceb4c72bbc0b7e18d6b1fb4c66c879a0d973c42aa/lml-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "684d4a17a7f1b86cd7e59c9b589b289b", "sha256": "b01e5ce68d767aacac8c856f14a5cd01229c2bf1e17992af800dc879b349f570" }, "downloads": -1, "filename": "lml-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "684d4a17a7f1b86cd7e59c9b589b289b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10659, "upload_time": "2017-10-23T20:46:50", "url": "https://files.pythonhosted.org/packages/8a/6f/0eb22694df07072ea467effdbb8e313222a21788ea7914773f59fd2bb857/lml-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "705bec4fa6e46abe1d8b70b8cfb066b2", "sha256": "be66096d0c845bcabbbcaf772b2ba21e9cdb6e23e88b6cb32613fa8d89d535a9" }, "downloads": -1, "filename": "lml-0.0.2.tar.gz", "has_sig": false, "md5_digest": "705bec4fa6e46abe1d8b70b8cfb066b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9035, "upload_time": "2017-10-23T20:46:48", "url": "https://files.pythonhosted.org/packages/15/b6/16dd0ca1d02e13d368c132a07cab279d5487c88ebf83a6b1d365fa1ad8ed/lml-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "afff7e58c5b4bb927cf621ea54a595aa", "sha256": "bfc598ecbe509b18171d2f128cd89d98141b9f818e9897354151d094b39d577a" }, "downloads": -1, "filename": "lml-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "afff7e58c5b4bb927cf621ea54a595aa", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10292, "upload_time": "2018-06-12T22:58:08", "url": "https://files.pythonhosted.org/packages/35/29/a0a2bc0b70a2eb21d2315d45590e9bcee640cb04d48090a19c36a07edf2d/lml-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "20bf721e2d7e3c153e5fe5be13010e26", "sha256": "825feb0cfea70f071f95007d4f049cdffff31302b45fae00280420966f197005" }, "downloads": -1, "filename": "lml-0.0.3.tar.gz", "has_sig": false, "md5_digest": "20bf721e2d7e3c153e5fe5be13010e26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10595, "upload_time": "2018-06-12T22:58:06", "url": "https://files.pythonhosted.org/packages/dd/d6/6d25bd5b6892a05726cb44781c734ed387651920178f02b78e21b232ef03/lml-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "69601eae8375e9322b678c99497ed151", "sha256": "b670e3d5a92b86a1e8860612c686b941246c42f1ebcd49056a7695c8e22ecace" }, "downloads": -1, "filename": "lml-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "69601eae8375e9322b678c99497ed151", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 10544, "upload_time": "2018-08-07T21:34:31", "url": "https://files.pythonhosted.org/packages/f1/bb/265bbc788ad87d147410a8b2fe1b21fc9f745c8612ebaa4da2e707c3a6f3/lml-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2296be4a551211db78f491860d79d33", "sha256": "e76ca18822ff3bd67d4598c3a792c2e68046ebd9594b5dd34c956736916b826d" }, "downloads": -1, "filename": "lml-0.0.4.tar.gz", "has_sig": false, "md5_digest": "c2296be4a551211db78f491860d79d33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10876, "upload_time": "2018-08-07T21:34:30", "url": "https://files.pythonhosted.org/packages/88/95/bbb15990bf6cdc7aafb2af34465b6c2096f24c6f0770677fd9cb089f9b88/lml-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "e729d0754b0e20910fbed91a608a3a01", "sha256": "a9dc21f2da516131247d0bc55f59c9855f69a076d6ee3b19ad6927f721825ca9" }, "downloads": -1, "filename": "lml-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e729d0754b0e20910fbed91a608a3a01", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8726, "upload_time": "2018-11-06T19:47:30", "url": "https://files.pythonhosted.org/packages/8f/90/6bd6d83edf28829438259ab7b2b6e6c12e80983d30446d9b73b36751d849/lml-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "622f2eab72a35ad2a1210e5cfca807df", "sha256": "06d46c75c189d1eecf2eb673c4db427b58b6a8a6199f8e77509056f123aed837" }, "downloads": -1, "filename": "lml-0.0.5.tar.gz", "has_sig": false, "md5_digest": "622f2eab72a35ad2a1210e5cfca807df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11053, "upload_time": "2018-11-06T19:47:28", "url": "https://files.pythonhosted.org/packages/27/35/0fe13e576f354a81a0155b74265169f907e2b406ff7faec44370cbe3954e/lml-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "bb7892afd9958aff4178c9365ac24845", "sha256": "e29ca6078218915cb35c6b21747d0b2b91f6b800ac5565d4bceb35258215b2f7" }, "downloads": -1, "filename": "lml-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bb7892afd9958aff4178c9365ac24845", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8737, "upload_time": "2018-11-07T07:58:59", "url": "https://files.pythonhosted.org/packages/56/1d/975b6a39e303e9877d99dacf7e28d88b7118e084e2ee1d10344335c0a505/lml-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bae4edcee3f64902fa8c39a185027e80", "sha256": "d9e81ed8395c8a5bdccb79c1015a7e5a64909a2df44e5f416a390f6bf593e74e" }, "downloads": -1, "filename": "lml-0.0.6.tar.gz", "has_sig": false, "md5_digest": "bae4edcee3f64902fa8c39a185027e80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11130, "upload_time": "2018-11-07T07:58:58", "url": "https://files.pythonhosted.org/packages/18/18/5b3661cb07695d44db6ebf8a2c8e834b82f28cb5f6b6b53a86eab1976736/lml-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "fa008e06b7cbee8df538a87781e12d1e", "sha256": "ce7879f3b828c817ba26d7816c9ec8daa3493efc45db0dec25be7e7ba963d190" }, "downloads": -1, "filename": "lml-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fa008e06b7cbee8df538a87781e12d1e", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 10856, "upload_time": "2018-11-17T23:02:18", "url": "https://files.pythonhosted.org/packages/2f/33/0708f7ceeedde222a14ada679c1b8fd118b3b2325024ef75c434aefe4857/lml-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "45045df693461dec0fc3640cbf63c286", "sha256": "5dd3313bacc0ead16b2810d4a5236d5ce8f09fefb3d990a0f324708da911f5a0" }, "downloads": -1, "filename": "lml-0.0.7.tar.gz", "has_sig": false, "md5_digest": "45045df693461dec0fc3640cbf63c286", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11347, "upload_time": "2018-11-17T23:02:16", "url": "https://files.pythonhosted.org/packages/57/57/ba3cc65d24ad5f54074f0227ad45fafc631364d84b618741375c22e62617/lml-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "d51b4f4775edea974ed2617a219a1638", "sha256": "47e51bdf9666d32c4d579bed95ec1b68150853ca0c7672e55aaae9f162049d91" }, "downloads": -1, "filename": "lml-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d51b4f4775edea974ed2617a219a1638", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 9905, "upload_time": "2019-01-06T22:57:22", "url": "https://files.pythonhosted.org/packages/f0/4f/91df36bb33ccb58ffc57396ddf31e2d4e769b82e3113ea69a06f4523a4f1/lml-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a27e409256486ebf5321e32efef6caf", "sha256": "7c8053ff1d4673bc894a91ff9cf01c45083afba6710d29666e0fcfa9d6dfcae6" }, "downloads": -1, "filename": "lml-0.0.8.tar.gz", "has_sig": false, "md5_digest": "1a27e409256486ebf5321e32efef6caf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23677, "upload_time": "2019-01-06T22:57:20", "url": "https://files.pythonhosted.org/packages/4d/e3/b9cec0740b64d41e2ce41fce91833daf27ce15c676a607bf4096edc0d5bd/lml-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "ea17d1e99edcd90e85bb7086d37ccec7", "sha256": "b1bef669dc077a1075fa64b99229b6341085b3b3a98d29c66df1853cc14e6c1a" }, "downloads": -1, "filename": "lml-0.0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ea17d1e99edcd90e85bb7086d37ccec7", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 9933, "upload_time": "2019-01-07T07:32:56", "url": "https://files.pythonhosted.org/packages/90/e5/eaa5a1c8a9adbac956daa6027789ff13e30362a03cc0d010d88bd867c73f/lml-0.0.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "645ec1b37b9a0d39963aebc2efe76dc3", "sha256": "ea5ba817b4adc9e9f5c21725cd2475f912933b7e2dfdf0792aed80077154f63f" }, "downloads": -1, "filename": "lml-0.0.9.tar.gz", "has_sig": false, "md5_digest": "645ec1b37b9a0d39963aebc2efe76dc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25100, "upload_time": "2019-01-07T07:32:54", "url": "https://files.pythonhosted.org/packages/65/f3/3718c8b7b066731e8e60eaf42b1fd0d48d3539a6e7dbbdd4828be13c14ee/lml-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ea17d1e99edcd90e85bb7086d37ccec7", "sha256": "b1bef669dc077a1075fa64b99229b6341085b3b3a98d29c66df1853cc14e6c1a" }, "downloads": -1, "filename": "lml-0.0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ea17d1e99edcd90e85bb7086d37ccec7", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 9933, "upload_time": "2019-01-07T07:32:56", "url": "https://files.pythonhosted.org/packages/90/e5/eaa5a1c8a9adbac956daa6027789ff13e30362a03cc0d010d88bd867c73f/lml-0.0.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "645ec1b37b9a0d39963aebc2efe76dc3", "sha256": "ea5ba817b4adc9e9f5c21725cd2475f912933b7e2dfdf0792aed80077154f63f" }, "downloads": -1, "filename": "lml-0.0.9.tar.gz", "has_sig": false, "md5_digest": "645ec1b37b9a0d39963aebc2efe76dc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25100, "upload_time": "2019-01-07T07:32:54", "url": "https://files.pythonhosted.org/packages/65/f3/3718c8b7b066731e8e60eaf42b1fd0d48d3539a6e7dbbdd4828be13c14ee/lml-0.0.9.tar.gz" } ] }