{ "info": { "author": "Stephen Moore", "author_email": "delfick755@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "Project helpers\n===============\n\nThis is a collection of code that I use in nearly all my projects:\n\n* Mainline helper\n* Custom python exception class\n* Logging helpers\n* Option merging\n* Validation and Normalisation of data\n* Module addon system\n\nDocumentation can be found at https://delfick-project.readthedocs.io/en/latest/\n\nChangelog\n---------\n\n0.6.0 - 14 October 2019\n * Ensure that as_dict on a dictobj or MergedOptions works if we have objects\n with an as_dict method that doesn't take in any parameters.\n\n0.5.2 - 3 October 2019\n * Added an option --logging-handler-file for saying where logs should go to.\n This essentially defaults to sys.stderr\n\n0.5.1 - 18 September 2019\n * Removed six import I didn't notice in migration\n\n0.5 - 18 September 2019\n Moved the following projects into here\n\n * https://github.com/delfick/delfick_app\n * https://github.com/delfick/delfick_error\n * https://github.com/delfick/delfick_logging\n * https://github.com/delfick/option_merge\n * https://github.com/delfick/input_algorithms\n * https://github.com/delfick/layerz\n * https://github.com/delfick/option_merge_addons\n\n This is mostly a drop in replacement to including these projects\n\n Changes include:\n\n * Dropped support for python2\n * delfick_app is now under delfick_project.app\n\n * No boto integration in delfick_app\n * No command_output function in delfick_app\n * No DelayedFileType argparse helper as that's only necessary in python2.6\n * Added OptionalFileType that returns None if the file doesn't exist\n\n * delfick_error is now under delfick_project.errors and\n delfick_project.errors_pytest\n * delfick_logging is now under delfick_project.logging.\n\n * rainbow_logging_handler is now an optional dependency. If you want\n colourful logs then just install 'rainbow_logging_handler==2.2.2' in\n your python environment\n\n * option_merge is now under delfick_project.option_merge\n\n * The MergedOptionStringFormatter can be used as is and doesn't require\n being a subclass. This is because I can use DelfickError to implement\n the missing parts that had to be done by the user\n * The MergedOptionStringFormatter makes it easier to specify custom format\n specs. If you want a custom spec to not be formatted then specify it in\n a class attribute on your Formatter as passthrough_format_specs (which\n should be a list of strings). And just implement special_format_field. \n * The MergedOptionStringFormatter ``__init__`` has changed signature and\n is just ``__init__(all_options, value, chain=None)``. To mimic the\n option_path option from before say something like\n ``MyFormatter(all_options, \"{path}\")`` instead of\n ``MyFormatter(all_options, \"path\")``\n\n * input_algorithms is now under delfick_project.norms\n\n * many_item_formatted_spec is now under spec_base\n * you can now say ``from delfick_project.norms import sb`` instead\n of ``from input_algorithms import spec_base as sb``\n * dictobj no longer has a dependency on the namedlist project\n\n * the ``option_merge_addons.option_merge_addon_hook`` is now\n ``from delfick_project.addons import addon_hook`` and the default namespace\n it looks for is now ``delfick_project.addons`` rather than\n ``option_merge.addons``\n\n * Resolving addons with delfick_project.addons will no longer intercept\n exceptions with a BadImport exception.\n\n * collector.register_converters now has a different signature. You just pass\n in a dictionary of ``{key: spec}`` where key is either a string or tuple\n of strings. So you don't need to tell it about the Meta or NotSpecified\n objects.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/delfick/delfick_project", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "delfick-project", "package_url": "https://pypi.org/project/delfick-project/", "platform": "", "project_url": "https://pypi.org/project/delfick-project/", "project_urls": { "Homepage": "https://github.com/delfick/delfick_project" }, "release_url": "https://pypi.org/project/delfick-project/0.6.0/", "requires_dist": [ "pytest ; extra == 'tests'", "noseOfYeti (==1.9.1) ; extra == 'tests'", "rainbow-logging-handler (==2.2.2) ; extra == 'tests'" ], "requires_python": ">= 3.4", "summary": "Common code I use in all my projects", "version": "0.6.0" }, "last_serial": 5969338, "releases": { "0.5": [ { "comment_text": "", "digests": { "md5": "ab4108cad4d9233fd485272396bfa0e5", "sha256": "9b184a53ca955301c4bc220611ec001528d3ec2f59d6c971b8ee2771c2515452" }, "downloads": -1, "filename": "delfick_project-0.5.tar.gz", "has_sig": false, "md5_digest": "ab4108cad4d9233fd485272396bfa0e5", "packagetype": "sdist", "python_version": "source", "requires_python": ">= 3.4", "size": 55619, "upload_time": "2019-09-18T00:56:47", "url": "https://files.pythonhosted.org/packages/66/d8/e377d957fd94ffd7f5833e344be5907730aec769b1859e4754c144bd6089/delfick_project-0.5.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "6a805cc793750106ff7bd13d830f00dc", "sha256": "55164cf20a2b3fe2acde65ca0888485bb1f12bdba9297c60379bc7296652738c" }, "downloads": -1, "filename": "delfick_project-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6a805cc793750106ff7bd13d830f00dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">= 3.4", "size": 67166, "upload_time": "2019-10-02T05:11:16", "url": "https://files.pythonhosted.org/packages/7b/4a/1474dd6a8bfdc588ea5f791a773a9d6fdcf89cef67d3754a618ca7303c2a/delfick_project-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2b68623fbdc4adccc0d10c0c2c1d9bc", "sha256": "3c0df42488e756c36af5f076510b40a8f6872ed9bdc496c50ea25edb9a04e060" }, "downloads": -1, "filename": "delfick_project-0.5.1.tar.gz", "has_sig": false, "md5_digest": "b2b68623fbdc4adccc0d10c0c2c1d9bc", "packagetype": "sdist", "python_version": "source", "requires_python": ">= 3.4", "size": 55453, "upload_time": "2019-09-18T06:27:45", "url": "https://files.pythonhosted.org/packages/21/6b/7c3e27587310769a586dc1ff479efb9c3dc4f61bacad6310ab8514fc1912/delfick_project-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "3d06dd43cd13ba6bb62f3624fd124a81", "sha256": "f58df925f6f5e8efe527c8bd54194c52fb4611ba93782990edf9c235aae88562" }, "downloads": -1, "filename": "delfick_project-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3d06dd43cd13ba6bb62f3624fd124a81", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">= 3.4", "size": 67281, "upload_time": "2019-10-03T13:14:56", "url": "https://files.pythonhosted.org/packages/49/4d/8e669822b261ebf8eaaf6f7b18715b2f98c5016261019a22fa184674585d/delfick_project-0.5.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7b6a06f5b712481572ec1cb0663113c7", "sha256": "4a8f6190a7da7808cd14c56ee838bcbe27d6407ee5c6b582c0edc8637ff3b400" }, "downloads": -1, "filename": "delfick_project-0.5.2.tar.gz", "has_sig": false, "md5_digest": "7b6a06f5b712481572ec1cb0663113c7", "packagetype": "sdist", "python_version": "source", "requires_python": ">= 3.4", "size": 55643, "upload_time": "2019-10-03T13:14:59", "url": "https://files.pythonhosted.org/packages/9a/24/a5c670a3f1f51845605ae5a056494a6e49b17189614dc0e1bcec2d6a331f/delfick_project-0.5.2.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "98c1a51df9fa0958b92d06ab4576fd07", "sha256": "6e29d9b55ecc7df17f454ddcccc2bc809ffefc3811548ec93ddcc2f585f2ed4e" }, "downloads": -1, "filename": "delfick_project-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "98c1a51df9fa0958b92d06ab4576fd07", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">= 3.4", "size": 67629, "upload_time": "2019-10-14T01:03:11", "url": "https://files.pythonhosted.org/packages/91/e3/8733bb6923b28531ce42493060bc2df2b7b44335d4b8971ba99d99281608/delfick_project-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17ddd2272cb1e712aace1cb2a908cfe7", "sha256": "ecc6f0316cc6ec3e55fbfcfa6630557a7f6af3f5135427c35a6d29ae5302cf98" }, "downloads": -1, "filename": "delfick_project-0.6.0.tar.gz", "has_sig": false, "md5_digest": "17ddd2272cb1e712aace1cb2a908cfe7", "packagetype": "sdist", "python_version": "source", "requires_python": ">= 3.4", "size": 56072, "upload_time": "2019-10-14T01:03:16", "url": "https://files.pythonhosted.org/packages/a4/3a/194933c2313af44e079b11d76a52e08ae460e970407b13474095ffcf855e/delfick_project-0.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "98c1a51df9fa0958b92d06ab4576fd07", "sha256": "6e29d9b55ecc7df17f454ddcccc2bc809ffefc3811548ec93ddcc2f585f2ed4e" }, "downloads": -1, "filename": "delfick_project-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "98c1a51df9fa0958b92d06ab4576fd07", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">= 3.4", "size": 67629, "upload_time": "2019-10-14T01:03:11", "url": "https://files.pythonhosted.org/packages/91/e3/8733bb6923b28531ce42493060bc2df2b7b44335d4b8971ba99d99281608/delfick_project-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17ddd2272cb1e712aace1cb2a908cfe7", "sha256": "ecc6f0316cc6ec3e55fbfcfa6630557a7f6af3f5135427c35a6d29ae5302cf98" }, "downloads": -1, "filename": "delfick_project-0.6.0.tar.gz", "has_sig": false, "md5_digest": "17ddd2272cb1e712aace1cb2a908cfe7", "packagetype": "sdist", "python_version": "source", "requires_python": ">= 3.4", "size": 56072, "upload_time": "2019-10-14T01:03:16", "url": "https://files.pythonhosted.org/packages/a4/3a/194933c2313af44e079b11d76a52e08ae460e970407b13474095ffcf855e/delfick_project-0.6.0.tar.gz" } ] }