{ "info": { "author": "R\u00e9my Sanchez", "author_email": "remy.sanchez@hyperthese.net", "bugtrack_url": null, "classifiers": [ "License :: Other/Proprietary License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9" ], "description": "# TypeFit\n\n[![Read the Docs](https://img.shields.io/readthedocs/typefit)](http://typefit.rtfd.io/)\n[![Build Status](https://img.shields.io/travis/Xowap/typefit)](https://travis-ci.org/Xowap/typefit)\n[![LGTM Grade](https://img.shields.io/lgtm/grade/python/github/Xowap/typefit)](https://lgtm.com/projects/g/Xowap/typefit/)\n\nTyping annotations make Python awesome, however it's complicated to keep your\ndata annotated when it comes from external sources like APIs. The goal of\nTypefit is to help you map that external data into type-annotated native Python\nobjects.\n\n```python\nfrom typefit import api\nfrom typing import NamedTuple, Text\n\n\nclass Item(NamedTuple):\n id: int\n title: Text\n\n\nclass HackerNews(api.SyncClient):\n BASE_URL = \"https://hacker-news.firebaseio.com/v0/\"\n\n @api.get(\"item/{item_id}.json\")\n def get_item(self, item_id: int) -> Item:\n pass\n\nstory = HackerNews().get_item(42)\nprint(story.title)\n# An alternative to VC: "Selling In"\n```\n\nThis is the full example of a Hacker News API client. Its functionality is\nlimited but in 14 lines counting white space you can build a type-safe client\nfor Hacker News. You'll find a [full example](example/typefit_hn) attached if\nyou're interested.\n\n\n## Documentation\n\n[\u2728 **Documentation is there** \u2728](http://typefit.rtfd.io/)\n\n## Licence\n\nThis library is provided under the terms of the [WTFPL](./LICENSE).\n\nIf you find it useful, you can have a look at the\n[contributors](https://github.com/Xowap/typefit/graphs/contributors) page to\nknow who helped.\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/Xowap/typefit/", "keywords": "typing,json,api", "license": "WTFPL", "maintainer": "", "maintainer_email": "", "name": "typefit", "package_url": "https://pypi.org/project/typefit/", "platform": null, "project_url": "https://pypi.org/project/typefit/", "project_urls": { "Homepage": "https://github.com/Xowap/typefit/", "Repository": "https://github.com/Xowap/typefit/" }, "release_url": "https://pypi.org/project/typefit/0.4.0/", "requires_dist": [ "pendulum (<3.0.0)", "httpx (>=0.22,<2.0.0)", "pygments (<3.0.0)" ], "requires_python": ">=3.7,<4.0", "summary": "Fits JSON values into Python type-anotated objects", "version": "0.4.0", "yanked": false, "yanked_reason": null }, "last_serial": 13439675, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "143f1a6efc86750419fc7b086e852bc5", "sha256": "e043292ab503cf8c1aff2bbe78d066b2b5b9f50926ee8b4bcc0e01bffb3af26a" }, "downloads": -1, "filename": "typefit-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "143f1a6efc86750419fc7b086e852bc5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 10101, "upload_time": "2019-10-26T20:29:44", "upload_time_iso_8601": "2019-10-26T20:29:44.863682Z", "url": "https://files.pythonhosted.org/packages/4e/ce/a373a4e18d4af7d8a645f635f01d48e6c55eef3dcaa02647be51c0c42004/typefit-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "605ddcd90d4e8a07c7aa6deab9261780", "sha256": "05b67096bbd73619780603172148f5a93dec948c99a430720153371ea9f3c1cc" }, "downloads": -1, "filename": "typefit-0.1.0.tar.gz", "has_sig": false, "md5_digest": "605ddcd90d4e8a07c7aa6deab9261780", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 9585, "upload_time": "2019-10-26T20:29:47", "upload_time_iso_8601": "2019-10-26T20:29:47.277794Z", "url": "https://files.pythonhosted.org/packages/c3/b8/2189e4e0486dfc88da20e7d12173d38bc5fd0030fcca3c4dbee655778e48/typefit-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d0143be66a207dd9141f3ad40415210b", "sha256": "c4c6c29d182f63076e9e9c093de11df761b165f462ea3285d0e1c1601b51d1f2" }, "downloads": -1, "filename": "typefit-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d0143be66a207dd9141f3ad40415210b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 10167, "upload_time": "2020-02-07T15:03:39", "upload_time_iso_8601": "2020-02-07T15:03:39.482724Z", "url": "https://files.pythonhosted.org/packages/8a/bb/bdb2584cf360306b53ba0fc04ae2fb535607896aae432425bcf6e840131e/typefit-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1139886bfc2fb0a6ddcc20c1d9fb6c9e", "sha256": "ef2d31f590f38f47d83451aaf2fc8f3a10e771528796ed96cd4827937371d868" }, "downloads": -1, "filename": "typefit-0.1.1.tar.gz", "has_sig": false, "md5_digest": "1139886bfc2fb0a6ddcc20c1d9fb6c9e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 9772, "upload_time": "2020-02-07T15:03:41", "upload_time_iso_8601": "2020-02-07T15:03:41.213467Z", "url": "https://files.pythonhosted.org/packages/fd/bf/491d2d51414ebbe7b9dd99cd2b766aa85433b008d219ec3c97b3f1ff9a88/typefit-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "27ee424c855c7af54e4d9e089a02879e", "sha256": "fa1f43c48ce3ef7c0378cbcd310c0ae4008cf448d723d29e37538b409990d742" }, "downloads": -1, "filename": "typefit-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "27ee424c855c7af54e4d9e089a02879e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 14011, "upload_time": "2020-04-08T20:09:17", "upload_time_iso_8601": "2020-04-08T20:09:17.186020Z", "url": "https://files.pythonhosted.org/packages/d9/75/e5d555a37c420a0df90537557508313c3e0b750400500ca5c3b88d22dfb3/typefit-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "762d583ce3c04e2f42d954ba18cfc0e4", "sha256": "734af1f565ddb455ba805484f62fe51edab29a293ca3db4090be3620b7831609" }, "downloads": -1, "filename": "typefit-0.2.0.tar.gz", "has_sig": false, "md5_digest": "762d583ce3c04e2f42d954ba18cfc0e4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 12815, "upload_time": "2020-04-08T20:09:18", "upload_time_iso_8601": "2020-04-08T20:09:18.571305Z", "url": "https://files.pythonhosted.org/packages/e0/97/bc67caae633ad2c5a35a3d80033cdf31cf0aa96f8484440ae671dc02536b/typefit-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "79c7b3eb154151a0548ad8087831c06a", "sha256": "4be9f4db47599c215939d9e3124e01d196608e5f1291f947e4e3ecc2c68b3e48" }, "downloads": -1, "filename": "typefit-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "79c7b3eb154151a0548ad8087831c06a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 23000, "upload_time": "2020-04-30T13:15:35", "upload_time_iso_8601": "2020-04-30T13:15:35.221498Z", "url": "https://files.pythonhosted.org/packages/78/c0/06023bfd6c35ed71096a2d2796cdcb51d14988fce7e9e8a74258087b1367/typefit-0.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "65e13a3cda33176c2bd9e25ca8f14066", "sha256": "ee57ecd2037b1d08aee162384e6f89425ff58709b4f4adc7068d66b25af0e6e4" }, "downloads": -1, "filename": "typefit-0.3.0.tar.gz", "has_sig": false, "md5_digest": "65e13a3cda33176c2bd9e25ca8f14066", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 20100, "upload_time": "2020-04-30T13:15:36", "upload_time_iso_8601": "2020-04-30T13:15:36.974797Z", "url": "https://files.pythonhosted.org/packages/58/b8/3245239241f9b92587b38d08326ee887c1d1472a4c184801d21dc84871c9/typefit-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "f97b87d289dc199fd591c62ec9c6c242", "sha256": "2e4568d2205f68fe2d01e6694679081baaee2af0fbcb3ceb14acf1464abdb9e0" }, "downloads": -1, "filename": "typefit-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f97b87d289dc199fd591c62ec9c6c242", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 23042, "upload_time": "2021-06-06T10:52:17", "upload_time_iso_8601": "2021-06-06T10:52:17.298697Z", "url": "https://files.pythonhosted.org/packages/6d/b2/2a0688282bcec4ae61c2af37c1a77cbcaec201f6b0d4b2daa2ab8b98fc2b/typefit-0.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c11c4f4d8fdb97a6e3b9c49f2cf6ce5d", "sha256": "6d96a715f1d7a80e79afbb0e067463f3d25a767b2f3a9f67567afdb7d496b8cb" }, "downloads": -1, "filename": "typefit-0.3.1.tar.gz", "has_sig": false, "md5_digest": "c11c4f4d8fdb97a6e3b9c49f2cf6ce5d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 20112, "upload_time": "2021-06-06T10:52:18", "upload_time_iso_8601": "2021-06-06T10:52:18.814599Z", "url": "https://files.pythonhosted.org/packages/6f/08/cde65cbe1bae17bc9bb7e433f52b430f996e3b43b2bca2f31bc0c5ed2782/typefit-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "b3e63a03d645c953ecb5c171174141be", "sha256": "0222e01ac6186134be48eb62c372569b3b999cf0ffba5520e1ef1c5510e830f7" }, "downloads": -1, "filename": "typefit-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b3e63a03d645c953ecb5c171174141be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 23043, "upload_time": "2022-04-07T11:42:41", "upload_time_iso_8601": "2022-04-07T11:42:41.389759Z", "url": "https://files.pythonhosted.org/packages/7a/8c/2e9f6a45df2f8dcbc575aba8a8a422f37439bad95c9f2875953087a27734/typefit-0.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6006b205fb20812df358629008d19fd5", "sha256": "b49b7416998ff3943496d712339960373b32db1e3d4f333ba2bf7dde3781a983" }, "downloads": -1, "filename": "typefit-0.4.0.tar.gz", "has_sig": false, "md5_digest": "6006b205fb20812df358629008d19fd5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 20146, "upload_time": "2022-04-07T11:42:43", "upload_time_iso_8601": "2022-04-07T11:42:43.300610Z", "url": "https://files.pythonhosted.org/packages/3a/7a/cfcea4edae2ff42aed260973d0d8b020b05cfb934f5f86b9c5dfe52a5e7f/typefit-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b3e63a03d645c953ecb5c171174141be", "sha256": "0222e01ac6186134be48eb62c372569b3b999cf0ffba5520e1ef1c5510e830f7" }, "downloads": -1, "filename": "typefit-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b3e63a03d645c953ecb5c171174141be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 23043, "upload_time": "2022-04-07T11:42:41", "upload_time_iso_8601": "2022-04-07T11:42:41.389759Z", "url": "https://files.pythonhosted.org/packages/7a/8c/2e9f6a45df2f8dcbc575aba8a8a422f37439bad95c9f2875953087a27734/typefit-0.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6006b205fb20812df358629008d19fd5", "sha256": "b49b7416998ff3943496d712339960373b32db1e3d4f333ba2bf7dde3781a983" }, "downloads": -1, "filename": "typefit-0.4.0.tar.gz", "has_sig": false, "md5_digest": "6006b205fb20812df358629008d19fd5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 20146, "upload_time": "2022-04-07T11:42:43", "upload_time_iso_8601": "2022-04-07T11:42:43.300610Z", "url": "https://files.pythonhosted.org/packages/3a/7a/cfcea4edae2ff42aed260973d0d8b020b05cfb934f5f86b9c5dfe52a5e7f/typefit-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }