{ "info": { "author": "Tyler Green", "author_email": "greent@tyleragreen.com", "bugtrack_url": null, "classifiers": [], "description": "# python-interfaces\n[![CircleCI](https://circleci.com/gh/tyleragreen/python-interfaces.svg?style=svg)](https://circleci.com/gh/tyleragreen/python-interfaces)\n## Installation\n```\npip install python-interfaces\n```\n## Usage\n```\nfrom interface import interface\n\nclass Iterable:\n def be_iterable(self):\n pass\n\n@interface(Iterable)\nclass Foo:\n def __init__(self):\n pass\n\n# raises InterfaceException\n```\n## Local Development\n```\ngit clone https://github.com/tyleragreen/python-interfaces.git && cd python-interfaces\nvirtualenv ~/.env/interface\nsource ~/.env/interface/bin/activate\n\npip install -r requirements_dev.txt\n\n# Since the tests live outside the package, we install the package in editable mode\npip install -e .\npy.test\n```\n## Other Ideas\n1. Support [dunder](https://dbader.org/blog/meaning-of-underscores-in-python) methods\n1. Enforce method [signatures](https://docs.python.org/3.6/library/inspect.html#inspect.signature)\n1. Require interface methods to be empty/abstract/`pass`-only\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://github.com/tyleragreen/python-interfaces", "keywords": "", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "python-interfaces", "package_url": "https://pypi.org/project/python-interfaces/", "platform": "", "project_url": "https://pypi.org/project/python-interfaces/", "project_urls": { "Homepage": "https://github.com/tyleragreen/python-interfaces" }, "release_url": "https://pypi.org/project/python-interfaces/0.1.2/", "requires_dist": null, "requires_python": "", "summary": "Bringing interfaces to Python.", "version": "0.1.2" }, "last_serial": 4553023, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "e92229afb9f399923014b7da6c918898", "sha256": "0941d5bd74f4674a6a6f0c519e45fb4e4010facb0d6891f51e7a25d85742f7b6" }, "downloads": -1, "filename": "python_interfaces-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e92229afb9f399923014b7da6c918898", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3642, "upload_time": "2018-12-02T18:41:40", "url": "https://files.pythonhosted.org/packages/c1/9e/b6f00703b94487553bac1a58da549c80a7be6ce515b84ecd344bb579808a/python_interfaces-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eaf63472ac3708f90a73d6d16f995ccd", "sha256": "ff5abe43b0446ed99665c678312843612ffef7cafbfaa7763a8b99e4d4558a75" }, "downloads": -1, "filename": "python-interfaces-0.1.1.tar.gz", "has_sig": false, "md5_digest": "eaf63472ac3708f90a73d6d16f995ccd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2043, "upload_time": "2018-12-02T18:41:43", "url": "https://files.pythonhosted.org/packages/cb/97/46ca294e97a6d5c2d8727f7fbf65bd1f705243eb4a4747c9b35c6cc5cd86/python-interfaces-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "0eac8afd8d13f89c4d0b0fc27dced186", "sha256": "61d2ffdecaff2ffd7166b654bb6ee667823fe4008dee6d23a19d4d5a51242e2e" }, "downloads": -1, "filename": "python_interfaces-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "0eac8afd8d13f89c4d0b0fc27dced186", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3641, "upload_time": "2018-12-02T18:46:44", "url": "https://files.pythonhosted.org/packages/67/14/62c06ba8b8c33e23f361ff28cbe95bf1ea960f8c69fa4edf643c74947bb8/python_interfaces-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5d2f2d1c23d3543dbcb19a5c81e558e0", "sha256": "0b809d02d9b9ee635cd1f7088a41184aac0b4ffd8c63424da39c937122972b26" }, "downloads": -1, "filename": "python-interfaces-0.1.2.tar.gz", "has_sig": false, "md5_digest": "5d2f2d1c23d3543dbcb19a5c81e558e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2035, "upload_time": "2018-12-02T18:46:46", "url": "https://files.pythonhosted.org/packages/a8/64/bd3ba8648283efa8b403716f82e0275f5315fd69e65f94e631e6f56dca04/python-interfaces-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0eac8afd8d13f89c4d0b0fc27dced186", "sha256": "61d2ffdecaff2ffd7166b654bb6ee667823fe4008dee6d23a19d4d5a51242e2e" }, "downloads": -1, "filename": "python_interfaces-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "0eac8afd8d13f89c4d0b0fc27dced186", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3641, "upload_time": "2018-12-02T18:46:44", "url": "https://files.pythonhosted.org/packages/67/14/62c06ba8b8c33e23f361ff28cbe95bf1ea960f8c69fa4edf643c74947bb8/python_interfaces-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5d2f2d1c23d3543dbcb19a5c81e558e0", "sha256": "0b809d02d9b9ee635cd1f7088a41184aac0b4ffd8c63424da39c937122972b26" }, "downloads": -1, "filename": "python-interfaces-0.1.2.tar.gz", "has_sig": false, "md5_digest": "5d2f2d1c23d3543dbcb19a5c81e558e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2035, "upload_time": "2018-12-02T18:46:46", "url": "https://files.pythonhosted.org/packages/a8/64/bd3ba8648283efa8b403716f82e0275f5315fd69e65f94e631e6f56dca04/python-interfaces-0.1.2.tar.gz" } ] }