{ "info": { "author": "Button", "author_email": "support@usebutton.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT 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.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "button-client-python |Build Status|\n===================================\n\nThis module is a thin client for interacting with Button's API.\n\nPlease see the full `API\nDocs `__ for more\ninformation. For help, check out our\n`Support `__ page or `get in\ntouch `__.\n\nSupported runtimes\n^^^^^^^^^^^^^^^^^^\n\n- cPython ``2.7``, ``3.4``, ``3.5``, ``3.6``, ``3.7``\n\nDependencies\n^^^^^^^^^^^^\n\n- None\n\nUsage\n-----\n\n.. code:: bash\n\n pip install pybutton\n\nTo create a client capable of making network requests, instantiate a\n``pybutton.Client`` with your `API\nkey `__.\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\nThe client will always attempt to raise a ``pybutton.ButtonClientError``\nor a subclass in an error condition.\n\nAll API requests will return a ``pybutton.response.Response`` instance,\nwhich supports accessing data via the `#data` method. For instance:\n\n.. code:: python\n\n from pybutton import Client\n from pybutton import ButtonClientError, HTTPResponseError\n\n client = Client(\"sk-XXX\")\n\n try:\n response = client.orders.get(\"btnorder-XXX\")\n except HTTPResponseError as e:\n print('API request failed: http status {}'.format(e.status_code))\n except ButtonClientError as e:\n print(e)\n else:\n print(response)\n # \n\n print(response.data())\n # {'status': open, 'btn_ref': None, 'line_items': [], ...}\n\n\nConfiguration\n-------------\n\nYou may optionally supply a config argument with your API key:\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client(\"sk-XXX\", {\n 'hostname': 'api.testsite.com',\n 'port': 80,\n 'secure': False,\n 'timeout': 5, # seconds\n })\n\nThe supported options are as follows:\n\n* ``hostname``: Defaults to ``api.usebutton.com``.\n* ``port``: Defaults to ``443`` if ``config.secure``, else defaults to ``80``.\n* ``secure``: Whether or not to use HTTPS. Defaults to ``True``. **N.B: Button's API is only exposed through HTTPS. This option is provided purely as a convenience for testing and development.**\n* ``timeout``: The time in seconds that may elapse before network requests abort. Defaults to ``None``.\n\nResources\n---------\n\nWe currently expose the following resources to manage:\n\n* `Accounts`_\n* `Merchants`_\n* `Orders`_\n* `Customers`_\n* `Links`_\n* `Transactions`_\n\nAccounts\n~~~~~~~~\n\nAll\n'''\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.accounts.all()\n\n print(response)\n # \n\nTransactions (per-account)\n''''''''''''''''''''''''''\n\nAlong with the required account ID, you may also\npass the following optional arguments:\n\n* ``cursor`` (string): An API cursor to fetch a specific set of results.\n* ``start`` (ISO-8601 datetime string): Fetch transactions after this time.\n* ``end`` (ISO-8601 datetime string): Fetch transactions before this time.\n* ``time_field`` (string): Which time field ``start`` and ``end`` filter on.\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.accounts.transactions(\n 'acc-123',\n start='2016-07-15T00:00:00.000Z',\n end='2016-09-30T00:00:00.000Z'\n )\n\n print(response)\n # \n\nMerchants\n~~~~~~~~~\n\nAll\n'''\n\nYou may pass the following optional arguments:\n\n* ``status`` (string): Partnership status to filter by. One of ('approved', 'pending', or 'available')\n* ``currency`` (ISO-4217 string): Currency code to filter returned rates by\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.merchants.all()\n\n print(response)\n # \n\nOrders\n~~~~~~\n\n**n.b: all currency values should be reported in the smallest possible\nunit of that denomination, i.e. $1.00 should be reported as 100\n(i.e. 100 pennies)**\n\nCreate\n''''''\n\n.. code:: python\n\n import hashlib\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n hashed_email = hashlib.sha256('user@example.com'.lower().strip()).hexdigest()\n\n response = client.orders.create({\n 'total': 50,\n 'currency': 'USD',\n 'order_id': '2007',\n 'purchase_date': '2017-07-25T08:23:52Z',\n 'finalization_date': '2017-08-02T19:26:08Z',\n 'btn_ref': 'srctok-XXX',\n 'customer': {\n 'id': 'mycustomer-1234',\n 'email_sha256': hashed_email,\n },\n })\n\n print(response)\n # \n\nGet\n'''\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.orders.get('btnorder-XXX')\n\n print(response)\n # \n\nUpdate\n''''''\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.orders.update('btnorder-XXX', {\n 'total': 60,\n })\n\n print(response)\n # \n\nDelete\n''''''\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.orders.delete('btnorder-XXX')\n\n print(response)\n # \n\nLinks\n~~~~~~\n\nCreate\n''''''\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.links.create({\n 'url': 'https://www.jet.com',\n \"experience\": {\n 'btn_pub_ref': 'my-pub-ref',\n 'btn_pub_user': 'user-id',\n },\n })\n\n print(response)\n # \n\nGet Info\n''''''''\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.links.get_info({\n \"url\": \"https://www.jet.com\",\n })\n\n print(response)\n # \n\nCustomers\n~~~~~~~~~\n\nCreate\n''''''\n\n.. code:: python\n\n import hashlib\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n hashed_email = hashlib.sha256('user@example.com'.lower().strip()).hexdigest()\n\n response = client.customers.create({\n 'id': 'customer-1234',\n 'email_sha256': hashed_email,\n })\n\n print(response)\n # \n\nGet\n'''\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.customers.get('customer-1234')\n\n print(response)\n # \n\nTransactions\n~~~~~~~~~~~~\n\nAll\n'''\n\nYou may pass the following optional arguments:\n\n* ``cursor`` (string): An API cursor to fetch a specific set of results.\n* ``start`` (ISO-8601 datetime string): Fetch transactions after this time.\n* ``end`` (ISO-8601 datetime string): Fetch transactions before this time.\n* ``time_field`` (string): Which time field ``start`` and ``end`` filter on.\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.transactions(\n start='2016-07-15T00:00:00.000Z',\n end='2016-09-30T00:00:00.000Z',\n time_field='modified_date',\n )\n\n print(response)\n # \n\nResponse\n--------\n\nMethods\n~~~~~~~\n\ndata\n''''\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.orders.get('btnorder-XXX')\n\n print(response.data())\n # {'total': 50, 'currency': 'USD', 'status': 'open' ... }\n\n response = client.accounts.all()\n\n print(response.data())\n # [{'id': 'acc-123', ... }, {'id': 'acc-234', ... }]\n\nnext_cursor\n'''''''''''\n\nFor any paged resource, ``next_cursor()`` will return a cursor to\nsupply for the next page of results. If ``next_cursor()`` returns ``None``,\nthere are no more results.\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.accounts.transactions('acc-123')\n cursor = response.next_cursor()\n\n # loop through and print all transactions\n while cursor:\n response = client.accounts.transactions('acc-123', cursor=cursor)\n print(response.data())\n cursor = response.next_cursor()\n\nprev_cursor\n'''''''''''\n\nFor any paged resource, ``prev_cursor()`` will return a cursor to\nsupply for the next page of results. If ``prev_cursor()`` returns\n``None``, there are no more previous results.\n\n.. code:: python\n\n from pybutton import Client\n\n client = Client('sk-XXX')\n\n response = client.accounts.transactions('acc-123', cursor='xyz')\n\n print(response)\n # \n\n cursor = response.prev_cursor()\n\n response = client.accounts.transactions('acc-123', cursor=cursor)\n\n print(response)\n # \n\n\nUtils\n---------\n\nUtils houses generic helpers useful in a Button Integration.\n\n#is_webhook_authentic\n~~~~~~~~~~~~~~~~~~~~~\n\nUsed to verify that requests sent to a webhook endpoint are from Button and that\ntheir payload can be trusted. Returns ``True`` if a webhook request body matches\nthe sent signature and ``False`` otherwise. See `Webhook Security `__ for more details.\n\n.. code:: python\n\n import os\n\n from pybutton.utils import is_webhook_authentic\n\n is_webhook_authentic(\n os.environ['WEBHOOK_SECRET'],\n request.data,\n request.headers.get('X-Button-Signature')\n )\n\nContributing\n------------\n\n* Building the egg: ``python setup.py bdist_egg``\n* Building the wheel: ``python setup.py bdist_wheel --universal``\n* Building the sdist: ``python setup.py sdist``\n* Installing locally: ``python setup.py install``\n* Running tests: ``python setup.py test`` (you'll need to ``pip install flake8==3.3.0``)\n* Running lint directly: ``flake8 pybutton``\n* Running tests on all versions: ``tox`` (need to ``pip install tox`` and something like ``pyenv local 2.7.10 3.4.6 3.5.3 3.6.0`` if using ``pyenv``)\n\n.. |Build Status| image:: https://travis-ci.org/button/button-client-python.svg?branch=master\n :target: https://travis-ci.org/button/button-client-python\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://www.usebutton.com/developers/api-reference/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pybutton", "package_url": "https://pypi.org/project/pybutton/", "platform": "", "project_url": "https://pypi.org/project/pybutton/", "project_urls": { "Homepage": "https://www.usebutton.com/developers/api-reference/" }, "release_url": "https://pypi.org/project/pybutton/3.0.0/", "requires_dist": null, "requires_python": "", "summary": "Client for the Button API", "version": "3.0.0" }, "last_serial": 5887411, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "fdbdf31f55a943578b66464a96e8c15e", "sha256": "ec169c9e360d564fc4ece6268e9c1269d7bc9a863c5d52ab58609e6206969bf0" }, "downloads": -1, "filename": "pybutton-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fdbdf31f55a943578b66464a96e8c15e", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 9914, "upload_time": "2016-08-11T17:25:15", "url": "https://files.pythonhosted.org/packages/41/5f/da2c58d01c49636b949207a4559a1b052156935a9106c99ff72fd62845fe/pybutton-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6912a1a7463851369f62b41a91786368", "sha256": "faf621c4ce0bbc6181c370d7abb0c9e8eb665c1f2a431c66a966e7d8449fcbc8" }, "downloads": -1, "filename": "pybutton-1.0.2.tar.gz", "has_sig": false, "md5_digest": "6912a1a7463851369f62b41a91786368", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6584, "upload_time": "2016-08-11T17:25:13", "url": "https://files.pythonhosted.org/packages/61/b5/b317f8fc0475efb0ff7816336f86ff5dc083771c4b6402595b315c2c5c22/pybutton-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "190b85482768ea6b924282bc074937f6", "sha256": "0b0b1a8cb6daace44416168cdd040b9f67833bdf374f369703bb7eb150145b78" }, "downloads": -1, "filename": "pybutton-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "190b85482768ea6b924282bc074937f6", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11697, "upload_time": "2016-10-10T14:52:24", "url": "https://files.pythonhosted.org/packages/19/d9/7a4735c45397d62d9b7c9123324f444172e04afb84996061277239226b05/pybutton-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5e21ce4e3c64b899baddf99de6dd7c6", "sha256": "8a0ce6094fe6765ea622bc97ad1e15d22f47aca72b61c07d139cb8fbb6c1c90f" }, "downloads": -1, "filename": "pybutton-1.1.0.tar.gz", "has_sig": false, "md5_digest": "d5e21ce4e3c64b899baddf99de6dd7c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7070, "upload_time": "2016-10-10T14:52:22", "url": "https://files.pythonhosted.org/packages/11/dc/1a955715cd3a2dd10a47b807df9145bf7dd75cea77de95f6d7f05cac2c25/pybutton-1.1.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "b559b066aaadee66761d8867f4dab51b", "sha256": "6c5afc58e02922d12b03d8bf426f96885be68f3eca26d902ffdc7bf80fc6fdd1" }, "downloads": -1, "filename": "pybutton-2.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "b559b066aaadee66761d8867f4dab51b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14437, "upload_time": "2016-10-13T21:33:21", "url": "https://files.pythonhosted.org/packages/bc/b6/540195569273234724c3da308c2916740829342c38b64665c55d55f70ef6/pybutton-2.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f41cabfb7e149a684d09ca3f01c7a75", "sha256": "63849fdd93535de37acdf6ba30ffd8f37fbe155e5d811b6e75d39e11eb262afc" }, "downloads": -1, "filename": "pybutton-2.0.0.tar.gz", "has_sig": false, "md5_digest": "9f41cabfb7e149a684d09ca3f01c7a75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10608, "upload_time": "2016-10-13T21:33:19", "url": "https://files.pythonhosted.org/packages/ac/42/0b01844fa42746b952824abacaeb49f1468fd8cdf185f01d1258e87c60cf/pybutton-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "e9b5e4a74a5e4f3f9b467613a98d4165", "sha256": "1529e9b10291a3cbed777e6a2bae74dcaa4e6751b676fab38481584c810cdb16" }, "downloads": -1, "filename": "pybutton-2.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e9b5e4a74a5e4f3f9b467613a98d4165", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15800, "upload_time": "2017-01-04T19:02:59", "url": "https://files.pythonhosted.org/packages/7b/c3/b1a81114505b5fa419287347da02639be2a12087571d585c7020ed050011/pybutton-2.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9105c51ad3518b2037f9d2abe9b71bb", "sha256": "5ac8bb957cebbf2d645c77d4be2659b83338445b129e56596b3b0052cb272577" }, "downloads": -1, "filename": "pybutton-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c9105c51ad3518b2037f9d2abe9b71bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15796, "upload_time": "2017-01-04T19:05:43", "url": "https://files.pythonhosted.org/packages/0e/0f/cbf09ef7d6e5819f0c0f1b14ba157732f6478239424844666a2b21784789/pybutton-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac5b3bfd6eed66af95397966a64003da", "sha256": "776f08a1f2d768b1a99d2bf91c6c42ebfbe145b0415b26e5a081bd2ab6118e0d" }, "downloads": -1, "filename": "pybutton-2.1.0.tar.gz", "has_sig": false, "md5_digest": "ac5b3bfd6eed66af95397966a64003da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11667, "upload_time": "2017-01-04T19:05:50", "url": "https://files.pythonhosted.org/packages/38/f9/de8961e58c6153b95cc5b678a0afaa24d317eb47b68cd454106a7689bf09/pybutton-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "39170d7491fe2ea45e72a67f9d163822", "sha256": "c763177f86219aec311794e9d251a047857913c63698b48137c95e5875922c35" }, "downloads": -1, "filename": "pybutton-2.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "39170d7491fe2ea45e72a67f9d163822", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16116, "upload_time": "2017-01-06T21:05:20", "url": "https://files.pythonhosted.org/packages/22/35/fce7d3581893f560edb00868959d87deffc3777feadbf0c6acf7961251b1/pybutton-2.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "84201a5d51f31490040fc9e8d61d3932", "sha256": "7bcec4937cd5ba7e94b98cb7ffe3a844e6015ba9d60d51112cea4f54508ec447" }, "downloads": -1, "filename": "pybutton-2.2.0.tar.gz", "has_sig": false, "md5_digest": "84201a5d51f31490040fc9e8d61d3932", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12040, "upload_time": "2017-01-06T21:05:21", "url": "https://files.pythonhosted.org/packages/e1/07/278c226b95e2986751075790667f1d4e7454513b365c098fb2c2021a7b57/pybutton-2.2.0.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "5b1276e8dacb5b13e224ed7d98701ddb", "sha256": "d377a2a7d3dcd73d19f54c5b72f1e316f5ecd349ba759ca589cde6292be8b119" }, "downloads": -1, "filename": "pybutton-2.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5b1276e8dacb5b13e224ed7d98701ddb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16496, "upload_time": "2017-06-22T21:27:04", "url": "https://files.pythonhosted.org/packages/45/a0/bd087f6d2d3b10a69ad62654c805b277da85d3312ef2c274292dac2db73c/pybutton-2.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7febfa96e857a4e9e7b9bb71eddbc6b", "sha256": "dc81d01e9eec108d816a104d25f26e7dfea8a52203ce873b3e738b7597043be1" }, "downloads": -1, "filename": "pybutton-2.3.0.tar.gz", "has_sig": false, "md5_digest": "a7febfa96e857a4e9e7b9bb71eddbc6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12326, "upload_time": "2017-06-22T21:27:08", "url": "https://files.pythonhosted.org/packages/71/af/82fd1e19ee9ecc0d17e836e9537472a07ae571e30801528b40450a4b3629/pybutton-2.3.0.tar.gz" } ], "2.4.0": [ { "comment_text": "", "digests": { "md5": "8d48e554fface0ee4666b05bf15a168c", "sha256": "1b5098017deb26137cd7438f0c99cf0184b9de627efeb3f3538ad3f570ae3a00" }, "downloads": -1, "filename": "pybutton-2.4.0-py2.7.egg", "has_sig": false, "md5_digest": "8d48e554fface0ee4666b05bf15a168c", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 27460, "upload_time": "2017-07-19T17:43:43", "url": "https://files.pythonhosted.org/packages/ab/a6/fda0b194d539f0d66c52efbc04ba50c51b797d865f83a94a5655553d939e/pybutton-2.4.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "26d62d6f0b135388177c3282097abee0", "sha256": "7a4dc6f6b36785761f7b01671da7136e06637a8aab6c4401c293c95f38c10a7e" }, "downloads": -1, "filename": "pybutton-2.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "26d62d6f0b135388177c3282097abee0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17459, "upload_time": "2017-07-19T17:43:42", "url": "https://files.pythonhosted.org/packages/4a/d3/0479154d23dffb82e698017593eb17ab005b974488f175cd0401c5b9e25f/pybutton-2.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d5916badbdb22c13e682fb365a9661c", "sha256": "2b29d648508e5cb32b7434e0a76e20bfe96c4ad76250a8a15e78321640ca599f" }, "downloads": -1, "filename": "pybutton-2.4.0.tar.gz", "has_sig": false, "md5_digest": "1d5916badbdb22c13e682fb365a9661c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12965, "upload_time": "2017-07-19T17:43:45", "url": "https://files.pythonhosted.org/packages/af/f7/0e00c334548b003bf2c70308c5459f179433b36c1aa24b39a7ed3bf58bae/pybutton-2.4.0.tar.gz" } ], "2.5.0": [ { "comment_text": "", "digests": { "md5": "5f2a34ac92a9772ba0f9bdb5e05615be", "sha256": "503976cb3e23b9c2e7cf075a016f86d8ca8b1a3ff473f3dab6fa18d8892e02fb" }, "downloads": -1, "filename": "pybutton-2.5.0-py2-none-any.whl", "has_sig": false, "md5_digest": "5f2a34ac92a9772ba0f9bdb5e05615be", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 18301, "upload_time": "2018-05-18T14:53:56", "url": "https://files.pythonhosted.org/packages/88/a6/8633a178657b3553a579eafeca891681f33d1ed047a12cff5b88a477cbe2/pybutton-2.5.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af9e175a483e93ef718327026da43efe", "sha256": "964ffb951f2c1bf3b696e4c249c56a76a8139d3fb281fefb05b1063ed53b1ea8" }, "downloads": -1, "filename": "pybutton-2.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "af9e175a483e93ef718327026da43efe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18305, "upload_time": "2018-05-18T14:53:57", "url": "https://files.pythonhosted.org/packages/41/3f/bd64f346df67445fa46535e0fbfa63719864ee98ad24e146567af0d006d7/pybutton-2.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ace7f2da50e7319d903d1ddcf4e0577b", "sha256": "8c7e6669cd96e28d285ccc7b285a2b8d616d406187ec24707335d954cb5a6a2e" }, "downloads": -1, "filename": "pybutton-2.5.0.tar.gz", "has_sig": false, "md5_digest": "ace7f2da50e7319d903d1ddcf4e0577b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13501, "upload_time": "2018-05-18T14:53:58", "url": "https://files.pythonhosted.org/packages/97/83/584fe0bd9afc00c0301e9722ced3d39dd8a6d2a56a5b477e541815fb5887/pybutton-2.5.0.tar.gz" } ], "2.6.0": [ { "comment_text": "", "digests": { "md5": "885e828c3d6c10bbc2e976f3eda987de", "sha256": "1479b8f5702dea9cc5e839e5857b83d546d5a4851e6d963ce605a85ea1345b19" }, "downloads": -1, "filename": "pybutton-2.6.0-py2.7.egg", "has_sig": false, "md5_digest": "885e828c3d6c10bbc2e976f3eda987de", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 29706, "upload_time": "2018-05-18T14:41:39", "url": "https://files.pythonhosted.org/packages/2a/19/2805ee9109f409015e363a8792eda308c4092128954e23bf7fa5c12d3c61/pybutton-2.6.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "747f5649f4fd752a2ef2bd4b7796c065", "sha256": "5fac2ded38be6853187d4df393c022c5eabc1e2b8e9797ccafa9a551c9cb0468" }, "downloads": -1, "filename": "pybutton-2.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "747f5649f4fd752a2ef2bd4b7796c065", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18674, "upload_time": "2018-05-18T14:41:38", "url": "https://files.pythonhosted.org/packages/5b/6c/f68cba63e2612f9e81ead97f12f6bae673aa225a19927dd084f6d0649c99/pybutton-2.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72a4c619bbb23ffd1c2fcb0f4604c5ca", "sha256": "3ddf802d4e322b1a550c47ed2eefa9801a0dbae0800b897cabe8a5491c193fcc" }, "downloads": -1, "filename": "pybutton-2.6.0.tar.gz", "has_sig": false, "md5_digest": "72a4c619bbb23ffd1c2fcb0f4604c5ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13827, "upload_time": "2018-05-18T14:41:40", "url": "https://files.pythonhosted.org/packages/1e/c1/a77d23eb3892a6cb41d5c03d9087085ea3e706a72f7a723b174db3978c67/pybutton-2.6.0.tar.gz" } ], "2.6.1": [ { "comment_text": "", "digests": { "md5": "53dff27cd55416bce3b97529211ac5ec", "sha256": "123c8d46f43943485a2f735911b15c8572fe8987f4c5fb7a047b1d91d5b3e780" }, "downloads": -1, "filename": "pybutton-2.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "53dff27cd55416bce3b97529211ac5ec", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14913, "upload_time": "2018-06-05T22:49:30", "url": "https://files.pythonhosted.org/packages/7c/80/ae15c60342132bdd07a78fea04aff816f01f8b9d3b5552f00c825af03df5/pybutton-2.6.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48c31ea2b55e128035ea6eb3cfbfa109", "sha256": "f8caa573cc748a914f6549c7a5bb154cd569763fce1d3d13f744d56681b2a40a" }, "downloads": -1, "filename": "pybutton-2.6.1.tar.gz", "has_sig": false, "md5_digest": "48c31ea2b55e128035ea6eb3cfbfa109", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13797, "upload_time": "2018-06-05T22:49:31", "url": "https://files.pythonhosted.org/packages/4f/17/9ab9f8bfa67db555ea3f6c8bd96fe394725f1522bcb3aa4b93dca65ce828/pybutton-2.6.1.tar.gz" } ], "2.7.0": [ { "comment_text": "", "digests": { "md5": "6f6be8afa760d558e5844cfca00f2e2d", "sha256": "dcb5f5110b3eec34e426f7c2c019039023432f5b128d3c58ac23b82bfb4667bb" }, "downloads": -1, "filename": "pybutton-2.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6f6be8afa760d558e5844cfca00f2e2d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14989, "upload_time": "2018-06-22T15:42:28", "url": "https://files.pythonhosted.org/packages/0b/67/c4bf3698865ceb1b440bd5b1a394ea0642b87632c6ba77fb217ceeb5863e/pybutton-2.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b49e50c9f9903702327cd3ac3e4ca16", "sha256": "036daf90ac0b6fcd0763af3219755ed93c85c9acae378bb8fce33856d2d13af9" }, "downloads": -1, "filename": "pybutton-2.7.0.tar.gz", "has_sig": false, "md5_digest": "9b49e50c9f9903702327cd3ac3e4ca16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13855, "upload_time": "2018-06-22T15:42:29", "url": "https://files.pythonhosted.org/packages/97/68/838a0811af3f43bf22c0050e2d52170834b975bd748d70e44f1f80250fbf/pybutton-2.7.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "1aecf7180c499e0ce87a2b466a80b90d", "sha256": "a463673ab958c1fe5fae4190a59ca75abe3d5c13f68caf9450e37e0d9c92ce26" }, "downloads": -1, "filename": "pybutton-3.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1aecf7180c499e0ce87a2b466a80b90d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16957, "upload_time": "2019-09-25T22:00:04", "url": "https://files.pythonhosted.org/packages/13/14/edca40d1dabd40ac4ab9537f76c00cd32fa6483290393d33490fc0832146/pybutton-3.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9754d0773f18b1afb41744c1c3a22106", "sha256": "beb5ec3093d538c683c581ff60bb002de57c435269828ec7a3f926c21918f67e" }, "downloads": -1, "filename": "pybutton-3.0.0.tar.gz", "has_sig": false, "md5_digest": "9754d0773f18b1afb41744c1c3a22106", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14270, "upload_time": "2019-09-25T22:00:07", "url": "https://files.pythonhosted.org/packages/66/60/5f99534841b44712d0db5606fedd661c1892315182521794da2b4e525050/pybutton-3.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1aecf7180c499e0ce87a2b466a80b90d", "sha256": "a463673ab958c1fe5fae4190a59ca75abe3d5c13f68caf9450e37e0d9c92ce26" }, "downloads": -1, "filename": "pybutton-3.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1aecf7180c499e0ce87a2b466a80b90d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16957, "upload_time": "2019-09-25T22:00:04", "url": "https://files.pythonhosted.org/packages/13/14/edca40d1dabd40ac4ab9537f76c00cd32fa6483290393d33490fc0832146/pybutton-3.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9754d0773f18b1afb41744c1c3a22106", "sha256": "beb5ec3093d538c683c581ff60bb002de57c435269828ec7a3f926c21918f67e" }, "downloads": -1, "filename": "pybutton-3.0.0.tar.gz", "has_sig": false, "md5_digest": "9754d0773f18b1afb41744c1c3a22106", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14270, "upload_time": "2019-09-25T22:00:07", "url": "https://files.pythonhosted.org/packages/66/60/5f99534841b44712d0db5606fedd661c1892315182521794da2b4e525050/pybutton-3.0.0.tar.gz" } ] }