{ "info": { "author": "Mateusz Bysiek", "author_email": "mateusz.bysiek@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 1 - Planning", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Education", "Topic :: Scientific/Engineering", "Topic :: Utilities" ], "description": ".. role:: python(code)\n :language: python\n\n\n=============\nstatic-typing\n=============\n\nAugument Python 3 abstract syntax trees (ASTs) with static type information.\n\n.. image:: https://img.shields.io/pypi/v/static-typing.svg\n :target: https://pypi.org/project/static-typing\n :alt: package version from PyPI\n\n.. image:: https://travis-ci.org/mbdevpl/static-typing.svg?branch=master\n :target: https://travis-ci.org/mbdevpl/static-typing\n :alt: build status from Travis CI\n\n.. image:: https://ci.appveyor.com/api/projects/status/github/mbdevpl/static-typing?branch=master&svg=true\n :target: https://ci.appveyor.com/project/mbdevpl/static-typing\n :alt: build status from AppVeyor\n\n.. image:: https://api.codacy.com/project/badge/Grade/c10705787cbf4ebeafa95d18459fd690\n :target: https://www.codacy.com/app/mbdevpl/static-typing\n :alt: grade from Codacy\n\n.. image:: https://codecov.io/gh/mbdevpl/static-typing/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/mbdevpl/static-typing\n :alt: test coverage from Codecov\n\n.. image:: https://img.shields.io/github/license/mbdevpl/static-typing.svg\n :target: https://github.com/mbdevpl/static-typing/blob/master/NOTICE\n :alt: license\n\nPython is a dynamically typed programming language.\nHowever, much of typically seen Python code would work even if it was statically typed!\n\nWith this package, one can insert static type information into Python abstract syntax trees (ASTs),\nso assuming that given code would work if Python was statically typed,\none can reason about the types in the code statically, ahead of execution.\n\nSuch augmented AST is mainly intended for analysis/consumption using other tools.\n\nWorks best with ASTs from ``typed_ast`` module, however it also works with built-in ``ast`` module.\n\nBe advised that this is an ongoing work, and current implementation is subject to sudden changes.\n\nSupport of ``typed_ast`` will be dropped after Python 3.8 is released, as its functionality will be\nmerged into the built-in AST parser.\n\n.. contents::\n :backlinks: none\n\n\nHow to use\n==========\n\nYou can use the ``static_typing`` module to parse the code directly using ``parse()`` function:\n\n.. code:: python\n\n import static_typing as st\n class MyClass:\n pass\n module = st.parse('def my_fun(obj: MyClass) -> MyClass: return obj')\n # TODO: currently there is no public API yet\n functions = module._functions\n my_fun = module._functions['my_fun']\n assert MyClass in my_fun._params['obj']\n\nOr, you can augment existing AST using ``augment()`` function:\n\n.. code:: python\n\n import static_typing as st\n import typed_ast.ast3\n module = typed_ast.ast3.parse('''def spam(): x, y, z = 'ham', 42, 3.1415 # type: str, int, float''')\n module = st.augment(module)\n # TODO: currently there is no public API yet\n function = module._functions['spam']\n assert len(function._local_vars) == 3\n assert float in function._local_vars['z']\n\nFor more examples see `examples.ipynb `_ notebook.\n\n\nAST manipulation\n----------------\n\nAdditionally to the main features, the library contains ``static_typing.ast_manipulation``\nmodule which contains low-level tools and building blocks allowing for:\n\n* recursive AST traversal,\n* AST validation,\n* recursive AST transformations,\n* AST transcribing (from ``typed_ast`` to built-in ``ast`` and vice versa) and\n* resolving type hints (described in detail below).\n\n\nHow it's implemented\n====================\n\nThe process or static typing, which the ``augment()`` function implements, has 3 main steps:\n\n* type hint resolution,\n* type information combining and\n* AST rewriting.\n\n\nType hint resolution\n--------------------\n\nIn all applicable nodes, type hints are stored in fields ``type_comment``, ``annotation``\nand ``returns``. The type hint resolver reads those fields -- which themseves are either raw strings\nor ASTs.\n\nIt uses provided Python symbol tables to resolve type hints into actual type objects using\nintrospection.\n\nBy default, the resolver uses only built-in symbols when called directly or through ``augment()``.\nHowever, when called through ``parse()`` it uses ``globals()`` and ``locals()`` of the caller\nby default.\n\nThe resolved type hints are stored directly in the AST. Specifically, each resolved field is stored\nin a correspondingly named field, which is either ``resolved_type_comment``, ``resolved_annotation``\nor ``resolved_returns``.\n\nThus, static type information becomes available in the AST.\n\n\nType information combining\n--------------------------\n\nFor each AST node that might contain any name declarations, an exetended version of a node\nis provided. Each extended AST node has new fields that store those declared names and type\ninformation associated with each name.\n\nThese new fields store all type information from all resolved type hints within any local scope,\nso that a type conflict or lack of type information can be detected. Also, based on this combined\ninformation, type inference can be performed.\n\nSpecifically, new versions of following AST nodes with new fields are provided: ``Module``,\n``FunctionDef``, ``ClassDef``, ``Assign``, ``AnnAssign``, ``For`` and ``With``. Those new versions\nhave their names prefixed ``StaticallyTyped...``.\n\nA list of entities for which information is gathered in those new fields follows.\n\nFor ``Module``:\n\n* defined variables\n* defined functions\n* defined classes\n\nFor ``FunctionDef``:\n\n* parameters and their types\n* return types\n* kind (i.e. function, instance method, class method, static method, etc.)\n* local variables and their types\n\nFor ``ClassDef``:\n\n* defined methods (all together and grouped by kind)\n* class fields and their types\n* instance fields and their types\n\nFor ``Assign`` and ``AnnAssign``:\n\n* assignment targets and their types\n\nFor ``For``:\n\n* index variables and their types\n\nFor ``With``:\n\n* context variables and their types\n\n\nAST rewriting\n-------------\n\nThe AST rewriting means replacing ordinary AST nodes listed above with their extended versions.\n\n\nRequirements\n============\n\nPython version 3.5 or later.\n\nPython libraries as specified in `requirements.txt `_.\n\nBuilding and running tests additionally requires packages listed in `test_requirements.txt `_.\n\nTested on Linux and Windows.\n\n\n", "description_content_type": "text/x-rst; charset=UTF-8", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mbdevpl/static-typing", "keywords": "ast,parser,parsing,static type information,type analysis,types,typing", "license": "Apache License 2.0", "maintainer": "Mateusz Bysiek", "maintainer_email": "mateusz.bysiek@gmail.com", "name": "static-typing", "package_url": "https://pypi.org/project/static-typing/", "platform": "", "project_url": "https://pypi.org/project/static-typing/", "project_urls": { "Homepage": "https://github.com/mbdevpl/static-typing" }, "release_url": "https://pypi.org/project/static-typing/0.2.7/", "requires_dist": [ "numpy", "ordered-set", "typed-ast (>=1.4.0)", "typed-astunparse (>=2.1.4)", "version-query" ], "requires_python": ">=3.5", "summary": "add static type information to Python abstract syntax trees", "version": "0.2.7" }, "last_serial": 5600309, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e733277765ece2c265aac364df25d22f", "sha256": "4f9aeaa33f24f7a65e94c9bf7213447738b919d12c426ebfdc7cca088d46cb8f" }, "downloads": -1, "filename": "static_typing-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e733277765ece2c265aac364df25d22f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 24875, "upload_time": "2017-10-17T04:41:53", "url": "https://files.pythonhosted.org/packages/73/23/1af9e9302225220b5a6bee801a4edbcd6c32ab68cb49aae4e0d3bd369dd8/static_typing-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43bd0b09096fcbf8328d9f7d2edc67c3", "sha256": "0aee9f406c0c61a5a4965460ffa7099e9b13025c5dfe85177caaf826c73b55e0" }, "downloads": -1, "filename": "static-typing-0.1.0.tar.gz", "has_sig": false, "md5_digest": "43bd0b09096fcbf8328d9f7d2edc67c3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 21950, "upload_time": "2017-10-17T04:41:54", "url": "https://files.pythonhosted.org/packages/57/e9/5463544c4c7d171fbbe31feb3ec4a4fb8e6ea806bc6ea9671ca272e95c8e/static-typing-0.1.0.tar.gz" } ], "0.1.0.dev0": [ { "comment_text": "", "digests": { "md5": "8afb7fc6f4cb383c5c5702c770035067", "sha256": "f82a064ab734ad7b5e11f0135a4340c7ac500750784925935e0eec0d88ffd214" }, "downloads": -1, "filename": "static_typing-0.1.0.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "8afb7fc6f4cb383c5c5702c770035067", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12328, "upload_time": "2017-07-11T05:52:16", "url": "https://files.pythonhosted.org/packages/c5/46/558aa27adea671c4c44557f26cb07c877d58ac61ae0b41e76034bd46f817/static_typing-0.1.0.dev0-py3-none-any.whl" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "ddb244470e063a93a49e53f034bb2734", "sha256": "c7a5c87889866cb39de7d370307d35ccbb1c409ee8c303cb0cfe70d63aee94a8" }, "downloads": -1, "filename": "static_typing-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ddb244470e063a93a49e53f034bb2734", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 17187, "upload_time": "2017-10-17T09:17:51", "url": "https://files.pythonhosted.org/packages/a9/a9/36946630458f285902a684070824f2c12a20dbec3993fe1839640d5e7649/static_typing-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f17f3f6ddf0d4188908f80b9691f8b9", "sha256": "ee77b18373f307fb86757ba5ab429eeb519e1493e435f13018772ed90a623968" }, "downloads": -1, "filename": "static-typing-0.1.1.tar.gz", "has_sig": false, "md5_digest": "8f17f3f6ddf0d4188908f80b9691f8b9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 21824, "upload_time": "2017-10-17T09:17:53", "url": "https://files.pythonhosted.org/packages/fd/3a/10784f8167eb6644a7133f3014b6a55b6a242b3359fb4e13bfd71d1eec5c/static-typing-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "3b033e39177fc60074a575e2b36e7cbf", "sha256": "9fa374d9a38a9655799a519e69d53c95f7c7788a89af504efe2f692186e69a0a" }, "downloads": -1, "filename": "static_typing-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3b033e39177fc60074a575e2b36e7cbf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 20262, "upload_time": "2017-12-04T07:44:24", "url": "https://files.pythonhosted.org/packages/7f/f2/23e095be5a45ae1f3a48bd0108dfb343493101fe7e5b05fe99437a8a2d53/static_typing-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "86999f1e32f6ddcea888fc6e187ff425", "sha256": "f76b3ae1f9a76edc65643f3e1a429cba18c4f5bd27e5d7dd428dc06d780e929e" }, "downloads": -1, "filename": "static-typing-0.1.2.tar.gz", "has_sig": false, "md5_digest": "86999f1e32f6ddcea888fc6e187ff425", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 25303, "upload_time": "2017-12-04T07:44:25", "url": "https://files.pythonhosted.org/packages/21/ff/88c629705168f60b633c4045da7870b9fb1f72abaaa4c15666fcb3a986bc/static-typing-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "0621a627c8d345b240108f6489f9f92a", "sha256": "ccba2c50c69068dbcec7fb859c070bcdb2ea1e07bd3c5177ffdf7a281890cb00" }, "downloads": -1, "filename": "static_typing-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "0621a627c8d345b240108f6489f9f92a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 20772, "upload_time": "2018-01-30T01:42:58", "url": "https://files.pythonhosted.org/packages/84/b1/e251e7d1f21ac553e45c7b26c3805a589f209faaff056b4ec219fc8c7dc2/static_typing-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e4aa0e21133244965defac2210ed2e49", "sha256": "7325793ca58433b6b9d7c0db10ef17090af6df25200a04930ef61e32b2330fae" }, "downloads": -1, "filename": "static-typing-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e4aa0e21133244965defac2210ed2e49", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 25279, "upload_time": "2018-01-30T01:43:07", "url": "https://files.pythonhosted.org/packages/ae/55/04e4aae4f758aef6d241477e0c837dc91254cb8f9371d7f917256392f2e2/static-typing-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9017d63346e21f71fdef4e93b4f793c5", "sha256": "5bc9d414772dea40c410cf90aae2af50242d179a6f3ebdedb22ecba41f5aff81" }, "downloads": -1, "filename": "static_typing-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9017d63346e21f71fdef4e93b4f793c5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 21350, "upload_time": "2018-02-06T07:04:21", "url": "https://files.pythonhosted.org/packages/dc/c6/b35f4de00ce4aae4e10e45e8c5427ce190c4e2752fb7056faa20708c841e/static_typing-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8a329e68d0066b6184ce841133474cf1", "sha256": "abc4f70e2e8c9a4443d3bca059444603af8349d75894360cfe0f9df9f1004305" }, "downloads": -1, "filename": "static-typing-0.2.0.tar.gz", "has_sig": false, "md5_digest": "8a329e68d0066b6184ce841133474cf1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 26867, "upload_time": "2018-02-06T07:04:22", "url": "https://files.pythonhosted.org/packages/7d/6c/1c017e8ddb104db1117f651a7d797f637fa444f32c712433983842b1686f/static-typing-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "f599a2d4664c327fb7a85b7fde30e48c", "sha256": "526379d5c5b81f3f1045d4fce2979d14881ebd7c64a3d9f3451e5a68134aa8dd" }, "downloads": -1, "filename": "static_typing-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f599a2d4664c327fb7a85b7fde30e48c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 21445, "upload_time": "2018-02-21T11:34:48", "url": "https://files.pythonhosted.org/packages/d4/e1/b0e20525fbfc2bee88798801085b9b32e200feb58006c3f6b0018d5ad5d9/static_typing-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9353be40e3f9e3885a4a094537982b56", "sha256": "39974c1eb4dfe888782ee303711337a31ae70d442ac95aa5b2a3a20581cf5dec" }, "downloads": -1, "filename": "static-typing-0.2.1.tar.gz", "has_sig": false, "md5_digest": "9353be40e3f9e3885a4a094537982b56", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 27331, "upload_time": "2018-02-21T11:34:51", "url": "https://files.pythonhosted.org/packages/8c/7f/cbc03c5a7f19f547041a38e70b908260b71c399eef2d0fddf3df83b0b7db/static-typing-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "3f121fe650a076458cf733a046c21947", "sha256": "8c860edfbc4da88b3bc4cc9d1ebb4c531065dc25e2868c5d49cce3251c1b7dc5" }, "downloads": -1, "filename": "static_typing-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3f121fe650a076458cf733a046c21947", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 19189, "upload_time": "2018-04-10T08:22:46", "url": "https://files.pythonhosted.org/packages/c3/e8/4a846f09fba83462ea176bebed625cc02ae3021ca781d88ae1ea67153719/static_typing-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1abfac5368c0f4a7f306d2a0c6219eca", "sha256": "22182750087923e2609e7ffeaa4a06942e0b24aeccaaef61bcd74c7aeeacf062" }, "downloads": -1, "filename": "static-typing-0.2.2.tar.gz", "has_sig": false, "md5_digest": "1abfac5368c0f4a7f306d2a0c6219eca", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 30024, "upload_time": "2018-04-10T08:22:51", "url": "https://files.pythonhosted.org/packages/83/48/897e2f58a87085345ac60c8a90289bd6236607c34b459450c671588d2f9f/static-typing-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "f4d34942d6a5f64c78af149e7e132806", "sha256": "a004f79973576a29854aad8ca75898985f31fabbe58fd6885fcd46113b951971" }, "downloads": -1, "filename": "static_typing-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f4d34942d6a5f64c78af149e7e132806", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 19213, "upload_time": "2018-04-24T08:54:19", "url": "https://files.pythonhosted.org/packages/bf/4e/14efbdc77cff0a1343fef6178a1b39e240da6e9738b996d7bd37145e6466/static_typing-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ba37801d990a9bef2b77d68bfa2c0f0", "sha256": "c429fdec0acd5f1f48bea1363545cc14ff04d07a1327770bcb88aca2f05c4263" }, "downloads": -1, "filename": "static-typing-0.2.3.tar.gz", "has_sig": false, "md5_digest": "1ba37801d990a9bef2b77d68bfa2c0f0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 29642, "upload_time": "2018-04-24T08:54:20", "url": "https://files.pythonhosted.org/packages/c8/13/39353edfe4ff2b49cf6e564387bcffa69248fb8890cb6d1ea0ca215d52d2/static-typing-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "848bdecfa4f06ebd92d7d2f0356af44d", "sha256": "dd839e3f0ca68e581465db9b41f0458d6e39ab473360a4ec2f2b6d89424dcfd8" }, "downloads": -1, "filename": "static_typing-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "848bdecfa4f06ebd92d7d2f0356af44d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 25145, "upload_time": "2018-06-27T10:58:27", "url": "https://files.pythonhosted.org/packages/e8/c5/86c3f57a2abb0ae6aeea7cbb0c4e02599580fbe6394f0bfa5a751433d141/static_typing-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "482a2a80ec01ea0881d09e7f3a4a8ecd", "sha256": "39db209bc0b9eac0e75d171f01ec5f930ad0b89db701ab20d7630cedf412d756" }, "downloads": -1, "filename": "static-typing-0.2.4.tar.gz", "has_sig": false, "md5_digest": "482a2a80ec01ea0881d09e7f3a4a8ecd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 35519, "upload_time": "2018-06-27T10:58:29", "url": "https://files.pythonhosted.org/packages/28/7a/45cbe740efdf133a7a52d4dafc022de179973c15cde82833c6ccb1e1e659/static-typing-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "82d4e6b7689c05b48ef0a576bc670395", "sha256": "528b3f21fac2d353d84428d8eb279f1500438155c8795b0d8f8d3b3525aba610" }, "downloads": -1, "filename": "static_typing-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "82d4e6b7689c05b48ef0a576bc670395", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 26715, "upload_time": "2018-08-12T01:44:18", "url": "https://files.pythonhosted.org/packages/84/06/05a3c14e04f49a955980f73c81d0c1cde515b922f70571423c935c700393/static_typing-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bc63e936a41864bee119eea5799dfd55", "sha256": "a2f6d4bf6191e7d97c46c6ca94feb76213d6d8227b609fe7760b93c5092286b1" }, "downloads": -1, "filename": "static-typing-0.2.5.tar.gz", "has_sig": false, "md5_digest": "bc63e936a41864bee119eea5799dfd55", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 37464, "upload_time": "2018-08-12T01:44:20", "url": "https://files.pythonhosted.org/packages/9d/db/99c97c10fc3a701465072287538ca67ea716cae388fecc37fd2641777aae/static-typing-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "4955e0b2f0a6606318a3765eab9689d9", "sha256": "7ced68a79600ba68f6763a9a1c180431cf1028b52834f2260ce37a5df0baf58a" }, "downloads": -1, "filename": "static_typing-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "4955e0b2f0a6606318a3765eab9689d9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 27121, "upload_time": "2018-08-13T00:22:21", "url": "https://files.pythonhosted.org/packages/0e/6f/2bae509e15fcdd2294172a14108069b96ecf427ef942d8c9d372289ef293/static_typing-0.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53669a4b3e8cc79a11edfd5dabba55b4", "sha256": "da4d10b81e6b1260ee81afdf13638c759d92e1320fbbd61d0666ee787cd87f82" }, "downloads": -1, "filename": "static-typing-0.2.6.tar.gz", "has_sig": false, "md5_digest": "53669a4b3e8cc79a11edfd5dabba55b4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 37806, "upload_time": "2018-08-13T00:22:23", "url": "https://files.pythonhosted.org/packages/eb/a2/69fcdf3b0e6ce746bbbfa9281387e860f6b8f325a797de677ce8af344b93/static-typing-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "2b2aabf71915a6fefadc28853dcd219c", "sha256": "30e300a10ecffd1008cefe36fc67a5e66a8e2a825950fcbea984f1a75bccdfca" }, "downloads": -1, "filename": "static_typing-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2b2aabf71915a6fefadc28853dcd219c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 32560, "upload_time": "2019-07-29T15:53:56", "url": "https://files.pythonhosted.org/packages/ff/57/81ca43d3c3fb3979550dc3165208f6e4828477383932694e645ec47b221e/static_typing-0.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5e9a6c2bd3f0b3c710e3d0743a6b88cb", "sha256": "bc0f8257e4f0e084ef982c8b963478731e7b0474151f420c640dd546207d8242" }, "downloads": -1, "filename": "static-typing-0.2.7.tar.gz", "has_sig": false, "md5_digest": "5e9a6c2bd3f0b3c710e3d0743a6b88cb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 38686, "upload_time": "2019-07-29T15:53:59", "url": "https://files.pythonhosted.org/packages/12/77/5c45db0160122b9224cc9950797a939a1fb75e57dc6e00da3e6327bf6a88/static-typing-0.2.7.tar.gz" } ], "0.2.7.dev1": [ { "comment_text": "", "digests": { "md5": "a583523d42eec36dbbd0ed51c2a527a9", "sha256": "8b0871dc3b7f93704c09fa3e87052303197074f347b96597a8d2bc258ed4ad67" }, "downloads": -1, "filename": "static_typing-0.2.7.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "a583523d42eec36dbbd0ed51c2a527a9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 32377, "upload_time": "2019-03-20T04:01:28", "url": "https://files.pythonhosted.org/packages/3c/54/08a1ce31a65b0499c6ad4d5d54dac945a04a9834a5c895dbc7d61114da67/static_typing-0.2.7.dev1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b50f653e36dbac1d9e80e2b7ec72cb9a", "sha256": "a985135b1e70af5a12716c9db101fbd9dabcbe14c580563b0ee701f162cd6432" }, "downloads": -1, "filename": "static-typing-0.2.7.dev1.tar.gz", "has_sig": false, "md5_digest": "b50f653e36dbac1d9e80e2b7ec72cb9a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 38617, "upload_time": "2019-03-20T04:01:30", "url": "https://files.pythonhosted.org/packages/bc/69/b22e4e8a639077ef5e03ee361877bc18e7b646996217a6df639a79ff46d8/static-typing-0.2.7.dev1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2b2aabf71915a6fefadc28853dcd219c", "sha256": "30e300a10ecffd1008cefe36fc67a5e66a8e2a825950fcbea984f1a75bccdfca" }, "downloads": -1, "filename": "static_typing-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2b2aabf71915a6fefadc28853dcd219c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 32560, "upload_time": "2019-07-29T15:53:56", "url": "https://files.pythonhosted.org/packages/ff/57/81ca43d3c3fb3979550dc3165208f6e4828477383932694e645ec47b221e/static_typing-0.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5e9a6c2bd3f0b3c710e3d0743a6b88cb", "sha256": "bc0f8257e4f0e084ef982c8b963478731e7b0474151f420c640dd546207d8242" }, "downloads": -1, "filename": "static-typing-0.2.7.tar.gz", "has_sig": false, "md5_digest": "5e9a6c2bd3f0b3c710e3d0743a6b88cb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 38686, "upload_time": "2019-07-29T15:53:59", "url": "https://files.pythonhosted.org/packages/12/77/5c45db0160122b9224cc9950797a939a1fb75e57dc6e00da3e6327bf6a88/static-typing-0.2.7.tar.gz" } ] }