{ "info": { "author": "Jonathan Eunice", "author_email": "jonathan.eunice@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "\n\n| |travisci| |version| |versions| |impls| |wheel| |coverage| |br-coverage|\n\n.. |travisci| image:: https://api.travis-ci.org/jonathaneunice/withref.svg\n :target: http://travis-ci.org/jonathaneunice/withref\n\n.. |version| image:: http://img.shields.io/pypi/v/withref.svg?style=flat\n :alt: PyPI Package latest release\n :target: https://pypi.python.org/pypi/withref\n\n.. |versions| image:: https://img.shields.io/pypi/pyversions/withref.svg\n :alt: Supported versions\n :target: https://pypi.python.org/pypi/withref\n\n.. |impls| image:: https://img.shields.io/pypi/implementation/withref.svg\n :alt: Supported implementations\n :target: https://pypi.python.org/pypi/withref\n\n.. |wheel| image:: https://img.shields.io/pypi/wheel/withref.svg\n :alt: Wheel packaging support\n :target: https://pypi.python.org/pypi/withref\n\n.. |coverage| image:: https://img.shields.io/badge/test_coverage-100%25-6600CC.svg\n :alt: Test line coverage\n :target: https://pypi.python.org/pypi/withref\n\n.. |br-coverage| image:: https://img.shields.io/badge/branch_coverage-100%25-6600CC.svg\n :alt: Test branch coverage\n :target: https://pypi.python.org/pypi/withref\n\n\n``withref`` makes Python's ``with`` statement able to simplify complex\ndereferences. This is what I initially, naively thought the statement was\nfor, similar to the ``with`` statement of half-remembered Pascal.\n\nThe typical Python use is a more complex guard over the entry and exit\npoints for using an object. See e.g. `this effbot article\n`_, But ``withref`` makes\nthe simpler \"just give me the dereferenced object, please\" use case work as\nwell.\n\nUsage\n=====\n\n::\n\n from __future__ import print_function # Python 2/3 compatibility\n from withref import ref\n from stuf import stuf\n\n # stuf used for demonstration purposes only. Convenient way to\n # make dict entries accessible as dot-deferenceable properties.\n\n a = stuf({ 'b': { 'c': { 'c1': 1 }, 'd': 44.1 } })\n\n with ref(a.b.c) as c:\n c.c1 = 99\n\n print(a)\n a_ideal = stuf({'b': {'c': {'c1': 99}, 'd': 44.1}})\n assert a == a_ideal\n\nIt works with array-style references too, of course::\n\n with ref(a['b']['c']) as cc:\n c['c1'] = 99\n\n assert a == a_ideal\n\nBut beware OVER-dereferencing! While this works correctly::\n\n with ref(a.b.c.c1) as c1:\n print(c1)\n assert c1 == 99\n\nThis does NOT::\n\n with ref(a.b.c.c1) as c1:\n c1 = 12345\n assert c1 == 12345\n\n assert a.b.c.c1 == 99 # with heavy heart\n # because we just ostensibly set it to 12345\n\nUnlike Pascal, ``ref`` is not built into the language proper. And unlike Perl,\nPython is less eager to provide `lvalues\n`_ for every\nmention of a variable or value. As a result, ``ref`` can provide the *value*\nof the full-deferenced ``c1``, but not the assignable *lvalue*.\n\nLike Pascal's ``with``, ``ref`` removes N-1 layers of the enclosing structure\nfor values, but only N-2 for assignment. Still, in complex multi-layer\nstructures, this can be a nice simplification::\n\n with ref(app.config.server.wsgi) as wsgi:\n wsgi.logger = some_logger\n wsgi.debug_level = 4\n wsgi.port = 8080\n\narguably beats::\n\n app.config.server.wsgi.logger = some_logger\n app.config.server.wsgi.debug_level = 4\n app.config.server.wsgi.port = 8080\n\nfor simplicity and clarity.\n\nI see a lot of configuration code that constantly repeats the same long\nmulti-level dereferences. That style is repetitive (anti-DRY) and tends to\nleft-align code blocks, both of which impede program comprehension. Using the\n``with`` statement is a neat way to simplify and at the same time add a little extra\nvisual structure.\n\nAnd while assignment (\"lvalue production\") isn't always possible, there still are\nsome interesting tricks possible with simple value production::\n\n with ref(\"this is a string\"[0:4]) as t:\n print(t)\n\nAlternative\n===========\n\nWhile ``yadda.yadda.yadda`` referencing is all too common, one can also\nuse a more proximate variable assignment::\n\n wsgi = app.config.server.wsgi\n wsgi.logger = some_logger\n wsgi.debug_level = 4\n wsgi.port = 8080\n\nThis lacks the more indented structure of the ``withref`` approach, but\nis still much preferable to what you often find in the field.\n\nSee Also\n========\n\nThe `withhacks `_ module, which includes\nmany other fun hacks (multi-line lambdas, new looping structures, etc.)--but\nalso requires the `byteplay `_ module which\nactively introspects & munges Python bytecode (\"Danger, Will Robinson!\nDanger!\"), and has not been updated to work beyond Python 2.6. So it's out of\ncurrency with all but the very tail-end of modern Python.\n\nPossible Future Extension\n=========================\n\nAs ``withhacks`` shows, using introspection we could determine the lvalue of\nthe calling object even in the edge-case where it is a leaf-node of its\nenclosing structure. This would not require any bytecode changes, and should\nbe compatible with modern versions of Python (e.g. 2.7] and 3.x).\n\nWhether that trick can be done simply, portably, rock-solid reliably, and\ntransparently enough to satisfy those who code the modules that tend to most\nneed this kind of dereferencing simplification--i.e. complex modules often\nused in production settings, into which they are understandably loathe to\nintroduce any possible sources of error or any performance impedance--that\nis the key open question.\n\nNotes\n=====\n\n* Automated multi-version testing managed with `pytest\n `_, `pytest-cov\n `_,\n `coverage `_\n and `tox\n `_.\n Packaging linting with `pyroma `_.\n\n Successfully packaged for, and\n tested against, all late-model versions of Python: 2.6, 2.7, 3.3,\n 3.4, 3.5, 3.6, as well as recent PyPy and PyPy3 builds.\n\n* The author, `Jonathan Eunice `_ or\n `@jeunice on Twitter `_\n welcomes your comments and suggestions.\n\nInstallation\n============\n\nTo install or upgrade to the latest version::\n\n pip install -U withref\n\nYou may need to prefix these with ``sudo`` to authorize\ninstallation. In environments without super-user privileges, you may want to\nuse ``pip``'s ``--user`` option, to install only for a single user, rather\nthan system-wide. Depending on your local system configuration, you\nmay also need version-specific installers such as ``pip2`` and ``pip3``.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/jeunice/withref", "keywords": "with reference dereference Pascal", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "withref", "package_url": "https://pypi.org/project/withref/", "platform": "", "project_url": "https://pypi.org/project/withref/", "project_urls": { "Homepage": "https://bitbucket.org/jeunice/withref" }, "release_url": "https://pypi.org/project/withref/0.3.3/", "requires_dist": null, "requires_python": "", "summary": "Use with to simplify multi-level object dereferences, reminisent of Pascal's with statement", "version": "0.3.3" }, "last_serial": 3054627, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "71d98d70acadba85ec7f997b488c5482", "sha256": "3de4e74f228a59b8848a3ef9b0da253b3ca5bdc9d1ff465b0aadb94ec3165053" }, "downloads": -1, "filename": "withref-0.1.tar.gz", "has_sig": false, "md5_digest": "71d98d70acadba85ec7f997b488c5482", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3951, "upload_time": "2012-06-05T17:40:45", "url": "https://files.pythonhosted.org/packages/92/97/b5a4e67bf8bfe847c6f5863e3c6fd36869ac859e03a01b356929e2f1c6db/withref-0.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "7aab08de33dc8e9f234c9e224bfa60d6", "sha256": "d0a12c51f73bbf975df6d8818536b4e15428f00625037c71c27c9921db0d3f3f" }, "downloads": -1, "filename": "withref-0.1.zip", "has_sig": false, "md5_digest": "7aab08de33dc8e9f234c9e224bfa60d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9395, "upload_time": "2012-06-05T17:40:44", "url": "https://files.pythonhosted.org/packages/11/ec/19bff4e9819b06529daf5f30e8bc64bd1444cb2ac83ac6295908791e4aa3/withref-0.1.zip" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "2453dbbde82285c65515ce4de1d2b913", "sha256": "3d11be4bfbee162e5b52a36f04a7e69079d275188ad80ecdca95f516db25e30e" }, "downloads": -1, "filename": "withref-0.2.tar.gz", "has_sig": false, "md5_digest": "2453dbbde82285c65515ce4de1d2b913", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4937, "upload_time": "2015-05-13T23:07:36", "url": "https://files.pythonhosted.org/packages/f1/5c/535ef6d78abad53ad8bdac4fe77e474c7b1489c2fe56bf8db3a1ee76dd7e/withref-0.2.tar.gz" }, { "comment_text": "", "digests": { "md5": "daf9fb16579d4f01e009c80dac8e7346", "sha256": "600ec749b02b31619668122dd2eff1c0f57319054b66df0d3fec2fa8f50d74e3" }, "downloads": -1, "filename": "withref-0.2.zip", "has_sig": false, "md5_digest": "daf9fb16579d4f01e009c80dac8e7346", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11448, "upload_time": "2015-05-13T23:07:32", "url": "https://files.pythonhosted.org/packages/4e/74/4b9ee9a8ae371e30088c380706933206383b0e52e0cd4b4b234f5404a4b1/withref-0.2.zip" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "ef1a102cda637fe4e20b449f79595c80", "sha256": "9327c28f89ccfcf666ed065b46110103fcf903580a844e4409a9feec49eedb6a" }, "downloads": -1, "filename": "withref-0.2.1.tar.gz", "has_sig": false, "md5_digest": "ef1a102cda637fe4e20b449f79595c80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5013, "upload_time": "2015-07-24T00:13:05", "url": "https://files.pythonhosted.org/packages/d1/0b/85cff790fef7dabcbeb398f7351e3a5590baca8a1b25828e2046078b76f4/withref-0.2.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "b1519491bb8519c60058f6f8a9f1ad5f", "sha256": "841831c689f8cc275ac2cd374bd746aea12296fe755f3cb44ea2f1004783becc" }, "downloads": -1, "filename": "withref-0.2.1.zip", "has_sig": false, "md5_digest": "b1519491bb8519c60058f6f8a9f1ad5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11675, "upload_time": "2015-07-24T00:13:02", "url": "https://files.pythonhosted.org/packages/9d/37/e278f0dae828c102e5d3c23d8ed5570eb3a3aa8da3c5a8d03705c2f8bead/withref-0.2.1.zip" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "35ec9af2583b85a7a0c041f1a31b6862", "sha256": "1e6428056e730dd86ceb5766fd5064e7389bc7878a1b5222462ae9d27439ce68" }, "downloads": -1, "filename": "withref-0.2.2.tar.gz", "has_sig": false, "md5_digest": "35ec9af2583b85a7a0c041f1a31b6862", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21078, "upload_time": "2015-07-31T17:13:11", "url": "https://files.pythonhosted.org/packages/b0/2d/d0dfcf4f184fbbd8f91c34798c19bfc667f2e61054a3252c242ea8d9f488/withref-0.2.2.tar.gz" }, { "comment_text": "", "digests": { "md5": "3d62ae098c253a5d34ede4bfa1e19108", "sha256": "b2cb9a8594e46a2e7b06dd7b64c6932f15e2c539d2d5471cedbd10b1ad53890b" }, "downloads": -1, "filename": "withref-0.2.2.zip", "has_sig": false, "md5_digest": "3d62ae098c253a5d34ede4bfa1e19108", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39096, "upload_time": "2015-07-31T17:13:08", "url": "https://files.pythonhosted.org/packages/18/10/f795484d6db6c387d08310a285ee5d2668c63f87e33cbd20cdf5d25f3e61/withref-0.2.2.zip" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "5ce1b5c7dea1b03be40eecda9e1bd9c2", "sha256": "bfbc0643c05ad98e5f8c77742fda34c1df7f4c07bf787a3aadadad0bdc5dfea2" }, "downloads": -1, "filename": "withref-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5ce1b5c7dea1b03be40eecda9e1bd9c2", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8045, "upload_time": "2015-08-04T12:09:04", "url": "https://files.pythonhosted.org/packages/4b/d2/51d04ae26e2159ececa24b88ecee3f6b5581b3e4558145a30b2618ad79f8/withref-0.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a1c8f8faff37fdd160fbb01ff8a8b666", "sha256": "714cf2d79144ddb3c950309e2bdf9d7fe85cc6d521d1d8edf61bad181839bcf8" }, "downloads": -1, "filename": "withref-0.2.3.tar.gz", "has_sig": false, "md5_digest": "a1c8f8faff37fdd160fbb01ff8a8b666", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21290, "upload_time": "2015-08-04T12:09:00", "url": "https://files.pythonhosted.org/packages/d3/a3/03062555435c08485a3d693d7cc3b5faac67bba86ceb50cd000ee92d2bfe/withref-0.2.3.tar.gz" }, { "comment_text": "", "digests": { "md5": "d2e0cb0aa8b4503b06243582630e25a2", "sha256": "5441a6c29ee96d459cf49509e706bdd1754a02a0e6116bcc062291dc96c1381f" }, "downloads": -1, "filename": "withref-0.2.3.zip", "has_sig": false, "md5_digest": "d2e0cb0aa8b4503b06243582630e25a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39328, "upload_time": "2015-08-04T12:08:57", "url": "https://files.pythonhosted.org/packages/7b/1a/eb9ea3780bafa76093c6b293968d6feb08f4b54b3fa7e6380d6f249d26ec/withref-0.2.3.zip" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "ecb7d7f54bc97dcc0764a2aca6f09821", "sha256": "e7d1b14d08bc36267d3fa532ae2f86af169d6ee2e3ef692b9932db3bedb8819f" }, "downloads": -1, "filename": "withref-0.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ecb7d7f54bc97dcc0764a2aca6f09821", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8056, "upload_time": "2015-08-04T13:49:51", "url": "https://files.pythonhosted.org/packages/81/61/e475b238a5be3e80dea395b87ef3ea52b2bcbf788fde44f266e8e4d1d658/withref-0.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa4b7dedd94c4b31f976b31285d4895f", "sha256": "4cbebf643388a73ace45d3193258acfe200c56a63c6e10b71945fd5cd3a7cf50" }, "downloads": -1, "filename": "withref-0.2.4.tar.gz", "has_sig": false, "md5_digest": "fa4b7dedd94c4b31f976b31285d4895f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9900, "upload_time": "2015-08-04T13:49:47", "url": "https://files.pythonhosted.org/packages/fb/6d/c832009047c152f696b109f38e713fbac416eb94376a26d357e27a9b0f16/withref-0.2.4.tar.gz" }, { "comment_text": "", "digests": { "md5": "2ac0fec65eca9c4c2bc9714abb2e9181", "sha256": "50ddf3cddd68f117a0124650691cfc984bbdd72762889af336ebc41fda248b8c" }, "downloads": -1, "filename": "withref-0.2.4.zip", "has_sig": false, "md5_digest": "2ac0fec65eca9c4c2bc9714abb2e9181", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17557, "upload_time": "2015-08-04T13:49:43", "url": "https://files.pythonhosted.org/packages/3b/6a/f59c41735bd51757c724fe2c651ca7b58044d3f3dae2ccda06e17de8de10/withref-0.2.4.zip" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "a0c44b680ea1c1b7ef07e28a6a0f83ca", "sha256": "883c491188cd943aaa9d06e9c51e1aeffebf8aa15c372c321d1cadbcf8e91f54" }, "downloads": -1, "filename": "withref-0.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a0c44b680ea1c1b7ef07e28a6a0f83ca", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8061, "upload_time": "2015-08-07T23:27:37", "url": "https://files.pythonhosted.org/packages/ab/a7/b0e7dda0fc748fdb8801a52641fff0788af4efb647750cae510c8582f8cc/withref-0.2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "887e1e4781265f897f504caf9cb636ba", "sha256": "50a1158d047a4728da9d7d99b1d2c16fdbccc8e82653b4370d4db3fe3b92e35c" }, "downloads": -1, "filename": "withref-0.2.5.tar.gz", "has_sig": false, "md5_digest": "887e1e4781265f897f504caf9cb636ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19392, "upload_time": "2015-08-07T23:27:33", "url": "https://files.pythonhosted.org/packages/16/03/a1a42ca9ade69b4483d35afec464a6fa4f85a89240c5d4c01728ab1847cb/withref-0.2.5.tar.gz" }, { "comment_text": "", "digests": { "md5": "94d8290685d7a5a9f16018c9f1a52e07", "sha256": "cbf250663ba3d2102b3f8a1a7c9d62799b0926ece1b36b04de363310517f9220" }, "downloads": -1, "filename": "withref-0.2.5.zip", "has_sig": false, "md5_digest": "94d8290685d7a5a9f16018c9f1a52e07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32598, "upload_time": "2015-08-07T23:27:29", "url": "https://files.pythonhosted.org/packages/8c/a4/71e473b6234eb80070c6b947b092cc85e66beb0d07178035f7b0ab3398fd/withref-0.2.5.zip" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "6653b9713d7320e9145d9229a57b66d2", "sha256": "33c6bf5b5cc9c19ff286fdc8cb76ca1ff8831154d3547178c1fd448b5b1987e7" }, "downloads": -1, "filename": "withref-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6653b9713d7320e9145d9229a57b66d2", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8284, "upload_time": "2015-08-18T01:05:15", "url": "https://files.pythonhosted.org/packages/41/45/63cadf1455756a21457039593843a3d238dcc2923a7b2d6d03766439cb5a/withref-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "429bd676f7e4ac29cd9cee2158c89a79", "sha256": "ecdf3da4a5c1d2559ba0b678d00e0ca28db66b4fac9d587ed605d798fb14a1c8" }, "downloads": -1, "filename": "withref-0.3.0.tar.gz", "has_sig": false, "md5_digest": "429bd676f7e4ac29cd9cee2158c89a79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20488, "upload_time": "2015-08-18T01:05:10", "url": "https://files.pythonhosted.org/packages/00/e3/29e18e355b116426e8898e62730226ce0ac09f7544c784eaf80bb1946c66/withref-0.3.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "1c80b649c7696425e10a73c19f463067", "sha256": "d2c27ff9762e532ca72dbebe09d277d00ef76468fd5191ab5e23f651fa86aa5d" }, "downloads": -1, "filename": "withref-0.3.0.zip", "has_sig": false, "md5_digest": "1c80b649c7696425e10a73c19f463067", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34413, "upload_time": "2015-08-18T01:05:05", "url": "https://files.pythonhosted.org/packages/c3/a7/eef831dcc4d0d6d83623a134e4a632270f957ed9b08e0ace66cfc468aaac/withref-0.3.0.zip" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "57727bafae21bd1a9a430c3a9380f269", "sha256": "57c4f7cb3d9d351a13c9c08ea4b579e6e467553783b9d62c30d16b962ccf3e09" }, "downloads": -1, "filename": "withref-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "57727bafae21bd1a9a430c3a9380f269", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8359, "upload_time": "2015-08-22T00:20:26", "url": "https://files.pythonhosted.org/packages/db/c3/50de4e12a5096ccffae3a23738d1bb9a75064731276f962fecd6069418a3/withref-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d036dce385778b76f1631516187b4571", "sha256": "7ec1165c9e7d2d2db34ea134762668138ad1aa3f813ccfb67889806c4b0675d2" }, "downloads": -1, "filename": "withref-0.3.1.tar.gz", "has_sig": false, "md5_digest": "d036dce385778b76f1631516187b4571", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20504, "upload_time": "2015-08-22T00:20:19", "url": "https://files.pythonhosted.org/packages/ec/86/e9401698b4bd1f187e0788c94d474d8ef91837968d70d341d97cb0062705/withref-0.3.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "8376a95d387995d46b2402f5268bc1f5", "sha256": "1cbf695173832fb03716cc4756ffdef7d1fdb63b1d573a6aefcf50697a324bb0" }, "downloads": -1, "filename": "withref-0.3.1.zip", "has_sig": false, "md5_digest": "8376a95d387995d46b2402f5268bc1f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34360, "upload_time": "2015-08-22T00:20:12", "url": "https://files.pythonhosted.org/packages/da/7f/28d7b4e8cd242023785aa081da12a789d4d185452dc3be4a1f700bc7af71/withref-0.3.1.zip" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "81022c39cd8c694539eab3d26118687f", "sha256": "5e590827f1999cf7a0aac7f220e2b9e812ab935475e1a33303eed71a26a06c13" }, "downloads": -1, "filename": "withref-0.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "81022c39cd8c694539eab3d26118687f", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8279, "upload_time": "2017-06-01T15:01:21", "url": "https://files.pythonhosted.org/packages/1d/f5/2dc36628cfa376aa0314255b59834cdbded44190d7897dbbd4a4dea41b15/withref-0.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "824b24863351b7a2114a02d3a52bcb48", "sha256": "cc0469fc16d6c491e649c0c422e0adf54d1c8d8eeda4bb68db8514abe38aa709" }, "downloads": -1, "filename": "withref-0.3.2.zip", "has_sig": false, "md5_digest": "824b24863351b7a2114a02d3a52bcb48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17956, "upload_time": "2017-06-01T15:01:19", "url": "https://files.pythonhosted.org/packages/28/8d/b1c0e7cd53849f5621e1eb712437a9a2488db35991a2e585a37f72d9cc80/withref-0.3.2.zip" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "96ff63d2c1b63011d8354c1a31e44d60", "sha256": "e9f3b2a8310bd89c12d8d1d8fd2079a7dd41534b23574b91bcebdd75ba94b8f8" }, "downloads": -1, "filename": "withref-0.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96ff63d2c1b63011d8354c1a31e44d60", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8277, "upload_time": "2017-07-28T03:17:37", "url": "https://files.pythonhosted.org/packages/9f/85/94790fa876fc3dc57e56bd7ee1beb0202635aa5a4a94b79e60d95d160024/withref-0.3.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1eb85b8229d33441f0f48960227810a8", "sha256": "06fd74e29b5d3703965482d4fdc4b3ee22c130f4bc08349ecdaa88c5d27a13ec" }, "downloads": -1, "filename": "withref-0.3.3.zip", "has_sig": false, "md5_digest": "1eb85b8229d33441f0f48960227810a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38150, "upload_time": "2017-07-28T03:17:35", "url": "https://files.pythonhosted.org/packages/72/46/b3dfbc9bae6dbad224a57993e4e0f17827e04a0a89a2becf2734d1077239/withref-0.3.3.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "96ff63d2c1b63011d8354c1a31e44d60", "sha256": "e9f3b2a8310bd89c12d8d1d8fd2079a7dd41534b23574b91bcebdd75ba94b8f8" }, "downloads": -1, "filename": "withref-0.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96ff63d2c1b63011d8354c1a31e44d60", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8277, "upload_time": "2017-07-28T03:17:37", "url": "https://files.pythonhosted.org/packages/9f/85/94790fa876fc3dc57e56bd7ee1beb0202635aa5a4a94b79e60d95d160024/withref-0.3.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1eb85b8229d33441f0f48960227810a8", "sha256": "06fd74e29b5d3703965482d4fdc4b3ee22c130f4bc08349ecdaa88c5d27a13ec" }, "downloads": -1, "filename": "withref-0.3.3.zip", "has_sig": false, "md5_digest": "1eb85b8229d33441f0f48960227810a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38150, "upload_time": "2017-07-28T03:17:35", "url": "https://files.pythonhosted.org/packages/72/46/b3dfbc9bae6dbad224a57993e4e0f17827e04a0a89a2becf2734d1077239/withref-0.3.3.zip" } ] }