{ "info": { "author": "OpenStack", "author_email": "openstack-dev@lists.openstack.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Environment :: OpenStack", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5" ], "description": "Introduction\n============\n\nhacking is a set of flake8 plugins that test and enforce the :ref:`StyleGuide`.\n\nHacking pins its dependencies, as a new release of some dependency can break\nhacking based gating jobs. This is because new versions of dependencies can\nintroduce new rules, or make existing rules stricter.\n\nInstallation\n============\n\nhacking is available from pypi, so just run::\n\n pip install hacking\n\nThis will install specific versions of ``flake8`` with the ``hacking``,\n``pep8``, ``mccabe`` and ``pyflakes`` plugins.\n\nOrigin\n======\n\nHacking started its life out as a text file in Nova's first commit. It was\ninitially based on the `Google Python Style Guide`_, and over time more\nOpenStack specific rules were added. Hacking serves several purposes:\n\n1. Agree on a common style guide so reviews don't get bogged down on style\n nit picks. (example: docstring guidelines)\n2. Make code written by many different authors easier to read by making the\n style more uniform. (example: unix vs windows newlines)\n3. Call out dangerous patterns and avoid them. (example: shadowing built-in\n or reserved words)\n\nInitially the hacking style guide was enforced manually by reviewers, but this\nwas a big waste of time so hacking, the tool, was born to automate\nthe process and remove the extra burden from human reviewers.\n\n.. _`Google Python Style Guide`: https://google.github.io/styleguide/pyguide.html\n\nVersioning\n==========\n\nhacking uses the ``major.minor.maintenance`` release notation, where maintenance\nreleases cannot contain new checks. This way projects can gate on hacking\nby pinning on the ``major.minor`` number while accepting maintenance updates\nwithout being concerned that a new version will break the gate with a new\ncheck.\n\nFor example a project can depend on ``hacking>=0.10.0,<0.11.0``, and can know\nthat ``0.10.1`` will not fail in places where ``0.10.0`` passed.\n\n\nAdding additional checks\n========================\n\nEach check is a pep8 plugin so read\n\n- https://github.com/jcrocholl/pep8/blob/master/docs/developer.rst#contribute\n\nThe focus of new or changed rules should be to do one of the following\n\n- Substantially increase the reviewability of the code (eg: H301, H303)\n as they make it easy to understand where symbols come from)\n- Catch a common programming error that may arise in the future (H201)\n- Prevent a situation that would 100% of the time be -1ed by\n developers (H903)\n\nBut, as always, remember that these are Guidelines. Treat them as\nsuch. There are always times for exceptions. All new rules should\nsupport noqa.\n\nIf a check needs to be staged in, or it does not apply to every project or its\nbranch, it can be added as off by default.\n\nRequirements\n------------\n- The check must already have community support. We do not want to dictate\n style, only enforce it.\n- The canonical source of the OpenStack Style Guidelines is :ref:`StyleGuide`,\n and hacking just enforces\n them; so when adding a new check, it must be in ``HACKING.rst``\n- False negatives are ok, but false positives are not\n- Cannot be project specific, project specific checks should be `Local Checks`_\n- Include extensive tests\n- Registered as entry_points in ``setup.cfg``\n- Error code must be in the relevant ``Hxxx`` group\n- The check should not attempt to import modules from the code being checked.\n Importing random modules, has caused all kinds of trouble for us in the past.\n\n\nEnabling off-by-default checks\n==============================\n\nSome of the available checks are disabled by default. These checks are:\n\n- [H106] Don't put vim configuration in source files.\n- [H203] Use assertIs(Not)None to check for None.\n- [H204] Use assert(Not)Equal to check for equality.\n- [H205] Use assert(Greater|Less)(Equal) for comparison.\n- [H210] Require 'autospec', 'spec', or 'spec_set' in\n mock.patch/mock.patch.object calls\n- [H904] Delay string interpolations at logging calls.\n\nTo enable these checks, edit the ``flake8`` section of the ``tox.ini`` file.\nFor example to enable H106 and H203:\n\n.. code-block:: ini\n\n [flake8]\n enable-extensions = H106,H203\n\nLocal Checks\n============\n\nhacking supports having local changes in a source tree. They can be configured\nto run in two different ways. They can be registered individually, or with\na factory function.\n\nFor individual registration, put a comma separated list of pep8 compatible\ncheck functions into the hacking section of tox.ini. E.g.:\n\n.. code-block:: ini\n\n [hacking]\n local-check = nova.tests.hacking.bad_code_is_terrible\n\nAlternately, you can specify the location of a callable that will be called\nat registration time and will be passed the registration function. The callable\nshould expect to call the passed in function on everything if wants to\nregister. Such as:\n\n.. code-block:: ini\n\n [hacking]\n local-check-factory = nova.tests.hacking.factory\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://docs.openstack.org/hacking/latest/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "hacking", "package_url": "https://pypi.org/project/hacking/", "platform": "", "project_url": "https://pypi.org/project/hacking/", "project_urls": { "Homepage": "https://docs.openstack.org/hacking/latest/" }, "release_url": "https://pypi.org/project/hacking/1.1.0/", "requires_dist": [ "pbr (!=2.1.0,>=2.0.0)", "flake8 (<2.7.0,>=2.6.0)", "six (>=1.10.0)", "flake8-docstrings (==0.2.1.post1); extra == 'pep257'", "coverage (!=4.4,>=4.0); extra == 'test'", "fixtures (>=3.0.0); extra == 'test'", "mock (>=2.0.0); extra == 'test'", "python-subunit (>=1.0.0); extra == 'test'", "sphinx (!=1.6.6,!=1.6.7,>=1.6.2); extra == 'test'", "openstackdocstheme (>=1.18.1); extra == 'test'", "testrepository (>=0.0.18); extra == 'test'", "testscenarios (>=0.4); extra == 'test'", "testtools (>=2.2.0); extra == 'test'", "eventlet (!=0.18.3,!=0.20.1,>=0.18.2); extra == 'test'", "reno (>=2.5.0); extra == 'test'" ], "requires_python": "", "summary": "OpenStack Hacking Guideline Enforcement", "version": "1.1.0" }, "last_serial": 3844171, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "0e7a588653721d752218e6df91fe60a6", "sha256": "3781574659aa552cb246150ce24210fb23e2e504607c5b9da19957fdcb216aa7" }, "downloads": -1, "filename": "hacking-0.10.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0e7a588653721d752218e6df91fe60a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28548, "upload_time": "2015-01-07T19:29:34", "url": "https://files.pythonhosted.org/packages/46/9b/bc6ae5362b725086c4f3793e1ef14bc83331958c8e84fed0565025ab538b/hacking-0.10.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ecd0dde25b837527fe6082db1a9c1663", "sha256": "d4142ebfa3242e3f449dc393a40b17022f80a5c3eb34aa56153a0c49844c7c8a" }, "downloads": -1, "filename": "hacking-0.10.0.tar.gz", "has_sig": false, "md5_digest": "ecd0dde25b837527fe6082db1a9c1663", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41197, "upload_time": "2015-01-07T19:29:36", "url": "https://files.pythonhosted.org/packages/fc/8a/ca67a3daad7a4aa2093f67443617c0ef7a06a41de32bc908349874d7c0c6/hacking-0.10.0.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "a353f8f2731630040887a24abb333b33", "sha256": "8647279640159d96222798d95343941a28bad6d44f9a628a3d6a310c95893203" }, "downloads": -1, "filename": "hacking-0.10.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a353f8f2731630040887a24abb333b33", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28561, "upload_time": "2015-01-30T22:17:04", "url": "https://files.pythonhosted.org/packages/2c/42/ae9749e0001d11314ef5a7ec8b0f85f27e7039189578b680aa7971a5e5c2/hacking-0.10.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1942abdcdf8a3d37a5ecc17e8bbd06da", "sha256": "ab5dd17d927f0f980e759a33454e2471587e5650be48222f35f79996f472c016" }, "downloads": -1, "filename": "hacking-0.10.1.tar.gz", "has_sig": false, "md5_digest": "1942abdcdf8a3d37a5ecc17e8bbd06da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39768, "upload_time": "2015-01-30T22:17:07", "url": "https://files.pythonhosted.org/packages/ab/43/cc7a003f3a70e4b5140af71c2a2eae28430c052814890481d592911889ce/hacking-0.10.1.tar.gz" } ], "0.10.2": [ { "comment_text": "", "digests": { "md5": "f246b6dee23a8cc856933576b0389b1e", "sha256": "85eabe48138a3822a36141e874b826eae2334eec2c0981adce65f6ce004ec6c6" }, "downloads": -1, "filename": "hacking-0.10.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f246b6dee23a8cc856933576b0389b1e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28569, "upload_time": "2015-05-19T00:49:44", "url": "https://files.pythonhosted.org/packages/7d/70/296324caa48707c88643ed512276f9aaa60fc1cb33aa92de60ae5177468b/hacking-0.10.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1fc57792bfb5e9715d1d4da56ebcc9df", "sha256": "5771028dafaf374ee52267f5b6217133f943b18067ccbaff799280ddc60461a8" }, "downloads": -1, "filename": "hacking-0.10.2.tar.gz", "has_sig": false, "md5_digest": "1fc57792bfb5e9715d1d4da56ebcc9df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41108, "upload_time": "2015-05-19T00:49:47", "url": "https://files.pythonhosted.org/packages/00/7a/bd550a3449ea0aeb9b92254ee09744e680d1130efc89b613c4564cbe8278/hacking-0.10.2.tar.gz" } ], "0.10.3": [ { "comment_text": "", "digests": { "md5": "30c9f895852d46f69797ecf32c5cb586", "sha256": "165c1388ed87549e1f0350e10b828ee3e05232406018d8a04099f77ce3fc1254" }, "downloads": -1, "filename": "hacking-0.10.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "30c9f895852d46f69797ecf32c5cb586", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28539, "upload_time": "2017-03-02T19:45:31", "url": "https://files.pythonhosted.org/packages/7e/ab/40987ca5b2d916ed1c9d57cf5a975c3637ac478de5f6301e1979d21b47dd/hacking-0.10.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d72d48fa1a2509116652094c3c263178", "sha256": "6368126562604370c6781710030ee3880ba365530304c8b6eb301f9714f9522a" }, "downloads": -1, "filename": "hacking-0.10.3.tar.gz", "has_sig": false, "md5_digest": "d72d48fa1a2509116652094c3c263178", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41119, "upload_time": "2017-03-02T19:45:33", "url": "https://files.pythonhosted.org/packages/62/8b/1cc677b0ccf9b15b5f0901aafa00aaa701433b0b8eebf6068761067dd2f7/hacking-0.10.3.tar.gz" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "898ee22bd0bb8a1fd7a823f9f4b5ada6", "sha256": "0d5aa205c27ebfb25b2e3125d7309858225a5a11d208ac99401099556c4c0fee" }, "downloads": -1, "filename": "hacking-0.11.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "898ee22bd0bb8a1fd7a823f9f4b5ada6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 30911, "upload_time": "2016-04-20T17:51:15", "url": "https://files.pythonhosted.org/packages/57/4f/2d0932d1d5845a969336bc5eef02e7a00fdad28f8de949abbf333a12d859/hacking-0.11.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5eb6a3129ebf9a43f364508009b57cc9", "sha256": "04193e1b3d8def25f32e0735034c0e93bee79b4cd2b606111ef7185a06c5b252" }, "downloads": -1, "filename": "hacking-0.11.0.tar.gz", "has_sig": false, "md5_digest": "5eb6a3129ebf9a43f364508009b57cc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43745, "upload_time": "2016-04-20T17:51:30", "url": "https://files.pythonhosted.org/packages/24/50/ae03a84c5b4c49931b0a6a9f70cecd882ee19f331590a8aad66774e30eda/hacking-0.11.0.tar.gz" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "2bf2f7797a1e015017c835e4833ad991", "sha256": "36f73ce9c04238a065f55c1c76a6bcbb7ecadbd9fe069572095c72980a5f8f72" }, "downloads": -1, "filename": "hacking-0.12.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2bf2f7797a1e015017c835e4833ad991", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 32428, "upload_time": "2016-11-07T20:35:22", "url": "https://files.pythonhosted.org/packages/91/ba/ef758cd0de7660fbf741fe067f3d82a708b7996a82b0569013419bd360ec/hacking-0.12.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c2b5da71dc962c288d9f81284f0cd18", "sha256": "ef6c13e23309506dbd2ead77c52ab688959b1816a7a3061f25388a176df60e96" }, "downloads": -1, "filename": "hacking-0.12.0.tar.gz", "has_sig": false, "md5_digest": "3c2b5da71dc962c288d9f81284f0cd18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48374, "upload_time": "2016-11-07T20:35:25", "url": "https://files.pythonhosted.org/packages/37/b2/2ba0f73571f588358ecb4c4721fe9174d309fcc3b1a4ed89f00cf535c920/hacking-0.12.0.tar.gz" } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "c529a55b939537fe16c587c189b3e5ca", "sha256": "7e6f766ef6e5700202567e380b58d3535c5211ab95e4205adad76b3525722017" }, "downloads": -1, "filename": "hacking-0.13.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c529a55b939537fe16c587c189b3e5ca", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33026, "upload_time": "2016-12-01T18:05:20", "url": "https://files.pythonhosted.org/packages/0e/cb/69832aae051053b0e520a8a734dda05da0937778abb0cc016fcac6536782/hacking-0.13.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27bd6e617a32b0ca91eaaefbdfbbf5f4", "sha256": "0402905b392c428d62bee2095fa6b789ca39c69d3b8ccf33bad219ddb4c03ce8" }, "downloads": -1, "filename": "hacking-0.13.0.tar.gz", "has_sig": false, "md5_digest": "27bd6e617a32b0ca91eaaefbdfbbf5f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49171, "upload_time": "2016-12-01T18:05:24", "url": "https://files.pythonhosted.org/packages/b6/be/67678ca6d422e99ff39a054a62403dcb1f8b95666de392dd8354d828acfb/hacking-0.13.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "13454a02d09116f7c47d2cf43088d5d7", "sha256": "6539b31429645da81a62ff6af57524688bb68c042c8c8fdb215252e91ce95a7f" }, "downloads": -1, "filename": "hacking-0.5.0.tar.gz", "has_sig": false, "md5_digest": "13454a02d09116f7c47d2cf43088d5d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90846, "upload_time": "2013-03-18T19:24:19", "url": "https://files.pythonhosted.org/packages/c8/9c/a0082d5d7d9b50eb17bfadc2dc4c570e8046989e3c93ae2f3bbf3709b578/hacking-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "410d512e0a8128f33c03bc510a268a68", "sha256": "a0f25f032ef5ae44fbb56865bbcb0c1c9ef8f864addf47c23f900779b7d715a7" }, "downloads": -1, "filename": "hacking-0.5.1.tar.gz", "has_sig": false, "md5_digest": "410d512e0a8128f33c03bc510a268a68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 108631, "upload_time": "2013-03-20T00:18:52", "url": "https://files.pythonhosted.org/packages/4f/5d/148f68a9e302504bde827c5c23716cc70480888a0f48bb3412b21d643d08/hacking-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "efb7201e2b26839152fb1daf135360a2", "sha256": "008a86e23a23f9eb160a8dde34d67595dcbdc30fb73a08bd06b4e27e64cefe1b" }, "downloads": -1, "filename": "hacking-0.5.2.tar.gz", "has_sig": false, "md5_digest": "efb7201e2b26839152fb1daf135360a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 108523, "upload_time": "2013-03-20T01:22:24", "url": "https://files.pythonhosted.org/packages/11/75/78f6cacf8719616dafc62534164cf0e9dcf0f6784a2f1fced642f42139d4/hacking-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "904554ec9b5c20170920184f88234801", "sha256": "095563f535d7aae778e55cb6b59dce9d8dc2d9bb4699f68b67b2e60af1bcbb7c" }, "downloads": -1, "filename": "hacking-0.5.3.tar.gz", "has_sig": false, "md5_digest": "904554ec9b5c20170920184f88234801", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 104774, "upload_time": "2013-04-27T14:39:50", "url": "https://files.pythonhosted.org/packages/80/9b/842885dcc49c7a814e2799476df1b9871ad9cbed6773114f9c485e5fa01a/hacking-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "2976485f64272f1d5c39df24b9ecd36f", "sha256": "5cd4b4080d3e9c73113826426052161902940ce8b8aeba089f25204159bf8b30" }, "downloads": -1, "filename": "hacking-0.5.4.tar.gz", "has_sig": false, "md5_digest": "2976485f64272f1d5c39df24b9ecd36f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 104354, "upload_time": "2013-05-15T21:36:46", "url": "https://files.pythonhosted.org/packages/b1/36/c82ef350228f52a7a084684b31b80443745f938df060ee687b1d01bbe32f/hacking-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "368630cd4c1c3cbc154c80021483b5db", "sha256": "dc076d36976f2c1dcb67d067ac23dce08fa02b3f787132806bbb343954d26a57" }, "downloads": -1, "filename": "hacking-0.5.5.tar.gz", "has_sig": false, "md5_digest": "368630cd4c1c3cbc154c80021483b5db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 112474, "upload_time": "2013-06-10T18:20:28", "url": "https://files.pythonhosted.org/packages/a4/42/c889082640ddd4047a6911dfdef695a8d07d0417b3846a044609868acdab/hacking-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "1db964d1bf1ffaa227025f34ab897866", "sha256": "465879eea590a9a6b7dd4b37d4672cdb1036d0a2d1eea557b69e670dc1e22e09" }, "downloads": -1, "filename": "hacking-0.5.6.tar.gz", "has_sig": false, "md5_digest": "1db964d1bf1ffaa227025f34ab897866", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 113035, "upload_time": "2013-06-26T21:52:40", "url": "https://files.pythonhosted.org/packages/53/a0/7fc6346d87cce7f7f121b5801465fa0e5a0c2d709cb5df01ec042147939a/hacking-0.5.6.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "b8d5b1467f1a29033e48e44dd553cebe", "sha256": "2a13323fe24a59bf9d63eb24054863cd1f0fb2c45b399f89ace549bb5f9ffbaf" }, "downloads": -1, "filename": "hacking-0.6.0.tar.gz", "has_sig": false, "md5_digest": "b8d5b1467f1a29033e48e44dd553cebe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 117782, "upload_time": "2013-07-18T22:55:59", "url": "https://files.pythonhosted.org/packages/03/c7/88bcce36996cc902d0f863c77596127cb76d9f9a2ac3c3dab47b36fd69ba/hacking-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "bc659e5280315b7251d8579e0cbd990e", "sha256": "518efe2289426d528e9466dda18e03516bd0436b9c44d53dc1c2c47df7836aa0" }, "downloads": -1, "filename": "hacking-0.7.0.tar.gz", "has_sig": false, "md5_digest": "bc659e5280315b7251d8579e0cbd990e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 121042, "upload_time": "2013-08-09T23:21:41", "url": "https://files.pythonhosted.org/packages/a4/94/1ffab421e4f45523664231e0c845bde9bdb0490c3abceb7ae06a6163f03f/hacking-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "5be2d5f78cd4e7e779f1b9b9908f6e7b", "sha256": "884838d6faacd46e910319f255e78f415df41eebfeeaf5736da3ec3d29f9c500" }, "downloads": -1, "filename": "hacking-0.7.1.tar.gz", "has_sig": false, "md5_digest": "5be2d5f78cd4e7e779f1b9b9908f6e7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 122781, "upload_time": "2013-09-10T18:57:42", "url": "https://files.pythonhosted.org/packages/c7/c5/0d4864d173e3f35fcb8f3f185f0beedd185f51beacf3defc5ce5add066b6/hacking-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "d1bd7139eaf67ecd218e4f38c4eb2e2d", "sha256": "5fe47174d00f03040fe70dfe530f277c62d8c519c28c8850b9f043e3b6ad6c71" }, "downloads": -1, "filename": "hacking-0.7.2.tar.gz", "has_sig": false, "md5_digest": "d1bd7139eaf67ecd218e4f38c4eb2e2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 125205, "upload_time": "2013-09-10T21:24:23", "url": "https://files.pythonhosted.org/packages/06/e7/4f40332e5ee4ed0f24f366e69885dd94abb4ea05b9cb24a419022457f97a/hacking-0.7.2.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "26c9d04e894e45ea5e0e68fe710fd5d3", "sha256": "4419b8830a391c03727af4ad82578a02ed38a5c5d7af7c2b940495ee4d99bcae" }, "downloads": -1, "filename": "hacking-0.8.0.tar.gz", "has_sig": false, "md5_digest": "26c9d04e894e45ea5e0e68fe710fd5d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 123437, "upload_time": "2013-10-30T11:28:03", "url": "https://files.pythonhosted.org/packages/fb/dd/13214749cff9b2074a5cadfe66b6becbba33017e4cb9a5ce56b7e0b59e4b/hacking-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "92a7b407dd78640f564da5fa3c91c61b", "sha256": "65390ea60215e4222d9ddbc1241a0f3e05644e4f55b305e69755ed8eab3decb5" }, "downloads": -1, "filename": "hacking-0.8.1.tar.gz", "has_sig": false, "md5_digest": "92a7b407dd78640f564da5fa3c91c61b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51800, "upload_time": "2014-03-21T22:56:29", "url": "https://files.pythonhosted.org/packages/be/8b/74fab37d23be2b337457f0192689ac34bde0deca753db901748ce8e41a97/hacking-0.8.1.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "2e8df83fee963977daeaf72bd0c6003f", "sha256": "4de98644805b9af4ebbf072eeb7162d776c3def059514ac70e7188fc3b4d61af" }, "downloads": -1, "filename": "hacking-0.9.0.tar.gz", "has_sig": false, "md5_digest": "2e8df83fee963977daeaf72bd0c6003f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43713, "upload_time": "2014-06-04T22:08:48", "url": "https://files.pythonhosted.org/packages/20/b0/ed11dbe4af534329f28e1da0b1d064ea4fd333d6a55cccb15619b7731fa8/hacking-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "718ab608d648b07f4e3bc4861f2af13c", "sha256": "5ecbb5e194c493d9de76d29685e4397431dca2980fd9ae4cf720bfc5ff0eb178" }, "downloads": -1, "filename": "hacking-0.9.1-py2-none-any.whl", "has_sig": false, "md5_digest": "718ab608d648b07f4e3bc4861f2af13c", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 32525, "upload_time": "2014-06-09T05:50:15", "url": "https://files.pythonhosted.org/packages/52/e9/ab27f5e67beaeda970f50ad90cdd622f12d9a2db8d2534ce231cab058c65/hacking-0.9.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "259d03759c47c89013f2248e5f2eae4a", "sha256": "698b5ff99ac12a17b899f35b99b961f4b519f22cb778d1bd528dd0342e5aed44" }, "downloads": -1, "filename": "hacking-0.9.1.tar.gz", "has_sig": false, "md5_digest": "259d03759c47c89013f2248e5f2eae4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43440, "upload_time": "2014-06-09T05:50:12", "url": "https://files.pythonhosted.org/packages/d5/b1/cfab7059192e51fe1d4885c706c3704db853b0b35ebb321f6d2fd9c7a117/hacking-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "edbb296804196d11375cc417f48b9b0a", "sha256": "7822ebf8e79038e9d7843537c8e32a643805085324dd46794bb2bc730bce3a85" }, "downloads": -1, "filename": "hacking-0.9.2-py2-none-any.whl", "has_sig": false, "md5_digest": "edbb296804196d11375cc417f48b9b0a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 32574, "upload_time": "2014-06-12T01:13:06", "url": "https://files.pythonhosted.org/packages/d4/0d/08c01a6a69915fddaf6eeaff9d462bae262b0af59e24616ded2450b7cdec/hacking-0.9.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "64aef2e72a0a58f3177110267faa898d", "sha256": "2a584e5bf185ee19517d4e72a852b729578aab3822ae345534e1f35338582ba4" }, "downloads": -1, "filename": "hacking-0.9.2.tar.gz", "has_sig": false, "md5_digest": "64aef2e72a0a58f3177110267faa898d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43956, "upload_time": "2014-06-12T01:13:03", "url": "https://files.pythonhosted.org/packages/3a/84/b3626dafcbe2c789888c6f6108a1c05a3f49c149000d5d83476201e5bf3f/hacking-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "4f6841a18fced404eb0fccfd038c1a2e", "sha256": "7db8441a8f0c5cbfc8459a71ee65d9bc2b40f82e53867e2989eca4fe493e0e4b" }, "downloads": -1, "filename": "hacking-0.9.3-py2-none-any.whl", "has_sig": false, "md5_digest": "4f6841a18fced404eb0fccfd038c1a2e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 32599, "upload_time": "2014-10-28T18:19:04", "url": "https://files.pythonhosted.org/packages/ab/1f/d25e4ea034f4c5b32d2056d46c9f8a9ce49bc3cd17a9bff62010c04c294b/hacking-0.9.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7d012856744f11e345ced5fb650b865f", "sha256": "791217a54e5a5a7c66bfb983a40cce2fbbc769847f1a8ec4f458f1a0dc9c167a" }, "downloads": -1, "filename": "hacking-0.9.3.tar.gz", "has_sig": false, "md5_digest": "7d012856744f11e345ced5fb650b865f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44095, "upload_time": "2014-10-28T18:19:01", "url": "https://files.pythonhosted.org/packages/38/30/ddb9bd64b3ccadd0dedb09645c20a0e33fdd3dc9839312969f8ab1257356/hacking-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "f0946e93171a4ec8e93cc6112fd00ee6", "sha256": "599e401850e385dfb51cb0aabcc2395132520b5ff103983acab0e9020f08d8ef" }, "downloads": -1, "filename": "hacking-0.9.4-py2-none-any.whl", "has_sig": false, "md5_digest": "f0946e93171a4ec8e93cc6112fd00ee6", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 32750, "upload_time": "2014-12-02T18:29:49", "url": "https://files.pythonhosted.org/packages/43/0c/20990aae355b46fa0ede8d389599264bdb1fc175e45646dee9b423fc24b7/hacking-0.9.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bfba8aeea922668a41f21bfe587e88bc", "sha256": "827695b9f8ccbddac97bf24f14ccddb4b3cb31dd678b11269d51ae089a947dde" }, "downloads": -1, "filename": "hacking-0.9.4.tar.gz", "has_sig": false, "md5_digest": "bfba8aeea922668a41f21bfe587e88bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42062, "upload_time": "2014-12-02T18:29:46", "url": "https://files.pythonhosted.org/packages/73/f1/1fa496d95467ac5c30f876540c09c714d0d8da4584dd1809698bdd342cab/hacking-0.9.4.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "e7bd40f73b0acb55b10a75a9ac303f56", "sha256": "3f7d6402ad30947f3cd561c5b2a67e82657857388ee7e13a9af71b727adc8971" }, "downloads": -1, "filename": "hacking-0.9.5-py2-none-any.whl", "has_sig": false, "md5_digest": "e7bd40f73b0acb55b10a75a9ac303f56", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 32760, "upload_time": "2014-12-04T18:17:59", "url": "https://files.pythonhosted.org/packages/6f/73/8702df35f87e2b39fcefc6f0146495a8d73249314f4717286a7bf4ad8d9c/hacking-0.9.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7ab4dc83ed67a4f2f95bdbe8eb9033df", "sha256": "4010669f1c1857fb7e3721b0247791feec6aac9e18df05b711ab3edcce561b00" }, "downloads": -1, "filename": "hacking-0.9.5.tar.gz", "has_sig": false, "md5_digest": "7ab4dc83ed67a4f2f95bdbe8eb9033df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43145, "upload_time": "2014-12-04T18:18:01", "url": "https://files.pythonhosted.org/packages/75/ef/a1666dbc204af284764c7e369ef5d7380ae317074515320216441d7ad97a/hacking-0.9.5.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "063b81cd7f17d920efdd15fa8d9cd8bb", "sha256": "73609803a4690a7676f432ab2edd7c7ec316787893d7a563a5d5bd4c72f7020f" }, "downloads": -1, "filename": "hacking-0.9.6-py2-none-any.whl", "has_sig": false, "md5_digest": "063b81cd7f17d920efdd15fa8d9cd8bb", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 32996, "upload_time": "2015-05-19T21:30:35", "url": "https://files.pythonhosted.org/packages/63/86/c880e14831417cd6879aae7bf9ad23027a5188f68fd390a1ef9259609ff5/hacking-0.9.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68717f1dc25cf074f7b48f3256df894e", "sha256": "aba204f93beb3aa60732bfe910116c9fa9756efd58f00aea66ee856e07199f50" }, "downloads": -1, "filename": "hacking-0.9.6.tar.gz", "has_sig": false, "md5_digest": "68717f1dc25cf074f7b48f3256df894e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43287, "upload_time": "2015-05-19T21:30:38", "url": "https://files.pythonhosted.org/packages/3f/35/657c99d44944a9e32830860f056ab918863a4b3fb3632785ac6c5ba2337f/hacking-0.9.6.tar.gz" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "bdc1f0e7baf5ba54b1b5c6cb533d7757", "sha256": "1c3dfd73aa9de48864611f8195b943b344799d10012be753b437e2b13191ccf7" }, "downloads": -1, "filename": "hacking-0.9.7-py2-none-any.whl", "has_sig": false, "md5_digest": "bdc1f0e7baf5ba54b1b5c6cb533d7757", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 32967, "upload_time": "2017-03-08T12:50:48", "url": "https://files.pythonhosted.org/packages/8c/5e/33373aae2f956c7f63ad438972f1f1343c92e8e00bb31222e2c4fb189c6a/hacking-0.9.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "87a4003d7476b9145850a14048e35aff", "sha256": "2c9b63212d5cdd6e58e7aedc9d7e50a1f2df97ac70d1a6e4096c50e704006ea5" }, "downloads": -1, "filename": "hacking-0.9.7.tar.gz", "has_sig": false, "md5_digest": "87a4003d7476b9145850a14048e35aff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42971, "upload_time": "2017-03-08T12:50:50", "url": "https://files.pythonhosted.org/packages/08/cf/f443237140e99d94ab3e647f52b193c19a25ed4002753f4d94c80cfa3a58/hacking-0.9.7.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "1aed5da61ead0c26774b38a4bd57b669", "sha256": "72d84979827738b258515b5413197ef88fc5e8a8f3c0e7b7f4684a84d32b06b7" }, "downloads": -1, "filename": "hacking-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1aed5da61ead0c26774b38a4bd57b669", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34891, "upload_time": "2017-09-06T08:24:09", "url": "https://files.pythonhosted.org/packages/25/95/705a1afe3808a9fbd7dc28b5647bc9f2a1138689e47cbd9e1bd5399ded4b/hacking-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a0697b1793a3e7723ac2d1883c34adc", "sha256": "132c728fdf939576836bff112bcfd241c4b628fd90288744dd5e4b62744a3469" }, "downloads": -1, "filename": "hacking-1.0.0.tar.gz", "has_sig": false, "md5_digest": "4a0697b1793a3e7723ac2d1883c34adc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53453, "upload_time": "2017-09-06T08:24:12", "url": "https://files.pythonhosted.org/packages/fc/8c/6334aa99541cd5c51d67ea9c0e39e3e56231a25349f1da8521954fd6ba69/hacking-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "a157f5f68fdbee0a98ffbeb31d849857", "sha256": "d9ccda97228a46cbe562843469f3a82eb072f9ac1acefb4368c49a239bb19936" }, "downloads": -1, "filename": "hacking-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a157f5f68fdbee0a98ffbeb31d849857", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31182, "upload_time": "2018-05-08T13:21:39", "url": "https://files.pythonhosted.org/packages/71/05/ae66ec5a58e5c973ea09adcd4eac1a63e370579b768a2fd875172b8cc82e/hacking-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "643e16838df16ef407a17b06035e054f", "sha256": "23a306f3a1070a4469a603886ba709780f02ae7e0f1fc7061e5c6fb203828fee" }, "downloads": -1, "filename": "hacking-1.1.0.tar.gz", "has_sig": false, "md5_digest": "643e16838df16ef407a17b06035e054f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55620, "upload_time": "2018-05-08T13:21:43", "url": "https://files.pythonhosted.org/packages/16/31/f5cbbb18ef6885d26bc252f0abce8e7ca52cb6160384d5684707fee5253c/hacking-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a157f5f68fdbee0a98ffbeb31d849857", "sha256": "d9ccda97228a46cbe562843469f3a82eb072f9ac1acefb4368c49a239bb19936" }, "downloads": -1, "filename": "hacking-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a157f5f68fdbee0a98ffbeb31d849857", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31182, "upload_time": "2018-05-08T13:21:39", "url": "https://files.pythonhosted.org/packages/71/05/ae66ec5a58e5c973ea09adcd4eac1a63e370579b768a2fd875172b8cc82e/hacking-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "643e16838df16ef407a17b06035e054f", "sha256": "23a306f3a1070a4469a603886ba709780f02ae7e0f1fc7061e5c6fb203828fee" }, "downloads": -1, "filename": "hacking-1.1.0.tar.gz", "has_sig": false, "md5_digest": "643e16838df16ef407a17b06035e054f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55620, "upload_time": "2018-05-08T13:21:43", "url": "https://files.pythonhosted.org/packages/16/31/f5cbbb18ef6885d26bc252f0abce8e7ca52cb6160384d5684707fee5253c/hacking-1.1.0.tar.gz" } ] }