{
"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": "| |travisci| |versions| |impls| |wheel| |coverage| |br-coverage|\n\n\n.. |travisci| image:: https://api.travis-ci.org/jonathaneunice/enpassant.svg\n :target: http://travis-ci.org/jonathaneunice/enpassant\n\n.. |versions| image:: https://img.shields.io/pypi/pyversions/enpassant.svg\n :alt: Supported versions\n :target: https://pypi.python.org/pypi/enpassant\n\n.. |impls| image:: https://img.shields.io/pypi/implementation/enpassant.svg\n :alt: Supported implementations\n :target: https://pypi.python.org/pypi/enpassant\n\n.. |wheel| image:: https://img.shields.io/pypi/wheel/enpassant.svg\n :alt: Wheel packaging support\n :target: https://pypi.python.org/pypi/enpassant\n\n.. |coverage| image:: https://img.shields.io/badge/test_coverage-100%25-blue.svg\n :alt: Test line coverage\n :target: https://pypi.python.org/pypi/enpassant\n\n.. |br-coverage| image:: https://img.shields.io/badge/branch_coverage-99%25-blue.svg\n :alt: Test branch coverage\n :target: https://pypi.python.org/pypi/enpassant\n\nSimple *en passant* assignment, giving Python clearer conditional statements\n\nUsage\n=====\n\n::\n\n from __future__ import print_function # Python 2/3 compat\n from enpassant import *\n result = Passer()\n\n while result / expensive_request():\n print(result.report())\n\n # assuming report() is a method of the object\n # expensive_request() would naturally hand back\n\nDiscussion\n==========\n\nMany languages support *en passant* (in passing) assignment, like so::\n\n if result = expensive_request():\n print(result.report())\n\nIn Python, that's a syntax error.\nThis leads to more code lines and, in some cases, less\nvisual clarity::\n\n result = expensive_request()\n if result:\n print(result.report())\n\nOr worse, in the case of looping structures::\n\n result = expensive_request()\n while result:\n print(result.report())\n result = expensive_request()\n\nIt doesn't look so bad here, in a highly distilled example. But in real\nprograms, the called function often has parameters to be managed, and the\nsurrounding code is invariably longer and more complicated. The more complicated\nthe surrounding computations and requests, the simpler the comparison itself\nshould be. As the `Zen of Python `_\nintones: \"Simple is better than complex.\" and \"Readability counts.\"\n\nI hope that Python will eventually provide a concise way of handling this, such\nas::\n\n while expensive_request() as result:\n print(result.report())\n\nBut in the meanwhile, ``enpassant`` provides a workaround.\n\nHow it Works\n============\n\n::\n\n from enpassant import *\n result = Passer()\n\n while result / expensive_request():\n print(result.report())\n\nHere ``result / expensive_request()`` is read \"the result of the\nexpensive_request.\" ``result`` is merely a proxy object that, when it\nencounters the division operator, returns the denominator. That is, ``result\n/ whatever == whatever``. But it also *remembers* the denominator value.\nThen, whenever you want the result value provided (presumably, later in the\nbody of your loop or conditional), simply access it through ``result``. If\nyou want the full object returned by ``expensive_request()`` you can get it\nvia ``result.value``. Or or the result has items or attributes, they are\navailable by indexing or naming the attribute directly. *Easy peasy!*\n\nNB: If you change the items or attributes of ``result``, those settings are\nalso forwarded to the underlying object. ``result`` is not a copy, but a\ntrue proxy, and as close to the actual object returned as I can make it\ngiven current Python strictures.\n\nSome Details\n============\n\n``enpassant`` \"assignment\" is transparent to conditional expressions,\nbecause the value of the expression is always the value of the denominator.\nBut ``Passers`` are also guaranteed to have a Boolean value identical to\nthat of the value they contain, should you wish to use them in subsequent\ntests.\n\nThe ``result`` in the example above isn't the pure result of the following\nfunction call (or expression), but rather a proxy to it. Item (``[]``)\nand attribute (``.``) access work directly on ``result`` because\n``Passer`` objects pass on *getitem* and *get-attribute* requests to their\nenclosed value. Usually, this is a convenience, and avoids having to\nneedlessly state that it's really ``result.value`` that's being indexed or\ndereferenced. But if you need the specific object returned (say for an\nobject identity or ``isinstance`` test, use ``result.value`` directly.\n\nAlternative Value Access\n========================\n\nIt is also possible to retrieve the value of a ``Passer`` by calling it::\n\n if result / expensive_request():\n print(result().report())\n\nThis technique makes clear that the value is being rendered via some\nprocess, rather than just presented as a normal Python name / variable. And\nthe resulting object from ``result()`` is the true and complete result of\nthe earlier function call, with no need for implicit / auto-magical\nforwarding of items and attributes. Which style makes sense is a matter of\njudgment and taste.\n\nOr, if you prefer something terser, the ``+`` (unary positive) operation\nwill also yield the value::\n\n if result / expensive_request():\n print(+result.report())\n\nAlternative Invocations\n=======================\n\n.. |larrow| unicode:: 0x2190 .. leftwards arrow\n\nIf you prefer the less-than (``<``) or less-than-or-equal (``<=``) operators\nas indicators that ``result`` takes the value of the following value, they\nare supported as aliases of the division operation (``/``). Thus, the\nfollowing are identical::\n\n if result / expensive_request():\n print(result.report())\n\n if result < expensive_request():\n print(result.report())\n\n if result <= expensive_request():\n print(result.report())\n\nIt's a matter of preference which seems most logical, appropriate, and\nexpressive. None of them are as good Note, however, that the operation usually\nknown as division (``/``) has a much higher precedence (i.e. tighter binding to\nits operands) than the typical comparison operations (``<`` and ``<=``). If used\nwith a more complex expressions, either know your precedence or use parenthesis\nto disambiguate!\n\nIt'd be swell if Python supported arbitrary symbols. Unicode has what would\nbe reasonable alternative assignment markers, such as |larrow| (`LEFTARDS\nARROW `_), but\nalas! Until Python gets more Unicode-savvy, we have to choose some existing\nASCII operator to repurpose.\n\nIt is also possible to use a function call idiom if you prefer::\n\n if result(expensive_request()):\n print(result.report())\n\nThis has the virtue of looking like a \"wrapping\" of the expensive\nrequest value, rather than reusing / overloading an existing operation.\n\nGrabber and Similar\n===================\n\nI've experimented with other forms of collecting and rendering values.\nThis version of ``enpassant`` includes the results of one of those experiments.\nObjects of the ``Grabber`` class can have their attributes set on their first\naccess. Subsequent uses of that attribute yield the set value.::\n\n info = Grabber()\n info.name('Joe')\n assert info.name == 'Joe'\n\nThe challenge with this approach is that once set, attribute values cannot be\nreset.\n\nNotes\n=====\n\n* Se ``CHANGES.yml`` for the change log.\n\n* `En passant `_ is a chess\n term.\n\n* En passant assignment / naming is discussed in\n `Issue1714448 `_\n and `PEP 379 `_, which have\n been rejected and withdrawn, respectively. But that is years gone\n by. I hope the idea will be productively reconsidered in the future.\n\n* Automated multi-version testing managed with\n `pytest `_,\n `pytest-cov `_,\n `coverage `_, and\n `tox `_.\n Packaging linting with `pyroma `_.\n\n* Successfully packaged for, and\n tested against, all early 2017 versions of Python: 2.6, 2.7, 3.2, 3.3,\n 3.4, 3.5, and 3.6, as well as latest PyPy and PyPy3.\n\n* On Python 2.6, uses Raymond Hettinger's `ordereddict `_\n module (which is included in the source tree for ease of installation)\n to provide ``OrderedDict``. Thank you, Raymond!\n\n* The `simplere `_ package similarly\n provides en passant handling (and other helpers) for the important, common\n case of regular expression searches.\n\n* An alterantive module: `dataholder `_.\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 enpassant\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. You may also need version-specific versions of ``pip``,\nsuch as ``pip2`` and ``pip3``, depending on your system configuration.\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/enpassant",
"keywords": "en passant",
"license": "Apache License 2.0",
"maintainer": "",
"maintainer_email": "",
"name": "enpassant",
"package_url": "https://pypi.org/project/enpassant/",
"platform": "",
"project_url": "https://pypi.org/project/enpassant/",
"project_urls": {
"Homepage": "https://bitbucket.org/jeunice/enpassant"
},
"release_url": "https://pypi.org/project/enpassant/0.6.7/",
"requires_dist": null,
"requires_python": "",
"summary": "En passant assignment for clearer conditionals",
"version": "0.6.7"
},
"last_serial": 2911227,
"releases": {
"0.1": [
{
"comment_text": "",
"digests": {
"md5": "c6815d2cb9af46668776d44fc43f38b9",
"sha256": "35b0e6968429d054528301f2ed6ac0ed03dfcc87a85d37c7ecfd38ad9d38523f"
},
"downloads": -1,
"filename": "enpassant-0.1.tar.gz",
"has_sig": false,
"md5_digest": "c6815d2cb9af46668776d44fc43f38b9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4060,
"upload_time": "2013-04-09T20:27:57",
"url": "https://files.pythonhosted.org/packages/40/fd/196d2dc72e58441863af1ee6e99b8e6dcfb9d85200cd7f1f775f0dde7590/enpassant-0.1.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "bc13a2004ae351c6c9c35e9f3cc51159",
"sha256": "8aca6022b90023cd84ed929e484a6883cfcab7c0a4ecb1653aae0273ca5e822c"
},
"downloads": -1,
"filename": "enpassant-0.1.zip",
"has_sig": false,
"md5_digest": "bc13a2004ae351c6c9c35e9f3cc51159",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9142,
"upload_time": "2013-04-09T20:27:55",
"url": "https://files.pythonhosted.org/packages/f2/31/5ec30cd6cfe5baa9980c310cbbd91dad209eb8b2b5b5738256e49987e413/enpassant-0.1.zip"
}
],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "304fb7b349afb98263ede78f3f2a8dea",
"sha256": "9b567ebb6615abacb690c21ccb5a24ed454bd4b1b5213f89071f30482fd3889d"
},
"downloads": -1,
"filename": "enpassant-0.2.tar.gz",
"has_sig": false,
"md5_digest": "304fb7b349afb98263ede78f3f2a8dea",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5340,
"upload_time": "2013-04-10T16:23:17",
"url": "https://files.pythonhosted.org/packages/2c/35/b7f64fb22f99e93e76a23fdb8e662af4558f42c5ebddd9a1e99719851eb1/enpassant-0.2.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "fd888c1245eac1aa6d1da8edf334c5d3",
"sha256": "27d124a0f8a08c4b135ba65559f768fd74dcce465fb158664e5e60c9edf647a0"
},
"downloads": -1,
"filename": "enpassant-0.2.zip",
"has_sig": false,
"md5_digest": "fd888c1245eac1aa6d1da8edf334c5d3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11841,
"upload_time": "2013-04-10T16:23:14",
"url": "https://files.pythonhosted.org/packages/fb/4b/4e237f6063d46522767cf951f14d5e2c2d0664a51079314629822b8d63b5/enpassant-0.2.zip"
}
],
"0.3": [
{
"comment_text": "",
"digests": {
"md5": "c06beccf56c973e8560b85d171fcf70d",
"sha256": "743a0555894ac93a594425b8f23ae12f8170005b4f6f91f3bfd820919da0c6de"
},
"downloads": -1,
"filename": "enpassant-0.3.tar.gz",
"has_sig": false,
"md5_digest": "c06beccf56c973e8560b85d171fcf70d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8089,
"upload_time": "2013-08-13T16:10:39",
"url": "https://files.pythonhosted.org/packages/66/08/9b39e3860c25bb17a07e11f2e2837912285086bc123c96a77ff4ded2e19b/enpassant-0.3.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "d45f333fc8f7d1d72285cb535c3ec054",
"sha256": "a4082210817fbdd4edf8b1a3a78c2e5df2673821e2729bf4b055a97fd96d8698"
},
"downloads": -1,
"filename": "enpassant-0.3.zip",
"has_sig": false,
"md5_digest": "d45f333fc8f7d1d72285cb535c3ec054",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15469,
"upload_time": "2013-08-13T16:10:37",
"url": "https://files.pythonhosted.org/packages/6d/54/452a8ab81c947036d34d02c94fdd0d24b1595142175fc5dff5ed0874335a/enpassant-0.3.zip"
}
],
"0.3.1": [
{
"comment_text": "",
"digests": {
"md5": "0c5fe0a2eec85bbdc4b9a23cfabe0ed6",
"sha256": "3120fb58212bc7163ec2a288c918382a68026b888602aab0fd0794caded9a32f"
},
"downloads": -1,
"filename": "enpassant-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "0c5fe0a2eec85bbdc4b9a23cfabe0ed6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8767,
"upload_time": "2015-05-13T20:27:10",
"url": "https://files.pythonhosted.org/packages/0a/d1/07de64bc51c24ac21b8c7336cecd0ea0d5cfd3b9c95bd3aab26086d4e2b8/enpassant-0.3.1.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "3c51945cd3d6a728b94d0f7900445174",
"sha256": "2aaf2ddad0cdcb87ecc89f60b0644e2398b4db2f9ad18c44fc609fd65fafa57a"
},
"downloads": -1,
"filename": "enpassant-0.3.1.zip",
"has_sig": false,
"md5_digest": "3c51945cd3d6a728b94d0f7900445174",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17207,
"upload_time": "2015-05-13T20:27:05",
"url": "https://files.pythonhosted.org/packages/9b/2d/f684bee310828e7a19910b032ca6ce090bf0de39fe35e9ae5ba2f0b05538/enpassant-0.3.1.zip"
}
],
"0.3.2": [
{
"comment_text": "",
"digests": {
"md5": "ddcb55984b0ce562551cae6b4ed00f96",
"sha256": "094427b39de2a2c6cc9b5461dbf4d9a0f972adb70f3a653002f8c5f7e9b901f3"
},
"downloads": -1,
"filename": "enpassant-0.3.2.tar.gz",
"has_sig": false,
"md5_digest": "ddcb55984b0ce562551cae6b4ed00f96",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8780,
"upload_time": "2015-05-13T20:31:31",
"url": "https://files.pythonhosted.org/packages/76/1c/5c9ee5d0afc8d1c3a33dc1f101a1c27398dfd8879eb23420427c06574fd7/enpassant-0.3.2.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "3934743844e476cf17b4360c75837eb2",
"sha256": "ebad504d71a2d2220976508b5be43ff4b16186976a1e98e9b19df491b4e309e8"
},
"downloads": -1,
"filename": "enpassant-0.3.2.zip",
"has_sig": false,
"md5_digest": "3934743844e476cf17b4360c75837eb2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17220,
"upload_time": "2015-05-13T20:31:27",
"url": "https://files.pythonhosted.org/packages/86/78/6f40fc725920b75cc12911ddf24d162b18a1982e9c3efb83ce8f022eec69/enpassant-0.3.2.zip"
}
],
"0.4.0": [
{
"comment_text": "",
"digests": {
"md5": "3d600ddfe32cf3cf9002a1c982bba6ac",
"sha256": "783d6e55aa4183979dad0b2fc80f01fcc1c3fd9ec3031b5965e9d99f1f4334f9"
},
"downloads": -1,
"filename": "enpassant-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "3d600ddfe32cf3cf9002a1c982bba6ac",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8982,
"upload_time": "2015-05-13T21:32:56",
"url": "https://files.pythonhosted.org/packages/a8/f9/f7fb3dd4c43fec13f4ecbbb71c12a9da72febb4f9d87e5a96f5300a0ac46/enpassant-0.4.0.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "3801328682da14a5106df1319793ed86",
"sha256": "ac1046684be1f70aecde7cca9a73999532c120c7f2b9e605c59cdd713c1fb347"
},
"downloads": -1,
"filename": "enpassant-0.4.0.zip",
"has_sig": false,
"md5_digest": "3801328682da14a5106df1319793ed86",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17593,
"upload_time": "2015-05-13T21:32:52",
"url": "https://files.pythonhosted.org/packages/f5/e0/dcaf2f73b15a59000d4e6825a0e66ce43f9fa5ae12b9568ada1937e158e0/enpassant-0.4.0.zip"
}
],
"0.4.1": [
{
"comment_text": "",
"digests": {
"md5": "b68b3cd625c3e6e62415c228b1e47f23",
"sha256": "742cc468afcaa2a56da31d80fd573cae67db2e6a6b827af7fb9bb30b45a03547"
},
"downloads": -1,
"filename": "enpassant-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "b68b3cd625c3e6e62415c228b1e47f23",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8961,
"upload_time": "2015-05-13T21:36:22",
"url": "https://files.pythonhosted.org/packages/63/1b/1e1fee84f1abe318695b079ba8bc028f0b065cfdce076215539fb1ab8a32/enpassant-0.4.1.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "bf5fc3186c8cd86354d948ff1ecdeb4e",
"sha256": "458145d898b8f86403fb50985d94513bac13a201f562ce5fe4b71bd5d08aaeb7"
},
"downloads": -1,
"filename": "enpassant-0.4.1.zip",
"has_sig": false,
"md5_digest": "bf5fc3186c8cd86354d948ff1ecdeb4e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17517,
"upload_time": "2015-05-13T21:36:18",
"url": "https://files.pythonhosted.org/packages/b3/f0/27013e097e562121c875617b3963828a980a65575ee38713da3ed0a31d1f/enpassant-0.4.1.zip"
}
],
"0.4.2": [
{
"comment_text": "",
"digests": {
"md5": "0b8c173ab1a775db2aa4c1bf67dadede",
"sha256": "54d72cd5e0692fc0ea8b8fa886caa4d815821cb0b1eec17a8a8b67073b66fffc"
},
"downloads": -1,
"filename": "enpassant-0.4.2.tar.gz",
"has_sig": false,
"md5_digest": "0b8c173ab1a775db2aa4c1bf67dadede",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8984,
"upload_time": "2015-05-13T21:45:46",
"url": "https://files.pythonhosted.org/packages/4a/70/01e144601fba82a52d8563b1d9687f16ac6f0d0d417a180814c677dcbc1a/enpassant-0.4.2.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "63bb797915c2ce825ab425fa087bc5da",
"sha256": "f7f12d1735f069afeaa808de7221d999d5d6a95d762126daa45a1869572aa00c"
},
"downloads": -1,
"filename": "enpassant-0.4.2.zip",
"has_sig": false,
"md5_digest": "63bb797915c2ce825ab425fa087bc5da",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17537,
"upload_time": "2015-05-13T21:45:42",
"url": "https://files.pythonhosted.org/packages/4e/95/d8cd3afba6851c85b59091dfc3f35aee5364c6f86d4d4a5d538532b6bd64/enpassant-0.4.2.zip"
}
],
"0.5.0": [
{
"comment_text": "",
"digests": {
"md5": "bfe3490b42ab24dc9a2172220f9410e0",
"sha256": "83d64089823e152d1939f6c4fe0d19d20bc3fc69e9f96ea14f843c8ea7c2caf0"
},
"downloads": -1,
"filename": "enpassant-0.5.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "bfe3490b42ab24dc9a2172220f9410e0",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 12793,
"upload_time": "2015-08-04T15:33:53",
"url": "https://files.pythonhosted.org/packages/0b/3f/a6b8e579f1b414ea3813db885233269cb7803074bf06d8840ab4cd98e8cc/enpassant-0.5.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "6408f057a152679ee1a65a850efa8637",
"sha256": "6285b21dae13483bbb6c47d94dd03a2f52091a7bb2dbb82cc12ed7b567b18359"
},
"downloads": -1,
"filename": "enpassant-0.5.0.tar.gz",
"has_sig": false,
"md5_digest": "6408f057a152679ee1a65a850efa8637",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9922,
"upload_time": "2015-08-04T15:33:49",
"url": "https://files.pythonhosted.org/packages/74/5d/e307f3af483f716348625694947db1a919efa418d8f3372280e1d9e3dd83/enpassant-0.5.0.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "b28dca3b078ab920988936a49c7d47f6",
"sha256": "577d67bf20221174e8ef0c984272ac30014ba9e2b03ebd707b2a8248190df3aa"
},
"downloads": -1,
"filename": "enpassant-0.5.0.zip",
"has_sig": false,
"md5_digest": "b28dca3b078ab920988936a49c7d47f6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 19041,
"upload_time": "2015-08-04T15:33:45",
"url": "https://files.pythonhosted.org/packages/b2/24/bd2860e9cf96aa776c18c4016d0393eba1d873af3eaa582a2f5fcc0ccb2e/enpassant-0.5.0.zip"
}
],
"0.5.1": [
{
"comment_text": "",
"digests": {
"md5": "76febcb584782318d2a4f07bc94fa8d0",
"sha256": "3cdd1f088f4deb05ca97b06a8f6de628a3970845680774b1cdf1358e7c1fbfcc"
},
"downloads": -1,
"filename": "enpassant-0.5.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "76febcb584782318d2a4f07bc94fa8d0",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 12772,
"upload_time": "2015-08-04T15:37:45",
"url": "https://files.pythonhosted.org/packages/c4/29/ec24554182c5ff85b0e2f2995faeaa20df37619e0721af6dfc02901ea6f7/enpassant-0.5.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3017384214cd78fb20189c9c13747e92",
"sha256": "3c5d2844abbd7fbd5f2a0988945279d30bdcb28f0ab0d14a27cca0e7f8c47fb2"
},
"downloads": -1,
"filename": "enpassant-0.5.1.tar.gz",
"has_sig": false,
"md5_digest": "3017384214cd78fb20189c9c13747e92",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9901,
"upload_time": "2015-08-04T15:37:40",
"url": "https://files.pythonhosted.org/packages/4c/ba/ad988f8c24bcc63e48f20515bcb8b1fd8e6ac5ecce41c7cd37039b0b9628/enpassant-0.5.1.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "f2c52d79c4ea9d82afd7d340acc1eee0",
"sha256": "74a096b37cb8115bfc2d13dd17eda458996723741f4d399310d0627b5b21cb82"
},
"downloads": -1,
"filename": "enpassant-0.5.1.zip",
"has_sig": false,
"md5_digest": "f2c52d79c4ea9d82afd7d340acc1eee0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 19004,
"upload_time": "2015-08-04T15:37:37",
"url": "https://files.pythonhosted.org/packages/c3/7c/93dd85e0855e0da5996c15e765ff41dc054f5027a7fa868c86ff56def350/enpassant-0.5.1.zip"
}
],
"0.5.2": [
{
"comment_text": "",
"digests": {
"md5": "5491542479f6411120b801db8cc578d1",
"sha256": "f460c31ba7e50edc3cb48cecdc6724be5c132e13cbabfff4fcb19e68eda8c1fd"
},
"downloads": -1,
"filename": "enpassant-0.5.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "5491542479f6411120b801db8cc578d1",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 12809,
"upload_time": "2015-08-13T15:21:10",
"url": "https://files.pythonhosted.org/packages/d3/05/048da83df783073547a1dc241333b76391c5bfe9b6cc2dcd4298507e1b1e/enpassant-0.5.2-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "4f3695ab600416b04fde73e285881657",
"sha256": "5fc19b6e9e0bcc4210962897e0a28c83ae68852a5b217ccd4525b326a43ae729"
},
"downloads": -1,
"filename": "enpassant-0.5.2.tar.gz",
"has_sig": false,
"md5_digest": "4f3695ab600416b04fde73e285881657",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9750,
"upload_time": "2015-08-13T15:21:07",
"url": "https://files.pythonhosted.org/packages/5e/b0/7200b754ebd9ea564e4a4871c5b4276ca06637bd66a4c51146987b692b36/enpassant-0.5.2.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "bbc0919c5a86621a62776ed6b08b784c",
"sha256": "f9367b4ff75f53571a4dc94a31b9b972f556d36acb45e7af7a1162720aafe018"
},
"downloads": -1,
"filename": "enpassant-0.5.2.zip",
"has_sig": false,
"md5_digest": "bbc0919c5a86621a62776ed6b08b784c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 19265,
"upload_time": "2015-08-13T15:21:03",
"url": "https://files.pythonhosted.org/packages/6d/36/44201591d0675421881847fa5378f7c1ffe8c8615398dce532b41bd366e6/enpassant-0.5.2.zip"
}
],
"0.6.0": [
{
"comment_text": "",
"digests": {
"md5": "1ba34a196a57ad9db494c562167df910",
"sha256": "0db7016c5fd993b6dafae47f262c23ac6c0126bd17196aea178ed548d1f010e1"
},
"downloads": -1,
"filename": "enpassant-0.6.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "1ba34a196a57ad9db494c562167df910",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 13052,
"upload_time": "2015-08-18T14:20:19",
"url": "https://files.pythonhosted.org/packages/bd/84/431958f6affb540ba4797de3f84ccfe23746820ed2e88bfb7e0fd0c16ae0/enpassant-0.6.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1db259cc479b53ebb46ca2709d81a84d",
"sha256": "ba89e68d1144a36f28f652e555e82b2c26da7d5332660cd2b13d496dbc10d80c"
},
"downloads": -1,
"filename": "enpassant-0.6.0.tar.gz",
"has_sig": false,
"md5_digest": "1db259cc479b53ebb46ca2709d81a84d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10721,
"upload_time": "2015-08-18T14:20:15",
"url": "https://files.pythonhosted.org/packages/33/f6/fb13c1748ae2204351cd858d8e31b72cb4aade98dc7fd4ba9a2cccdc0548/enpassant-0.6.0.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "b79df21356f7eae3d3521549fcc7e0cd",
"sha256": "ccce62e08887cc50ce2c3f2cb447f633bca656561455a07e27947a47ad64b411"
},
"downloads": -1,
"filename": "enpassant-0.6.0.zip",
"has_sig": false,
"md5_digest": "b79df21356f7eae3d3521549fcc7e0cd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20659,
"upload_time": "2015-08-18T14:20:04",
"url": "https://files.pythonhosted.org/packages/27/36/6169b2fcef439aef9904ff267b7907fd52711cd1b7e6756bac55741edf11/enpassant-0.6.0.zip"
}
],
"0.6.1": [
{
"comment_text": "",
"digests": {
"md5": "d96034f2713f7c68d73e9c146db66cc8",
"sha256": "bb77b422316f0dc6c9c5ed160f8fa794f0c01bfcfe234f24f90dc5cf11637b34"
},
"downloads": -1,
"filename": "enpassant-0.6.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "d96034f2713f7c68d73e9c146db66cc8",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 13079,
"upload_time": "2015-08-19T18:50:49",
"url": "https://files.pythonhosted.org/packages/9d/c3/b834896e81ac25431e6dd99d85a271dae29a545f68c20f29d07790033202/enpassant-0.6.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "f0d78844036cdaaedfab760daf522897",
"sha256": "c74b51ef41f8dd4b064808ecb19b622af9103e61eec53f3386db94d493753898"
},
"downloads": -1,
"filename": "enpassant-0.6.1.tar.gz",
"has_sig": false,
"md5_digest": "f0d78844036cdaaedfab760daf522897",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10711,
"upload_time": "2015-08-19T18:50:40",
"url": "https://files.pythonhosted.org/packages/fb/ab/d60e4aaba1e06e2b8602ebf649f28be9c58b7a12359e00804b9f35ad23fe/enpassant-0.6.1.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "90aee34d6210a527fbc98001115cdef5",
"sha256": "fe5d2159f390b7b38e86cc62c50a226d81beea2d907bcd0eeb07c90324f073a6"
},
"downloads": -1,
"filename": "enpassant-0.6.1.zip",
"has_sig": false,
"md5_digest": "90aee34d6210a527fbc98001115cdef5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20726,
"upload_time": "2015-08-19T18:50:31",
"url": "https://files.pythonhosted.org/packages/d3/8c/aae622a2bc96666a598aa9cdb7b9470147e7b00e7d671f0919b0139db4c2/enpassant-0.6.1.zip"
}
],
"0.6.2": [
{
"comment_text": "",
"digests": {
"md5": "677944349401750484a02fb07d0dfc22",
"sha256": "060bac5cff21285d3ef4075a942625c70993ca808c2798c95aacd3abc3728764"
},
"downloads": -1,
"filename": "enpassant-0.6.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "677944349401750484a02fb07d0dfc22",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 13359,
"upload_time": "2017-01-23T18:59:50",
"url": "https://files.pythonhosted.org/packages/6e/6a/774ff42532e1ab57a5171b7103481709a1a53976598cae87aa4e081a2629/enpassant-0.6.2-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "cd205b049e87a8f71d236a668f9a964f",
"sha256": "d48bf2baba75886cad3a17f6dd189cc43c921ef2faeeee5d5e7e94e715af1ee7"
},
"downloads": -1,
"filename": "enpassant-0.6.2.zip",
"has_sig": false,
"md5_digest": "cd205b049e87a8f71d236a668f9a964f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20908,
"upload_time": "2017-01-23T18:59:46",
"url": "https://files.pythonhosted.org/packages/49/b6/5d27dcf5ab3fa41405f4f08fa06310a0b0956b3634b55ea3357816c37975/enpassant-0.6.2.zip"
}
],
"0.6.3": [
{
"comment_text": "",
"digests": {
"md5": "c4d581894d4126f93f5233c873f51fab",
"sha256": "f0cd84e6e77224256a85c531ffe7184afefc076f3575c69080fe29eba8ef8a7a"
},
"downloads": -1,
"filename": "enpassant-0.6.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "c4d581894d4126f93f5233c873f51fab",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 12841,
"upload_time": "2017-01-31T17:03:50",
"url": "https://files.pythonhosted.org/packages/8f/c4/9a463525ccd6c7beef3228504a1aafe65846597259b276c303b00f66da0d/enpassant-0.6.3-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "c35ff3585eb67a7217a3fc5d4d1a26c2",
"sha256": "54a06bb40c3e9e9bc99acecc18e3c615b0badf5123d253a05ea4b9a65eb8a5da"
},
"downloads": -1,
"filename": "enpassant-0.6.3.zip",
"has_sig": false,
"md5_digest": "c35ff3585eb67a7217a3fc5d4d1a26c2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20190,
"upload_time": "2017-01-31T17:03:46",
"url": "https://files.pythonhosted.org/packages/52/02/4528ddd4dcf50ee86790a12cb0ab2251faa8571c564db94f6edc62ab1811/enpassant-0.6.3.zip"
}
],
"0.6.4": [
{
"comment_text": "",
"digests": {
"md5": "659ad882b3e86027a9bb712ef6656b9f",
"sha256": "734ec4a2c62ac2d8256c045cfd1d93a9fb86018bfe4708333581977d03b4d498"
},
"downloads": -1,
"filename": "enpassant-0.6.4-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "659ad882b3e86027a9bb712ef6656b9f",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 12799,
"upload_time": "2017-02-20T06:24:34",
"url": "https://files.pythonhosted.org/packages/81/82/6e116bd22c02d3e975678826ca05781ae9c15cfb9af104a1551ec0029a4f/enpassant-0.6.4-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e1705412b81c6db5c645366d094f5720",
"sha256": "74c14fd20fcfd034eb34a4001576f988af996c188e57ebbdd479b6b327ac399d"
},
"downloads": -1,
"filename": "enpassant-0.6.4.zip",
"has_sig": false,
"md5_digest": "e1705412b81c6db5c645366d094f5720",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20121,
"upload_time": "2017-02-20T06:24:30",
"url": "https://files.pythonhosted.org/packages/54/7f/f2046fee4ffa10b26f0841f542ebb6178a4165d762265e70dc8852af9132/enpassant-0.6.4.zip"
}
],
"0.6.5": [
{
"comment_text": "",
"digests": {
"md5": "8b72f165f9d7846ef81754b673dc5387",
"sha256": "10310c8cfa0e68b7409e0d1c3df74f9fc7e3a40ee50c1f710a3260feeda20137"
},
"downloads": -1,
"filename": "enpassant-0.6.5-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "8b72f165f9d7846ef81754b673dc5387",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 12794,
"upload_time": "2017-02-20T06:38:44",
"url": "https://files.pythonhosted.org/packages/fb/b0/2551cfb26bf4c421b1305d7d2109c15c1492b5cca94c03d38faaa66b2d42/enpassant-0.6.5-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e4e79db6813be01df2fa9cd2f0b9e6bb",
"sha256": "d1da1baf68724cb82a9bd1eac95427ad3574ba93676c38aa0c91243033c2884e"
},
"downloads": -1,
"filename": "enpassant-0.6.5.zip",
"has_sig": false,
"md5_digest": "e4e79db6813be01df2fa9cd2f0b9e6bb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20107,
"upload_time": "2017-02-20T06:38:41",
"url": "https://files.pythonhosted.org/packages/fa/85/00484871a458faba749d6f7e004e1d2b45694514847ae619aee46fa06f84/enpassant-0.6.5.zip"
}
],
"0.6.6": [
{
"comment_text": "",
"digests": {
"md5": "2e09b1515583eb41ffa1c84ad7b6ad32",
"sha256": "8f6b6cc09450e5aee0eafdb967f4e5443c37b09c4846f109c398a5a996f160c1"
},
"downloads": -1,
"filename": "enpassant-0.6.6-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "2e09b1515583eb41ffa1c84ad7b6ad32",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 12792,
"upload_time": "2017-02-20T06:41:03",
"url": "https://files.pythonhosted.org/packages/cc/3d/0b7cd362663df892209c00d1a44f696d661ca5f77debad5a1d08b0fe3821/enpassant-0.6.6-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a173dba204512739a7fe5807272d544e",
"sha256": "f4d0591f55376d70d5810aa197c5b5c683373b436214e91f596f9f02b095753d"
},
"downloads": -1,
"filename": "enpassant-0.6.6.zip",
"has_sig": false,
"md5_digest": "a173dba204512739a7fe5807272d544e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20102,
"upload_time": "2017-02-20T06:41:00",
"url": "https://files.pythonhosted.org/packages/c1/12/3d33dd5dbf151e30d743d3394d8b493d88878e326bb2539dcee572a8571d/enpassant-0.6.6.zip"
}
],
"0.6.7": [
{
"comment_text": "",
"digests": {
"md5": "bbadaa31e27977aa4e4e8bcf47520809",
"sha256": "e83f5ed66aeb1e7226e83041f806ef32746f4a400aa358d4dc8aa17e4dc5721d"
},
"downloads": -1,
"filename": "enpassant-0.6.7-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "bbadaa31e27977aa4e4e8bcf47520809",
"packagetype": "bdist_wheel",
"python_version": "3.6",
"requires_python": null,
"size": 12773,
"upload_time": "2017-05-30T23:41:59",
"url": "https://files.pythonhosted.org/packages/70/2b/a5f1d9db1bf001799c9bc18d0c28869426a54c93eed8d55dd6cdd15e04bf/enpassant-0.6.7-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "f73f5a5e8458fd56b3a982746482e135",
"sha256": "5547d9be6a6d865247c202c3e26e22e14f28b244a2679b129e8878f5a5333f20"
},
"downloads": -1,
"filename": "enpassant-0.6.7.zip",
"has_sig": false,
"md5_digest": "f73f5a5e8458fd56b3a982746482e135",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20177,
"upload_time": "2017-05-30T23:41:57",
"url": "https://files.pythonhosted.org/packages/40/52/a626069871d4df6d107b335a31c408ed83b678a7aefe33c04a2100b91866/enpassant-0.6.7.zip"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "bbadaa31e27977aa4e4e8bcf47520809",
"sha256": "e83f5ed66aeb1e7226e83041f806ef32746f4a400aa358d4dc8aa17e4dc5721d"
},
"downloads": -1,
"filename": "enpassant-0.6.7-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "bbadaa31e27977aa4e4e8bcf47520809",
"packagetype": "bdist_wheel",
"python_version": "3.6",
"requires_python": null,
"size": 12773,
"upload_time": "2017-05-30T23:41:59",
"url": "https://files.pythonhosted.org/packages/70/2b/a5f1d9db1bf001799c9bc18d0c28869426a54c93eed8d55dd6cdd15e04bf/enpassant-0.6.7-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "f73f5a5e8458fd56b3a982746482e135",
"sha256": "5547d9be6a6d865247c202c3e26e22e14f28b244a2679b129e8878f5a5333f20"
},
"downloads": -1,
"filename": "enpassant-0.6.7.zip",
"has_sig": false,
"md5_digest": "f73f5a5e8458fd56b3a982746482e135",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20177,
"upload_time": "2017-05-30T23:41:57",
"url": "https://files.pythonhosted.org/packages/40/52/a626069871d4df6d107b335a31c408ed83b678a7aefe33c04a2100b91866/enpassant-0.6.7.zip"
}
]
}