{ "info": { "author": "Hynek Schlawack", "author_email": "hs@ox.cx", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. image:: https://www.attrs.org/en/latest/_static/attrs_logo.png\n :alt: attrs Logo\n\n======================================\n``attrs``: Classes Without Boilerplate\n======================================\n\n.. image:: https://readthedocs.org/projects/attrs/badge/?version=stable\n :target: https://www.attrs.org/en/stable/?badge=stable\n :alt: Documentation Status\n\n.. image:: https://attrs.visualstudio.com/attrs/_apis/build/status/python-attrs.attrs?branchName=master\n :target: https://attrs.visualstudio.com/attrs/_build/latest?definitionId=1&branchName=master\n :alt: CI Status\n\n.. image:: https://codecov.io/github/python-attrs/attrs/branch/master/graph/badge.svg\n :target: https://codecov.io/github/python-attrs/attrs\n :alt: Test Coverage\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/psf/black\n :alt: Code style: black\n\n.. teaser-begin\n\n``attrs`` is the Python package that will bring back the **joy** of **writing classes** by relieving you from the drudgery of implementing object protocols (aka `dunder `_ methods).\n\nIts main goal is to help you to write **concise** and **correct** software without slowing down your code.\n\n.. -spiel-end-\n\nFor that, it gives you a class decorator and a way to declaratively define the attributes on that class:\n\n.. -code-begin-\n\n.. code-block:: pycon\n\n >>> import attr\n\n >>> @attr.s\n ... class SomeClass(object):\n ... a_number = attr.ib(default=42)\n ... list_of_numbers = attr.ib(factory=list)\n ...\n ... def hard_math(self, another_number):\n ... return self.a_number + sum(self.list_of_numbers) * another_number\n\n\n >>> sc = SomeClass(1, [1, 2, 3])\n >>> sc\n SomeClass(a_number=1, list_of_numbers=[1, 2, 3])\n\n >>> sc.hard_math(3)\n 19\n >>> sc == SomeClass(1, [1, 2, 3])\n True\n >>> sc != SomeClass(2, [3, 2, 1])\n True\n\n >>> attr.asdict(sc)\n {'a_number': 1, 'list_of_numbers': [1, 2, 3]}\n\n >>> SomeClass()\n SomeClass(a_number=42, list_of_numbers=[])\n\n >>> C = attr.make_class(\"C\", [\"a\", \"b\"])\n >>> C(\"foo\", \"bar\")\n C(a='foo', b='bar')\n\n\nAfter *declaring* your attributes ``attrs`` gives you:\n\n- a concise and explicit overview of the class's attributes,\n- a nice human-readable ``__repr__``,\n- a complete set of comparison methods (equality and ordering),\n- an initializer,\n- and much more,\n\n*without* writing dull boilerplate code again and again and *without* runtime performance penalties.\n\nOn Python 3.6 and later, you can often even drop the calls to ``attr.ib()`` by using `type annotations `_.\n\nThis gives you the power to use actual classes with actual types in your code instead of confusing ``tuple``\\ s or `confusingly behaving `_ ``namedtuple``\\ s.\nWhich in turn encourages you to write *small classes* that do `one thing well `_.\nNever again violate the `single responsibility principle `_ just because implementing ``__init__`` et al is a painful drag.\n\n\n.. -testimonials-\n\nTestimonials\n============\n\n**Amber Hawkie Brown**, Twisted Release Manager and Computer Owl:\n\n Writing a fully-functional class using attrs takes me less time than writing this testimonial.\n\n\n**Glyph Lefkowitz**, creator of `Twisted `_, `Automat `_, and other open source software, in `The One Python Library Everyone Needs `_:\n\n I\u2019m looking forward to is being able to program in Python-with-attrs everywhere.\n It exerts a subtle, but positive, design influence in all the codebases I\u2019ve see it used in.\n\n\n**Kenneth Reitz**, creator of `Requests `_ (`on paper no less `_!):\n\n attrs\u2014classes for humans. I like it.\n\n\n**\u0141ukasz Langa**, creator of `Black `_, prolific Python core developer, and release manager for Python 3.8 and 3.9:\n\n I'm increasingly digging your attr.ocity. Good job!\n\n\n.. -end-\n\n.. -project-information-\n\nGetting Help\n============\n\nPlease use the ``python-attrs`` tag on `StackOverflow `_ to get help.\n\nAnswering questions of your fellow developers is also great way to help the project!\n\n\nProject Information\n===================\n\n``attrs`` is released under the `MIT `_ license,\nits documentation lives at `Read the Docs `_,\nthe code on `GitHub `_,\nand the latest release on `PyPI `_.\nIt\u2019s rigorously tested on Python 2.7, 3.4+, and PyPy.\n\nWe collect information on **third-party extensions** in our `wiki `_.\nFeel free to browse and add your own!\n\nIf you'd like to contribute to ``attrs`` you're most welcome and we've written `a little guide `_ to get you started!\n\n\nRelease Information\n===================\n\n19.3.0 (2019-10-15)\n-------------------\n\nChanges\n^^^^^^^\n\n- Fixed ``auto_attribs`` usage when default values cannot be compared directly with ``==``, such as ``numpy`` arrays.\n `#585 `_\n\n`Full changelog `_.\n\nCredits\n=======\n\n``attrs`` is written and maintained by `Hynek Schlawack `_.\n\nThe development is kindly supported by `Variomedia AG `_.\n\nA full list of contributors can be found in `GitHub's overview `_.\n\nIt\u2019s the spiritual successor of `characteristic `_ and aspires to fix some of it clunkiness and unfortunate decisions.\nBoth were inspired by Twisted\u2019s `FancyEqMixin `_ but both are implemented using class decorators because `subclassing is bad for you `_, m\u2019kay?\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://www.attrs.org/", "keywords": "class,attribute,boilerplate", "license": "MIT", "maintainer": "Hynek Schlawack", "maintainer_email": "hs@ox.cx", "name": "attrs", "package_url": "https://pypi.org/project/attrs/", "platform": "", "project_url": "https://pypi.org/project/attrs/", "project_urls": { "Bug Tracker": "https://github.com/python-attrs/attrs/issues", "Documentation": "https://www.attrs.org/", "Homepage": "https://www.attrs.org/", "Source Code": "https://github.com/python-attrs/attrs" }, "release_url": "https://pypi.org/project/attrs/19.3.0/", "requires_dist": [ "coverage ; extra == 'azure-pipelines'", "hypothesis ; extra == 'azure-pipelines'", "pympler ; extra == 'azure-pipelines'", "pytest (>=4.3.0) ; extra == 'azure-pipelines'", "six ; extra == 'azure-pipelines'", "zope.interface ; extra == 'azure-pipelines'", "pytest-azurepipelines ; extra == 'azure-pipelines'", "coverage ; extra == 'dev'", "hypothesis ; extra == 'dev'", "pympler ; extra == 'dev'", "pytest (>=4.3.0) ; extra == 'dev'", "six ; extra == 'dev'", "zope.interface ; extra == 'dev'", "sphinx ; extra == 'dev'", "pre-commit ; extra == 'dev'", "sphinx ; extra == 'docs'", "zope.interface ; extra == 'docs'", "coverage ; extra == 'tests'", "hypothesis ; extra == 'tests'", "pympler ; extra == 'tests'", "pytest (>=4.3.0) ; extra == 'tests'", "six ; extra == 'tests'", "zope.interface ; extra == 'tests'" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "summary": "Classes Without Boilerplate", "version": "19.3.0" }, "last_serial": 5975007, "releases": { "15.0.0": [ { "comment_text": "", "digests": { "md5": "7a4933b0a76c7d68a8f04a73c94cbe0b", "sha256": "75d5a35b31d9f79b2e79041f07750ce63f497adba91baadc55ccd528cdc26580" }, "downloads": -1, "filename": "attrs-15.0.0-py2-none-any.whl", "has_sig": true, "md5_digest": "7a4933b0a76c7d68a8f04a73c94cbe0b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 13860, "upload_time": "2015-04-15T21:55:50", "url": "https://files.pythonhosted.org/packages/2f/b8/f65204c643546fe6c2f16a305c5c4903a696a9ac3281708af747e080d97d/attrs-15.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b45f34b1a49e667880f2c5efcfc533b2", "sha256": "a51090f2ef655d9ffecfdfdfac10e184e8665893ac5bbd910e571c18034c7798" }, "downloads": -1, "filename": "attrs-15.0.0.tar.gz", "has_sig": true, "md5_digest": "b45f34b1a49e667880f2c5efcfc533b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33844, "upload_time": "2015-04-15T21:55:53", "url": "https://files.pythonhosted.org/packages/a2/f6/97806e9f6fe4d2b6f04d947a9a4ac36b17d1f4bc48cbebfcd27d5c198d33/attrs-15.0.0.tar.gz" } ], "15.0.0a1": [ { "comment_text": "", "digests": { "md5": "2687ab67bb5713c46d027c90bf0f165c", "sha256": "4a7727256a7660b1ae92c61a2521ed514180b52c1313f9e89afe119a9006033e" }, "downloads": -1, "filename": "attrs-15.0.0a1-py2-none-any.whl", "has_sig": true, "md5_digest": "2687ab67bb5713c46d027c90bf0f165c", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 13681, "upload_time": "2015-02-21T10:42:56", "url": "https://files.pythonhosted.org/packages/1a/61/f43428ad99e09a1c3d7c7f7e6325527283f9d5647dda42e686a522a22076/attrs-15.0.0a1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e180618d9d32607c38495d27bd81a0d1", "sha256": "9f842593052bdfaf5cada1edef397f7d631aba2913e6af12811b8dc6d3177455" }, "downloads": -1, "filename": "attrs-15.0.0a1.tar.gz", "has_sig": true, "md5_digest": "e180618d9d32607c38495d27bd81a0d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33274, "upload_time": "2015-02-21T10:42:59", "url": "https://files.pythonhosted.org/packages/1f/32/aab2edd5cd015b0155214de10160d205e7d593be9670240358892c7cb253/attrs-15.0.0a1.tar.gz" } ], "15.1.0": [ { "comment_text": "", "digests": { "md5": "c403734ae572c96b7066b32d7687bd8d", "sha256": "fc48302e241d962cc560957d0cc8c3e3da0293b8fc342cd8808459ed2928f4c9" }, "downloads": -1, "filename": "attrs-15.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "c403734ae572c96b7066b32d7687bd8d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14045, "upload_time": "2015-08-20T11:57:17", "url": "https://files.pythonhosted.org/packages/d7/ab/a723ff08187ad381952d2ee7b00afbb577367919b6188a4fd5050e0e47d8/attrs-15.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c6322db32b56ab2f755a7e544083f4a", "sha256": "f96c9cbff43566eda15be6f961b9b35dc6f1c9781039cf01a1ddd50f33d51c63" }, "downloads": -1, "filename": "attrs-15.1.0.tar.gz", "has_sig": true, "md5_digest": "9c6322db32b56ab2f755a7e544083f4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34307, "upload_time": "2015-08-20T11:57:22", "url": "https://files.pythonhosted.org/packages/fe/f6/3dc91aadb0a6c29e80943ce8345664220762f0db34c047dd3722fd40a9b0/attrs-15.1.0.tar.gz" } ], "15.2.0": [ { "comment_text": "", "digests": { "md5": "9c0855df4ea158b74574deeb379283f2", "sha256": "8f5396e0ecf3e4945b81f1e2dd798b8c8f238c16ea8d8a9672d01a0358de9b0d" }, "downloads": -1, "filename": "attrs-15.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9c0855df4ea158b74574deeb379283f2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14070, "upload_time": "2015-12-08T15:30:03", "url": "https://files.pythonhosted.org/packages/b4/ac/9685a9e9e0857b7229a47573fd7ec6a1b930b07d05cb93d25ad109e55013/attrs-15.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b3c460eb6482f6e557c0e4025475c007", "sha256": "9f895d2ecefa0be054e29375769f1d0ee88e93ce820088cf5c49390529bf7ee7" }, "downloads": -1, "filename": "attrs-15.2.0.tar.gz", "has_sig": false, "md5_digest": "b3c460eb6482f6e557c0e4025475c007", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36766, "upload_time": "2015-12-08T15:30:16", "url": "https://files.pythonhosted.org/packages/8b/76/c57eefda827b981135ccacd4328fceaa3693f79d9da1e5d78fbe59ebd0c4/attrs-15.2.0.tar.gz" } ], "16.0.0": [ { "comment_text": "", "digests": { "md5": "fd0df120e109cc59dd00f887bc642f54", "sha256": "c0baae43ed42ee57e73646f343469d148e606cb075846b76039053f445cbc03d" }, "downloads": -1, "filename": "attrs-16.0.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "fd0df120e109cc59dd00f887bc642f54", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15876, "upload_time": "2016-05-23T18:34:03", "url": "https://files.pythonhosted.org/packages/1f/9e/797b1b3e1faef3d62560ec55b1bf16311eeb54baf7d7ea64a1d7508824e5/attrs-16.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bcdd418f6e83e580434c63067c08a73", "sha256": "de6827a454d23716442b571bb35b0efb32a1b5c1037f09cfc7aaf405c7d68abc" }, "downloads": -1, "filename": "attrs-16.0.0.tar.gz", "has_sig": true, "md5_digest": "5bcdd418f6e83e580434c63067c08a73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42535, "upload_time": "2016-05-23T18:34:06", "url": "https://files.pythonhosted.org/packages/89/15/80d388d696c8c8ba14874635207aa698eb30ef1242dbb54d9eccf0e927ff/attrs-16.0.0.tar.gz" } ], "16.1.0": [ { "comment_text": "", "digests": { "md5": "432d031bfa523a4f7935029bf4bce02b", "sha256": "6274658d4041a6891bc060bb0bfbacaec78cefa846cf43879cf84575e94d67e6" }, "downloads": -1, "filename": "attrs-16.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "432d031bfa523a4f7935029bf4bce02b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19217, "upload_time": "2016-08-30T10:32:22", "url": "https://files.pythonhosted.org/packages/fd/23/ec3d4db4d2b902d47a856db4e7e8461fb9bc6561dcb1cd007670afdce332/attrs-16.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bc532dde76f34ade746debabdfe1662", "sha256": "50f1277dbc9880098afc13cda5eb1bb2efbc1d083559a932f528baee3fba1282" }, "downloads": -1, "filename": "attrs-16.1.0.tar.gz", "has_sig": true, "md5_digest": "5bc532dde76f34ade746debabdfe1662", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50283, "upload_time": "2016-08-30T10:32:25", "url": "https://files.pythonhosted.org/packages/b2/63/c969a9e1acca5922edf35f48552cdd40ec29f5bbb26fab6a3190b155a96e/attrs-16.1.0.tar.gz" } ], "16.2.0": [ { "comment_text": "", "digests": { "md5": "3b923385af5d43da9327d4326dbece83", "sha256": "ce9d6cac4705e5aeaca02d3ff72f0006bf9b0a2f29635ae8dab8262e296f6442" }, "downloads": -1, "filename": "attrs-16.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "3b923385af5d43da9327d4326dbece83", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19468, "upload_time": "2016-09-17T06:00:38", "url": "https://files.pythonhosted.org/packages/41/c5/b7ab0d97bb20cec1ca4bb1f0a418c5f50022b6624e6417e997b2e1c034d5/attrs-16.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "442b73d049af046ced010671b7bfd0e9", "sha256": "136f2ec0f94ec77ff2990830feee965d608cab1e8922370e3abdded383d52001" }, "downloads": -1, "filename": "attrs-16.2.0.tar.gz", "has_sig": true, "md5_digest": "442b73d049af046ced010671b7bfd0e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53137, "upload_time": "2016-09-17T06:00:41", "url": "https://files.pythonhosted.org/packages/6b/71/1682316894ed80b362b9102e7a10997136d8dc1213c36a9f0515c451373a/attrs-16.2.0.tar.gz" } ], "16.3.0": [ { "comment_text": "", "digests": { "md5": "0d188abbbde8c83253cb11e8df890d30", "sha256": "c59426b15b45e39a7bc408eb6ba7e7188d9532764f873cc691199ddd975c97ef" }, "downloads": -1, "filename": "attrs-16.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "0d188abbbde8c83253cb11e8df890d30", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21266, "upload_time": "2016-11-24T13:07:06", "url": "https://files.pythonhosted.org/packages/bb/6c/730710c765ab6d4493f460196ab003671d27b38568412a780fc67532b47c/attrs-16.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ec003c49360853cf935113d1ae56151", "sha256": "80203177723e36f3bbe15aa8553da6e80d47bfe53647220ccaa9ad7a5e473ccc" }, "downloads": -1, "filename": "attrs-16.3.0.tar.gz", "has_sig": true, "md5_digest": "4ec003c49360853cf935113d1ae56151", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57512, "upload_time": "2016-11-24T13:07:09", "url": "https://files.pythonhosted.org/packages/01/b0/3ac73bf6df716a38568a16f6a9cbc46cc9e8ed6fe30c8768260030db55d4/attrs-16.3.0.tar.gz" } ], "17.1.0": [ { "comment_text": "", "digests": { "md5": "20e72100f5743de7e27615b2781f36f5", "sha256": "8d110cdca6189d1d11102838f52970e1c1943d6feb4822d5664ae484e2c9346a" }, "downloads": -1, "filename": "attrs-17.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "20e72100f5743de7e27615b2781f36f5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26745, "upload_time": "2017-05-16T17:04:23", "url": "https://files.pythonhosted.org/packages/d6/6f/ed3c4f786f828a01306c36128fa606ef8b56495d691cd42f2d4478f8a676/attrs-17.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "928ca9077241cff337ffb5a6821b0278", "sha256": "91a2160e61ffb778a8d017c9b1dcc60758d65d39bf7b480e5e9c6005a4462321" }, "downloads": -1, "filename": "attrs-17.1.0.tar.gz", "has_sig": true, "md5_digest": "928ca9077241cff337ffb5a6821b0278", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76069, "upload_time": "2017-05-16T17:04:26", "url": "https://files.pythonhosted.org/packages/33/51/c53224aeff5af098204ee15281c662e1d4ac4635a15552bfdb17b97674e4/attrs-17.1.0.tar.gz" } ], "17.2.0": [ { "comment_text": "", "digests": { "md5": "24d211e9b6dbb0cdcce15dea97d93019", "sha256": "a7e0d9183f6457de12df7ba6a81f6569c7d6b25f67ad509b5ad52e8545970a2f" }, "downloads": -1, "filename": "attrs-17.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "24d211e9b6dbb0cdcce15dea97d93019", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24590, "upload_time": "2017-05-24T18:04:08", "url": "https://files.pythonhosted.org/packages/cd/ff/2d0c4483443789477022d85ab467bc4c0f18c6d45cb02234ed64048cbb33/attrs-17.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b7136a570f3ff8a4ff42e7360073f9f", "sha256": "5d4d1b99f94d69338f485984127e4473b3ab9e20f43821b0e546cc3b2302fd11" }, "downloads": -1, "filename": "attrs-17.2.0.tar.gz", "has_sig": true, "md5_digest": "3b7136a570f3ff8a4ff42e7360073f9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73733, "upload_time": "2017-05-24T18:04:10", "url": "https://files.pythonhosted.org/packages/be/41/e909cb6d901e9689da947419505cc7fb7d242a08a62ee221fce6a009a523/attrs-17.2.0.tar.gz" } ], "17.3.0": [ { "comment_text": "", "digests": { "md5": "726f29636ec7b1e199c5752223d10cb0", "sha256": "e7d51b70f19a4da5fe6b3c9938983e0af3b91e230edc504bd73c443d98037063" }, "downloads": -1, "filename": "attrs-17.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "726f29636ec7b1e199c5752223d10cb0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29193, "upload_time": "2017-11-08T17:57:49", "url": "https://files.pythonhosted.org/packages/43/c6/18446759c9b0f89a149854974e9ac8050f14cebea31dbff7344dd7bd35ef/attrs-17.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4314f784ca3174d91956da9828248960", "sha256": "c78f53e32d7cf36d8597c8a2c7e3c0ad210f97b9509e152e4c37fa80869f823c" }, "downloads": -1, "filename": "attrs-17.3.0.tar.gz", "has_sig": true, "md5_digest": "4314f784ca3174d91956da9828248960", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89046, "upload_time": "2017-11-08T17:57:51", "url": "https://files.pythonhosted.org/packages/3f/a4/d0db68156abbdee228ce69a786ecb512da40b36b1289aadb9e3f9fd45121/attrs-17.3.0.tar.gz" } ], "17.4.0": [ { "comment_text": "", "digests": { "md5": "5835a573b3f0316e1602dac3fd9c1daf", "sha256": "a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450" }, "downloads": -1, "filename": "attrs-17.4.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5835a573b3f0316e1602dac3fd9c1daf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31658, "upload_time": "2017-12-30T08:20:05", "url": "https://files.pythonhosted.org/packages/b5/60/4e178c1e790fd60f1229a9b3cb2f8bc2f4cc6ff2c8838054c142c70b5adc/attrs-17.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d7a89063b2e0fd36bd82389c4d82821d", "sha256": "1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9" }, "downloads": -1, "filename": "attrs-17.4.0.tar.gz", "has_sig": true, "md5_digest": "d7a89063b2e0fd36bd82389c4d82821d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 97071, "upload_time": "2017-12-30T08:20:08", "url": "https://files.pythonhosted.org/packages/8b/0b/a06cfcb69d0cb004fde8bc6f0fd192d96d565d1b8aa2829f0f20adb796e5/attrs-17.4.0.tar.gz" } ], "18.1.0": [ { "comment_text": "", "digests": { "md5": "50ecf73eb9461857ae1f089499e02a1a", "sha256": "4b90b09eeeb9b88c35bc642cbac057e45a5fd85367b985bd2809c62b7b939265" }, "downloads": -1, "filename": "attrs-18.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "50ecf73eb9461857ae1f089499e02a1a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28027, "upload_time": "2018-05-03T16:42:28", "url": "https://files.pythonhosted.org/packages/41/59/cedf87e91ed541be7957c501a92102f9cc6363c623a7666d69d51c78ac5b/attrs-18.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3f3f3e0750dab74cfa1dc8b0fd7a5f86", "sha256": "e0d0eb91441a3b53dab4d9b743eafc1ac44476296a2053b6ca3af0b139faf87b" }, "downloads": -1, "filename": "attrs-18.1.0.tar.gz", "has_sig": true, "md5_digest": "3f3f3e0750dab74cfa1dc8b0fd7a5f86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106346, "upload_time": "2018-05-03T16:42:31", "url": "https://files.pythonhosted.org/packages/e4/ac/a04671e118b57bee87dabca1e0f2d3bda816b7a551036012d0ca24190e71/attrs-18.1.0.tar.gz" } ], "18.2.0": [ { "comment_text": "", "digests": { "md5": "75dad87564a041bc7c60eeeafefb4911", "sha256": "ca4be454458f9dec299268d472aaa5a11f67a4ff70093396e1ceae9c76cf4bbb" }, "downloads": -1, "filename": "attrs-18.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "75dad87564a041bc7c60eeeafefb4911", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34713, "upload_time": "2018-09-01T04:50:57", "url": "https://files.pythonhosted.org/packages/3a/e1/5f9023cc983f1a628a8c2fd051ad19e76ff7b142a0faf329336f9a62a514/attrs-18.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44700294787c8018858777fc150e5d40", "sha256": "10cbf6e27dbce8c30807caf056c8eb50917e0eaafe86347671b57254006c3e69" }, "downloads": -1, "filename": "attrs-18.2.0.tar.gz", "has_sig": true, "md5_digest": "44700294787c8018858777fc150e5d40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 116817, "upload_time": "2018-09-01T04:51:00", "url": "https://files.pythonhosted.org/packages/0f/9e/26b1d194aab960063b266170e53c39f73ea0d0d3f5ce23313e0ec8ee9bdf/attrs-18.2.0.tar.gz" } ], "19.1.0": [ { "comment_text": "", "digests": { "md5": "853dff18dd0f6cf4e9abc357e9df6e17", "sha256": "69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79" }, "downloads": -1, "filename": "attrs-19.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "853dff18dd0f6cf4e9abc357e9df6e17", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 35784, "upload_time": "2019-03-03T09:07:56", "url": "https://files.pythonhosted.org/packages/23/96/d828354fa2dbdf216eaa7b7de0db692f12c234f7ef888cc14980ef40d1d2/attrs-19.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2be7bce157988928f5ff2bb50a0b510d", "sha256": "f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399" }, "downloads": -1, "filename": "attrs-19.1.0.tar.gz", "has_sig": true, "md5_digest": "2be7bce157988928f5ff2bb50a0b510d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 124220, "upload_time": "2019-03-03T09:07:58", "url": "https://files.pythonhosted.org/packages/cc/d9/931a24cc5394f19383fbbe3e1147a0291276afa43a0dc3ed0d6cd9fda813/attrs-19.1.0.tar.gz" } ], "19.2.0": [ { "comment_text": "", "digests": { "md5": "36ade83b0f83d1504848a3aeab0bbc16", "sha256": "ec20e7a4825331c1b5ebf261d111e16fa9612c1f7a5e1f884f12bd53a664dfd2" }, "downloads": -1, "filename": "attrs-19.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "36ade83b0f83d1504848a3aeab0bbc16", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 40717, "upload_time": "2019-10-01T15:08:40", "url": "https://files.pythonhosted.org/packages/6b/e8/2ecaf86b128a34e225807f03b22664302937ab826bd3b7eccab6754d29ea/attrs-19.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5a6ee80beaa072bd2b3bcb6fee0d508", "sha256": "f913492e1663d3c36f502e5e9ba6cd13cf19d7fab50aa13239e420fef95e1396" }, "downloads": -1, "filename": "attrs-19.2.0.tar.gz", "has_sig": true, "md5_digest": "d5a6ee80beaa072bd2b3bcb6fee0d508", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 134333, "upload_time": "2019-10-01T15:08:50", "url": "https://files.pythonhosted.org/packages/bd/69/2833f182ea95ea1f17e9a7559b8b92ebfdf4f68b5c58b15bc10f47bc2e01/attrs-19.2.0.tar.gz" } ], "19.3.0": [ { "comment_text": "", "digests": { "md5": "15c8ca1fd31e80e02b38064e835ddcd8", "sha256": "08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c" }, "downloads": -1, "filename": "attrs-19.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "15c8ca1fd31e80e02b38064e835ddcd8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 39472, "upload_time": "2019-10-15T05:52:40", "url": "https://files.pythonhosted.org/packages/a2/db/4313ab3be961f7a763066401fb77f7748373b6094076ae2bda2806988af6/attrs-19.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b2db50fcc31be34d32798183c9bd062", "sha256": "f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" }, "downloads": -1, "filename": "attrs-19.3.0.tar.gz", "has_sig": true, "md5_digest": "5b2db50fcc31be34d32798183c9bd062", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 132477, "upload_time": "2019-10-15T05:52:42", "url": "https://files.pythonhosted.org/packages/98/c3/2c227e66b5e896e15ccdae2e00bbc69aa46e9a8ce8869cc5fa96310bf612/attrs-19.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "15c8ca1fd31e80e02b38064e835ddcd8", "sha256": "08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c" }, "downloads": -1, "filename": "attrs-19.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "15c8ca1fd31e80e02b38064e835ddcd8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 39472, "upload_time": "2019-10-15T05:52:40", "url": "https://files.pythonhosted.org/packages/a2/db/4313ab3be961f7a763066401fb77f7748373b6094076ae2bda2806988af6/attrs-19.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b2db50fcc31be34d32798183c9bd062", "sha256": "f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" }, "downloads": -1, "filename": "attrs-19.3.0.tar.gz", "has_sig": true, "md5_digest": "5b2db50fcc31be34d32798183c9bd062", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 132477, "upload_time": "2019-10-15T05:52:42", "url": "https://files.pythonhosted.org/packages/98/c3/2c227e66b5e896e15ccdae2e00bbc69aa46e9a8ce8869cc5fa96310bf612/attrs-19.3.0.tar.gz" } ] }