{ "info": { "author": "Tobias Herp", "author_email": "tobias.herp@visaplan.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Natural Language :: German", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7" ], "description": ".. This README is meant for consumption by humans and pypi. Pypi can render rst files so please do not use Sphinx features.\n If you want to learn more about writing documentation, please check out: http://docs.plone.org/about/documentation_styleguide.html\n This text does not appear on pypi or github. It is a comment.\n\n==============\nvisaplan.tools\n==============\n\nThis is a collection of utility modules for Python projects.\n\nFeatures\n--------\n\n- ``buildout`` module, for ``buildout``-built projects:\n\n Function ``checkPathForPackage`` to check a given package against a versions whitelist.\n Useful if you like to constain the versions of that package without actually requiring it.\n\n- ``coding`` module:\n\n Factory functions to create ``safe_encode`` resp. ``safe_decode`` functions as needed\n\n- ``classes`` module:\n\n Several simple but useful classes derived from Python dicts, e.g. ``Mirror`` and ``Proxy``\n\n- ``debug`` module:\n\n - ``trace_this`` decorator\n\n- ``dicts`` module:\n\n - several tools to work with standard dictionaries\n\n- ``files`` module:\n\n - functions related to files; for now ``make_mtime_checker``\n\n- ``html`` module:\n\n - ``HtmlEntityProxy`` - a dict which returns unicode characters when given a named HTML entity\n\n- ``http`` module:\n\n - ``extract_hostname`` (using ``url.split`` and raising ``ValueError``)\n\n- ``lands0`` module:\n\n - several tools to work with *lists and strings*\n\n- ``minifuncs`` module:\n\n - very small functions, for some cases where functions are used as arguments\n\n- ``profile`` module:\n\n - a ``StopWatch`` context manager and ``@profile`` decorator\n\n- ``sequences`` module:\n\n - tools for sequences, e.g. ``inject_indexes``\n\n- ``times`` module:\n\n - functions related to date and/or time calculations\n\n\nDocumentation\n-------------\n\nThe modules are documented by doctests.\nApart from this, we don't have real user documentation yet (sorry).\n\n\nInstallation\n------------\n\nSimply install visaplan.tools by using pip::\n\n pip install visaplan.tools\n\nor by adding it to your buildout::\n\n [buildout]\n\n ...\n\n eggs =\n visaplan.tools\n\nand then running ``bin/buildout``\n\n\nContribute\n----------\n\n- Issue Tracker: https://github.com/visaplan/visaplan.tools/issues\n- Source Code: https://github.com/visaplan/visaplan.tools\n\n\nSupport\n-------\n\nIf you are having issues, please let us know;\nplease use the issue tracker mentioned above.\n\n\nLicense\n-------\n\nThe project is licensed under the GNU General Public License v2 (GPLv2).\n\n\nContributors\n============\n\n- Tobias Herp, tobias.herp@visaplan.com\n\n\nChangelog\n=========\n\n\n1.2.3 (2019-01-30)\n------------------\n\n- new function ``update_dict`` in ``dicts`` module\n (which takes a ``deletions`` list argument)\n\n- ``buildout.extract_package_and_version`` supports egg specs with\n subpaths as well (child of an ``/eggs/`` directory)\n\n- ``buildout.checkPathForPackage`` logs the invalid package entries\n if the package in question could not be found\n\n- ``lands0.groupstring`` supports ``cumulate`` option (default: False)\n [tobiasherp]\n\n\n1.2.2 (2018-11-08)\n------------------\n\n- new module ``buildout`` for use in buildout-built projects:\n use the ``checkPathForPackage`` function to check an installed package\n against a versions whitelist\n [tobiasherp]\n\n\n1.2.1 (2018-09-17)\n------------------\n\n- new module ``dates``:\n\n - ``make_date_parser`` factory to create a ``parse_date`` function\n which understands multiple date formats\n\n - ``make_date_formatter`` factory to create a function which formats date,\n given as a ``datetime`` object or a tuple of ``int``\n\n- new module ``profile``:\n\n - ``StopWatch`` context manager and ``@profile`` decorator\n\n- new module ``mock``:\n\n - a few small classes for use in doctests\n\n - the same module as ``visaplan.plone.tools.mock``\n\n- module ``debug``:\n\n - new decorators ``trace_this``, ``log_result``\n\n - new function ``print_indented``\n\n - new factory function ``make_sleeper``\n\n- module ``dicts``:\n\n - new function ``make_key_injector``\n\n- module ``minifuncs``:\n\n - new function ``translate_dummy``\n\n- module ``sequences``:\n\n - new function ``nocomment_split``\n\n - new function ``columns``\n [tobiasherp]\n\n- module ``lands0``:\n\n - new function ``join_stripped``\n\n- License changed to GPLv2\n\n\n1.2 (2018-07-11)\n----------------\n\n- breaking changes:\n\n - ``classes``: Proxy is now a factory rather than a class\n\n- modules ``debug``, ``dicts``, ``lands0``, ``minifuncs``\n [tobiasherp]\n\n\n1.1 (2018-06-12)\n----------------\n\n- modules ``sequences``, ``times``, ``files``\n- Minor Bugfixes\n [tobiasherp]\n\n\n1.0 (2018-06-11)\n----------------\n\n- Initial release, including modules ``classes``, ``html``, ``http`` and ``coding``\n [tobiasherp]", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pypi.org/project/visaplan.tools", "keywords": "", "license": "GPL version 2", "maintainer": "", "maintainer_email": "", "name": "visaplan.tools", "package_url": "https://pypi.org/project/visaplan.tools/", "platform": "", "project_url": "https://pypi.org/project/visaplan.tools/", "project_urls": { "Homepage": "https://pypi.org/project/visaplan.tools" }, "release_url": "https://pypi.org/project/visaplan.tools/1.2.3/", "requires_dist": null, "requires_python": "", "summary": "General Python tools", "version": "1.2.3" }, "last_serial": 4760578, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "d358e4f10ec573f1a934eaa9a15a6298", "sha256": "e64ec96e145fe2cb36fec36453d876046d86e778e0063ac1256a4ae79bdc3eba" }, "downloads": -1, "filename": "visaplan.tools-1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "d358e4f10ec573f1a934eaa9a15a6298", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 16013, "upload_time": "2018-06-11T16:10:45", "url": "https://files.pythonhosted.org/packages/77/9d/409c273444cb8d491a0fc8d8176444892c6a70f6ce3886c9f17025ced778/visaplan.tools-1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e7b9e1a556fb6ccb6a5662869ba3f87", "sha256": "2963edf873a2fa08eedd820b2bd81b6d820e658aa66d991e62188848842197b1" }, "downloads": -1, "filename": "visaplan.tools-1.0.tar.gz", "has_sig": false, "md5_digest": "3e7b9e1a556fb6ccb6a5662869ba3f87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21075, "upload_time": "2018-06-11T16:10:46", "url": "https://files.pythonhosted.org/packages/b8/a3/1c7c7d16f0734cea6d49371a0c7c5857755c4f233b95c3189b8df5d6c149/visaplan.tools-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "6db98ae777b927d58f2f0f85e04fb237", "sha256": "357c9243738448a464500654365b68797c511b8969360a1a8078e351c5e0d645" }, "downloads": -1, "filename": "visaplan.tools-1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "6db98ae777b927d58f2f0f85e04fb237", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 21410, "upload_time": "2018-06-12T14:28:35", "url": "https://files.pythonhosted.org/packages/6a/5b/af8e1c7d39efd3aa0ce53e22f8c56d3ffc5b4d6dac3dea840075e0edbf7c/visaplan.tools-1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e302ea894e90244b1799571210648d81", "sha256": "92c43c068b9600840d53db80fb4119c5575815d2d2b00e37813f916d9f7050ee" }, "downloads": -1, "filename": "visaplan.tools-1.1.tar.gz", "has_sig": false, "md5_digest": "e302ea894e90244b1799571210648d81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24917, "upload_time": "2018-06-12T14:28:36", "url": "https://files.pythonhosted.org/packages/a8/f8/6f01f51e13b5fb0becb5294b54ce0bf53ff780ad6c3a4ad4a9d1bf4434ed/visaplan.tools-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "dcd0b4effe86209a1f3daf904ccdbab3", "sha256": "4c239bd56ea4241463e0533b9709340a5ac72d645cb84aa8a55094fad721e3f3" }, "downloads": -1, "filename": "visaplan.tools-1.2.tar.gz", "has_sig": false, "md5_digest": "dcd0b4effe86209a1f3daf904ccdbab3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36344, "upload_time": "2018-07-11T16:01:50", "url": "https://files.pythonhosted.org/packages/df/8b/4ee6dcbc665f353e04bdc3c35f3440bb78c95ab207b57a871ce31696d50e/visaplan.tools-1.2.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "c937d65ec1a882ea0564fbc2ef6fdf66", "sha256": "d318f3a0718296e1aed2185d0bd9e41fe6eb9bd275d6d25c07f4ae2a00b03708" }, "downloads": -1, "filename": "visaplan.tools-1.2.1.tar.gz", "has_sig": false, "md5_digest": "c937d65ec1a882ea0564fbc2ef6fdf66", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48561, "upload_time": "2018-09-17T10:59:25", "url": "https://files.pythonhosted.org/packages/6b/32/66a4f3aec050c3ee6de6a48b933dc798cb4f5d988edadb838f26b75b492f/visaplan.tools-1.2.1.tar.gz" } ], "1.2.1.dev1": [ { "comment_text": "", "digests": { "md5": "dd7b73b18edf5834bf359951647d1bd5", "sha256": "e747a823ce0e43f588b51f4932dbee9c2fca1fa898ca6c54fb6319b2f3590fc5" }, "downloads": -1, "filename": "visaplan.tools-1.2.1.dev1.tar.gz", "has_sig": false, "md5_digest": "dd7b73b18edf5834bf359951647d1bd5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36629, "upload_time": "2018-07-24T14:04:54", "url": "https://files.pythonhosted.org/packages/d5/ac/14725243b9f5e3e8b1a31e7826de9a53e24f8f751f4c0079ab4fb7147311/visaplan.tools-1.2.1.dev1.tar.gz" } ], "1.2.1.dev2": [ { "comment_text": "", "digests": { "md5": "a250d86fe1fcf9efeea23e4c34a80942", "sha256": "71e3f51b361cb3bb84cf93878bba7696ea1d4a1591b344c8b56ffbc4fa36e25b" }, "downloads": -1, "filename": "visaplan.tools-1.2.1.dev2.tar.gz", "has_sig": false, "md5_digest": "a250d86fe1fcf9efeea23e4c34a80942", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39280, "upload_time": "2018-08-06T11:34:36", "url": "https://files.pythonhosted.org/packages/12/7e/50de698a51ce34defea358d76cd3c66b0b31b245d9fff53667b912198ee7/visaplan.tools-1.2.1.dev2.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "6984ef702700ec37a8623c8d4581773e", "sha256": "f977c953c9bd3fa9f6154aeaa4b624678724ebdf310336951512c672f0bc1a6f" }, "downloads": -1, "filename": "visaplan.tools-1.2.2.tar.gz", "has_sig": false, "md5_digest": "6984ef702700ec37a8623c8d4581773e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52651, "upload_time": "2018-11-08T17:40:45", "url": "https://files.pythonhosted.org/packages/72/2c/46d2a8fdefc557edee67dff721f5dc8a3bb68c7fcdf0a7790cd17b7d6722/visaplan.tools-1.2.2.tar.gz" } ], "1.2.2.dev1": [ { "comment_text": "", "digests": { "md5": "32a88acd2b85e1274659d91113117ac1", "sha256": "a9f1749196456e1a0b245aac593fb33258ca9f0bcf942bda376927721541fa6e" }, "downloads": -1, "filename": "visaplan.tools-1.2.2.dev1.tar.gz", "has_sig": false, "md5_digest": "32a88acd2b85e1274659d91113117ac1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52598, "upload_time": "2018-11-08T17:15:46", "url": "https://files.pythonhosted.org/packages/03/c0/0411f4e1cdc05bf14f7dcb3db577026f7005bfcf9d72773967730ded9255/visaplan.tools-1.2.2.dev1.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "4124470a6207921e40aed529c8b4343d", "sha256": "e59709a3965ad1efb07710678450f6a04818c947cb821838495a017632a9ead7" }, "downloads": -1, "filename": "visaplan.tools-1.2.3.tar.gz", "has_sig": false, "md5_digest": "4124470a6207921e40aed529c8b4343d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53633, "upload_time": "2019-01-30T16:40:01", "url": "https://files.pythonhosted.org/packages/d5/c4/de58af454b84405563bd9bf66de3eef313c0553c5538243ab3c581da3c93/visaplan.tools-1.2.3.tar.gz" } ], "1.2.dev3": [ { "comment_text": "", "digests": { "md5": "ce7ae3bcb322aac79accb3ad06bba07b", "sha256": "744d6d23f86e5e2d9c6e69b862bd8e39048ec7e55654f702a14c71aae16a0a96" }, "downloads": -1, "filename": "visaplan.tools-1.2.dev3.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "ce7ae3bcb322aac79accb3ad06bba07b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59453, "upload_time": "2018-07-10T14:44:28", "url": "https://files.pythonhosted.org/packages/b4/c3/27e7133c8c5b10b37b1ba5f1a8df92a9a04128f6939f743f5f83cdbf010d/visaplan.tools-1.2.dev3.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "cb8c2c7cc0942de397a17dc7ee1d1a40", "sha256": "504803e417f08c560c0f40ca8625b871d9220bdd8e16d1d4587012c85e6a24a2" }, "downloads": -1, "filename": "visaplan.tools-1.2.dev3-py2.7.egg", "has_sig": false, "md5_digest": "cb8c2c7cc0942de397a17dc7ee1d1a40", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 72544, "upload_time": "2018-07-10T14:48:27", "url": "https://files.pythonhosted.org/packages/54/b1/4e08891c19fefd460efdfdb5c42025342684d7a32016590eee049195fb6d/visaplan.tools-1.2.dev3-py2.7.egg" } ], "1.2.dev4": [ { "comment_text": "", "digests": { "md5": "2a0b97c7f44ca84d23aabf4dfa9e590e", "sha256": "7d7b7e044ed75c458c2bbda1128d9fcf2a89f920fc238744abb61a3fdd8a4974" }, "downloads": -1, "filename": "visaplan.tools-1.2.dev4-py2.7.egg", "has_sig": false, "md5_digest": "2a0b97c7f44ca84d23aabf4dfa9e590e", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 70086, "upload_time": "2018-07-10T15:02:04", "url": "https://files.pythonhosted.org/packages/92/6d/4407c65417f733b82b01a0b4dd09a1f1edaff8ee5eee8007172a2b3c49ed/visaplan.tools-1.2.dev4-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "3c1e2d9222fe190a2bc79a82efaa42f5", "sha256": "1f6f1ff1e7c5bbe7798c38e6e1c66260df289ba8a76aa7baa3dea0b1722bbb77" }, "downloads": -1, "filename": "visaplan.tools-1.2.dev4.tar.gz", "has_sig": false, "md5_digest": "3c1e2d9222fe190a2bc79a82efaa42f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36266, "upload_time": "2018-07-10T15:02:06", "url": "https://files.pythonhosted.org/packages/56/78/a3afb8efd221ed442f2fd22f0c03b968e25be6a22d28297688b0f90b99fb/visaplan.tools-1.2.dev4.tar.gz" } ], "1.2.dev5": [ { "comment_text": "", "digests": { "md5": "b9a992075dd9fd9714725b801f369f6f", "sha256": "2d3039713564452e2dbbce9598cc15dc09e2a5e292376755d542e75345ecf32c" }, "downloads": -1, "filename": "visaplan.tools-1.2.dev5.tar.gz", "has_sig": false, "md5_digest": "b9a992075dd9fd9714725b801f369f6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36474, "upload_time": "2018-07-10T16:28:16", "url": "https://files.pythonhosted.org/packages/89/92/71483278ec8613da1ac030773ae4a3327c24f3eba344f46e46cb360f3a37/visaplan.tools-1.2.dev5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4124470a6207921e40aed529c8b4343d", "sha256": "e59709a3965ad1efb07710678450f6a04818c947cb821838495a017632a9ead7" }, "downloads": -1, "filename": "visaplan.tools-1.2.3.tar.gz", "has_sig": false, "md5_digest": "4124470a6207921e40aed529c8b4343d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53633, "upload_time": "2019-01-30T16:40:01", "url": "https://files.pythonhosted.org/packages/d5/c4/de58af454b84405563bd9bf66de3eef313c0553c5538243ab3c581da3c93/visaplan.tools-1.2.3.tar.gz" } ] }