{ "info": { "author": "Felix Seele", "author_email": "fseele@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries" ], "description": "BeaconTools - Universal beacon scanning\n=======================================\n|PyPI Package| |Build Status| |Coverage Status| |Requirements Status|\n\nA Python library for working with various types of Bluetooth LE Beacons.\n\nCurrently supported types are:\n\n* `Eddystone Beacons `__\n* `iBeacons `__ (Apple and Cypress CYALKIT-E02)\n* `Estimote Beacons (Telemetry only) `__\n\nThe BeaconTools library has two main components:\n\n* a parser to extract information from raw binary beacon advertisements\n* a scanner which scans for Bluetoth LE advertisements using bluez and can be configured to look only for specific beacons or packet types\n\nInstallation\n------------\nIf you only want to use the **parser** install the library using pip and you're good to go:\n\n.. code:: bash\n\n pip install beacontools\n\nIf you want to perfom beacon **scanning** there are a few more requirement. First of all you need an OS with bluez (most Linux OS; Windows and macOS are also possible but untested, see the \"`Build Requirements `__\" section of pybluez for more information).\n\n.. code:: bash\n\n # install libbluetooth headers and libpcap2\n sudo apt-get install python-dev libbluetooth-dev libcap2-bin\n # grant the python executable permission to access raw socket data\n sudo setcap 'cap_net_raw,cap_net_admin+eip' $(readlink -f $(which python))\n # install beacontools with scanning support\n pip install beacontools[scan]\n\nUsage\n-----\nSee the `examples `__ directory for more usage examples.\n\nParser\n~~~~~~\n\n.. code:: python\n\n from beacontools import parse_packet\n\n tlm_packet = b\"\\x02\\x01\\x06\\x03\\x03\\xaa\\xfe\\x11\\x16\\xaa\\xfe\\x20\\x00\\x0b\\x18\\x13\\x00\\x00\\x00\" \\\n b\"\\x14\\x67\\x00\\x00\\x2a\\xc4\\xe4\"\n tlm_frame = parse_packet(tlm_packet)\n print(\"Voltage: %d mV\" % tlm_frame.voltage)\n print(\"Temperature: %d \u00b0C\" % tlm_frame.temperature)\n print(\"Advertising count: %d\" % tlm_frame.advertising_count)\n print(\"Seconds since boot: %d\" % tlm_frame.seconds_since_boot)\n\nScanner\n~~~~~~~\n.. code:: python\n\n import time\n from beacontools import BeaconScanner, EddystoneTLMFrame, EddystoneFilter\n\n def callback(bt_addr, rssi, packet, additional_info):\n print(\"<%s, %d> %s %s\" % (bt_addr, rssi, packet, additional_info))\n\n # scan for all TLM frames of beacons in the namespace \"12345678901234678901\"\n scanner = BeaconScanner(callback, \n device_filter=EddystoneFilter(namespace=\"12345678901234678901\"),\n packet_filter=EddystoneTLMFrame\n )\n scanner.start()\n\n time.sleep(10)\n scanner.stop()\n\n\n.. code:: python\n\n import time\n from beacontools import BeaconScanner, IBeaconFilter\n\n def callback(bt_addr, rssi, packet, additional_info):\n print(\"<%s, %d> %s %s\" % (bt_addr, rssi, packet, additional_info))\n\n # scan for all iBeacon advertisements from beacons with the specified uuid \n scanner = BeaconScanner(callback, \n device_filter=IBeaconFilter(uuid=\"e5b9e3a6-27e2-4c36-a257-7698da5fc140\")\n )\n scanner.start()\n time.sleep(5)\n scanner.stop()\n\n\nChangelog\n---------\nBeacontools follows the `semantic versioning `__ scheme.\n\n* 1.3.1\n * Multiple fixes and internal refactorings, including support for Raspberry Pi 3B+ (huge thanks to `cereal `__)\n * Updated dependencies\n* 1.3.0\n * Added support for Estimote Telemetry packets (see examples/parser_example.py)\n * Relaxed parsing constraints for RFU and flags field\n * Added temperature output in 8.8 fixed point decimal format for Eddystone TLM\n* 1.2.4\n * Added support for Eddystone packets with Flags Data set to 0x1a (thanks to `AndreasTornes `__)\n * Updated dependencies\n* 1.2.3\n * Fixed compatibility with construct >=2.9.41\n* 1.2.2\n * Moved import of bluez so that the library can be used in parsing-only mode, without having bluez installed.\n* 1.2.1\n * Updated dependencies\n* 1.2.0\n * Added support for Cypress iBeacons which transmit temp and humidity embedded in the minor value (thanks to `darkskiez `__)\n * Updated dependencies\n* 1.1.0\n * Added support for Eddystone EID frames (thanks to `miek `__)\n * Updated dependencies\n* 1.0.1\n * Implemented a small tweak which reduces the CPU usage.\n* 1.0.0 \n * Implemented iBeacon support\n * Added rssi to callback function.\n* 0.1.2 \n * Initial release\n\n.. |PyPI Package| image:: https://badge.fury.io/py/beacontools.svg\n :target: https://pypi.python.org/pypi/beacontools/\n.. |Build Status| image:: https://travis-ci.org/citruz/beacontools.svg?branch=master\n :target: https://travis-ci.org/citruz/beacontools\n.. |Coverage Status| image:: https://coveralls.io/repos/github/citruz/beacontools/badge.svg?branch=master\n :target: https://coveralls.io/github/citruz/beacontools?branch=master\n.. |Requirements Status| image:: https://requires.io/github/citruz/beacontools/requirements.svg?branch=master\n :target: https://requires.io/github/citruz/beacontools/requirements/?branch=master\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/citruz/beacontools", "keywords": "beacons ibeacon eddystone bluetooth low energy ble", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "beacontools", "package_url": "https://pypi.org/project/beacontools/", "platform": "", "project_url": "https://pypi.org/project/beacontools/", "project_urls": { "Homepage": "https://github.com/citruz/beacontools" }, "release_url": "https://pypi.org/project/beacontools/1.3.1/", "requires_dist": [ "construct (<2.10,>=2.8.16)", "enum34 ; python_version < \"3.4\"", "check-manifest ; extra == 'dev'", "PyBluez (==0.22) ; extra == 'scan'", "coveralls (==1.5.1) ; extra == 'test'", "pytest (==4.0.2) ; extra == 'test'", "pytest-cov (==2.6.0) ; extra == 'test'", "mock (==2.0.0) ; extra == 'test'", "check-manifest (==0.37) ; extra == 'test'", "pylint ; extra == 'test'", "readme-renderer ; extra == 'test'", "docutils ; extra == 'test'" ], "requires_python": "", "summary": "A Python library for working with various types of Bluetooth LE Beacons.", "version": "1.3.1" }, "last_serial": 4661783, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "1e01308dcf5278c249912b6f27d92965", "sha256": "dab568b4ce09917ed68da17bf40afa99e5c77505d40d098e7eafbc9895cc8319" }, "downloads": -1, "filename": "beacontools-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1e01308dcf5278c249912b6f27d92965", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12656, "upload_time": "2017-04-03T00:40:35", "url": "https://files.pythonhosted.org/packages/6b/18/50b217023f53d3be96adb40d4e7e46b754038a7b1a98c225be867c0b7d58/beacontools-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74d3862b39b969bb134e4a09eb5a470e", "sha256": "d7c60c76cbb4a41ea3f4ca103fb34ba8bf7ed4527cad6f62a5b61707b0c79d72" }, "downloads": -1, "filename": "beacontools-0.1.2.tar.gz", "has_sig": false, "md5_digest": "74d3862b39b969bb134e4a09eb5a470e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9529, "upload_time": "2017-04-03T00:40:37", "url": "https://files.pythonhosted.org/packages/c2/99/d0dec075bb9ad46ddd7db2b42e8f0c5c39631be7c1049e2e18b707b0b863/beacontools-0.1.2.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "72e831536180cfc02455b810efd19330", "sha256": "0e3d6d950f1d818ef12cc5dddb2617f57991fe7443847e5c111948132a05b284" }, "downloads": -1, "filename": "beacontools-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "72e831536180cfc02455b810efd19330", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14395, "upload_time": "2017-04-03T16:30:45", "url": "https://files.pythonhosted.org/packages/70/e2/e7b6c6fff8d71d1711066f5c2b86aca27bae74b6e99c4067f27ac48207b9/beacontools-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c9e7d599371bf2d6ad51e8a984e5aa7", "sha256": "21386ee215cc9994e9eed589b75cde72af4c47a1cae66290df1de7b7b6f78fad" }, "downloads": -1, "filename": "beacontools-1.0.0.tar.gz", "has_sig": false, "md5_digest": "6c9e7d599371bf2d6ad51e8a984e5aa7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10671, "upload_time": "2017-04-03T16:30:47", "url": "https://files.pythonhosted.org/packages/32/08/97d733c3d9812fe70064660a36cbc27ee23837455561f7344b1775c906bb/beacontools-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "568a884e81b1a4b689b802f9d379724e", "sha256": "de2c68a13fa2c94207ea0102e04aec7d34e172c5bf35ce22546e7585b4cdd94a" }, "downloads": -1, "filename": "beacontools-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "568a884e81b1a4b689b802f9d379724e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14845, "upload_time": "2017-04-03T19:49:02", "url": "https://files.pythonhosted.org/packages/2e/91/f74104a9531687d46a987a44600db7dbbf1fb08d025cbef902160f6692fd/beacontools-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "919d91d7b53869240525de41571479ea", "sha256": "c82958bb4bf8b0bef15dcc33960101934ff26e09d8a6d6edb8794d4183cf9bac" }, "downloads": -1, "filename": "beacontools-1.0.1.tar.gz", "has_sig": false, "md5_digest": "919d91d7b53869240525de41571479ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10930, "upload_time": "2017-04-03T19:49:04", "url": "https://files.pythonhosted.org/packages/b2/4d/c9141d43b533ac5031fa5f2a4b44e69119dd6086d058fb1302e325c7e8e4/beacontools-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "b4985f06d3333cee49daa1c598443aa5", "sha256": "f7f7c1ac12a44a2cd48f3822d123cb482daeec38c2831cc22b88451d3a187c75" }, "downloads": -1, "filename": "beacontools-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b4985f06d3333cee49daa1c598443aa5", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15121, "upload_time": "2017-06-20T21:05:36", "url": "https://files.pythonhosted.org/packages/d9/cc/a53faa8580bb477f5026b3c4964a1fe0ff3f16b44cc022838956567ee0ad/beacontools-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "56b25bf646801f0d7e85b9d6734bb317", "sha256": "a115f12a4e1be1e83baa06389d8e7605a9b17fb0dde5de569695c4d67f854a37" }, "downloads": -1, "filename": "beacontools-1.1.0.tar.gz", "has_sig": false, "md5_digest": "56b25bf646801f0d7e85b9d6734bb317", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11191, "upload_time": "2017-06-20T21:05:08", "url": "https://files.pythonhosted.org/packages/b1/76/a7ee2d0e1afd8f2f296e03ea45122da1857a91cb1ed00fad369ee9e8823f/beacontools-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "4b03439850fbd0decb9339136b2809e9", "sha256": "dafa4fa0e895768487a9dcd16251952cdc3079d2e8430ae54469b535f9c75b46" }, "downloads": -1, "filename": "beacontools-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4b03439850fbd0decb9339136b2809e9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15680, "upload_time": "2017-11-23T14:56:10", "url": "https://files.pythonhosted.org/packages/4f/ba/905602b07a1bbeb9ba8e7a874093fd096ff836c325e9c87c4c74f7b910cc/beacontools-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "90b6c7ea760ee7d66d0053fd1bf73160", "sha256": "cba5bd384c4fbcce3df003887b1157a002326b325060f76a1a93c8272d4db419" }, "downloads": -1, "filename": "beacontools-1.2.0.tar.gz", "has_sig": false, "md5_digest": "90b6c7ea760ee7d66d0053fd1bf73160", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13033, "upload_time": "2017-11-23T14:56:11", "url": "https://files.pythonhosted.org/packages/63/be/fee507e6ae320023dcb2c67040a21722f7ed55d4a20f377325a635a39f5a/beacontools-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "003c31dc312280341c434dec3fc3852c", "sha256": "02695a3ec9d926535a8ab5d65cd260aa55b57b021acc3e3e7e9a80ca0353db18" }, "downloads": -1, "filename": "beacontools-1.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "003c31dc312280341c434dec3fc3852c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15707, "upload_time": "2018-02-13T08:50:50", "url": "https://files.pythonhosted.org/packages/58/5c/a1d2378aed51ef4ff917d91463094155228f7fed29b64c4e6b264c12c3fd/beacontools-1.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ff754c45c36607e19f526b9897ba4bb3", "sha256": "3447ea1d84028a37b8e5bc397da6d9232104e54cec12ad22e07809987de184d5" }, "downloads": -1, "filename": "beacontools-1.2.1.tar.gz", "has_sig": false, "md5_digest": "ff754c45c36607e19f526b9897ba4bb3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13077, "upload_time": "2018-02-13T08:50:52", "url": "https://files.pythonhosted.org/packages/df/2c/4510fe368fecb8c5d3ca7cc352c0c9b4fd6107206f4755b9c7044047c9ba/beacontools-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "0626476a8cb11b44832eda8afe6fb161", "sha256": "8273b61da7d6b0a852943c9500e2fce82e1c6614b371f9242191df0d15278d6c" }, "downloads": -1, "filename": "beacontools-1.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0626476a8cb11b44832eda8afe6fb161", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16006, "upload_time": "2018-02-13T22:31:32", "url": "https://files.pythonhosted.org/packages/ad/f6/8d0b43146c6d6691b60295b11b7676cc5f119a31e6831b21236dc81aaa2c/beacontools-1.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe28a57da37e97b6e3e870ba3402ff3a", "sha256": "4edbc8d15c4ace405f70a54b265fededbc000f98a89f3f7dc258158cfb04251e" }, "downloads": -1, "filename": "beacontools-1.2.2.tar.gz", "has_sig": false, "md5_digest": "fe28a57da37e97b6e3e870ba3402ff3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13355, "upload_time": "2018-02-13T22:31:36", "url": "https://files.pythonhosted.org/packages/d9/71/0947fe82b0a00b152c359b33533c44a3100577e87b0116e93b1236f19fc0/beacontools-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "c93c9b6ee664ef74d33d74911d97b955", "sha256": "1fa7a05490e2e46c9f5adb9a672008eb6b3ac9a0b3e36a456c3521fe97257cf6" }, "downloads": -1, "filename": "beacontools-1.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c93c9b6ee664ef74d33d74911d97b955", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13216, "upload_time": "2018-04-09T20:52:16", "url": "https://files.pythonhosted.org/packages/44/5d/fa5682494e3477cb3c0ae57a9da1e71359faa0852963884c41bb618f4d3e/beacontools-1.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "85ce576bd338e13c58917577ba20af3f", "sha256": "22f9a4a198e3f0b2ace0055e5b63e04d3cb9e122017f96095fdbba5c2cf3ffb7" }, "downloads": -1, "filename": "beacontools-1.2.3.tar.gz", "has_sig": false, "md5_digest": "85ce576bd338e13c58917577ba20af3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13435, "upload_time": "2018-04-09T20:52:17", "url": "https://files.pythonhosted.org/packages/29/63/335072547c35ad3436b9c8de1eb08e8d72d87391ec09fb1a8db5360575c0/beacontools-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "f6c843cc35c3f81fc0dcce482e15fb50", "sha256": "0e3c10e19c227284011a0928e77f906fa3d2c5d50f7849d006f2ffa83070a5a1" }, "downloads": -1, "filename": "beacontools-1.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f6c843cc35c3f81fc0dcce482e15fb50", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13262, "upload_time": "2018-05-25T21:42:04", "url": "https://files.pythonhosted.org/packages/46/1a/2453a1b438d49b5244ee41a4f8da2ad3e7d925a72bf381e10002b46da3ac/beacontools-1.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cca30c26192710779ec3248d903729e6", "sha256": "b10558c0010c905bea33ad5fbe68de6e63161cf9d644803e13c84437c200772b" }, "downloads": -1, "filename": "beacontools-1.2.4.tar.gz", "has_sig": false, "md5_digest": "cca30c26192710779ec3248d903729e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13535, "upload_time": "2018-05-25T21:42:07", "url": "https://files.pythonhosted.org/packages/77/20/1b50002232f08994732801fbb417dd9b4c66e4f1b438fc02761042ebf03e/beacontools-1.2.4.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "f8d9e96a391c85f928eddcd02c03572f", "sha256": "097f58cb69da5e1a566fed12e491d058d24d505c185fac5898db05623257f2ef" }, "downloads": -1, "filename": "beacontools-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f8d9e96a391c85f928eddcd02c03572f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16777, "upload_time": "2018-08-26T19:25:11", "url": "https://files.pythonhosted.org/packages/4c/63/d8f6e3a1b95ecb48544fabff0596712b906c99cd92415050f4fabc3a5678/beacontools-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27b893cd3be682bcb4e210235f316dcb", "sha256": "f565fabe4801240019dd60a8230ff54e9de03f48078d4cad94e08fb8388003a8" }, "downloads": -1, "filename": "beacontools-1.3.0.tar.gz", "has_sig": false, "md5_digest": "27b893cd3be682bcb4e210235f316dcb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26931, "upload_time": "2018-08-26T19:25:14", "url": "https://files.pythonhosted.org/packages/2b/71/cafadb7ce572fdbd1c53ebfb4e8be32b84e32255a48db78bd240da61ed44/beacontools-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "61027a06342c3d03a3e3461e31ebc80e", "sha256": "7f087c3187f175ddf95f1a52d1d2d69b35c0bd27bfe3893fab17e67bb61507fc" }, "downloads": -1, "filename": "beacontools-1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "61027a06342c3d03a3e3461e31ebc80e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19023, "upload_time": "2019-01-04T21:13:14", "url": "https://files.pythonhosted.org/packages/93/96/4d85fbdaba9598e48e3b1c3007f82f7dba54983c01ffe0651b4d82a1ccd1/beacontools-1.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bbe7dc46e9535f055e84524524c06ca1", "sha256": "5a9f47d73b0c4048ed06a6a6f6a99a51b1c8e720c48dc7f13ac99f0989fdd170" }, "downloads": -1, "filename": "beacontools-1.3.1.tar.gz", "has_sig": false, "md5_digest": "bbe7dc46e9535f055e84524524c06ca1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18578, "upload_time": "2019-01-04T21:13:16", "url": "https://files.pythonhosted.org/packages/17/77/7f90efee15416c92e49a2b9b413eaa7d4696afab7677f156d09b7ffe6a91/beacontools-1.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "61027a06342c3d03a3e3461e31ebc80e", "sha256": "7f087c3187f175ddf95f1a52d1d2d69b35c0bd27bfe3893fab17e67bb61507fc" }, "downloads": -1, "filename": "beacontools-1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "61027a06342c3d03a3e3461e31ebc80e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19023, "upload_time": "2019-01-04T21:13:14", "url": "https://files.pythonhosted.org/packages/93/96/4d85fbdaba9598e48e3b1c3007f82f7dba54983c01ffe0651b4d82a1ccd1/beacontools-1.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bbe7dc46e9535f055e84524524c06ca1", "sha256": "5a9f47d73b0c4048ed06a6a6f6a99a51b1c8e720c48dc7f13ac99f0989fdd170" }, "downloads": -1, "filename": "beacontools-1.3.1.tar.gz", "has_sig": false, "md5_digest": "bbe7dc46e9535f055e84524524c06ca1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18578, "upload_time": "2019-01-04T21:13:16", "url": "https://files.pythonhosted.org/packages/17/77/7f90efee15416c92e49a2b9b413eaa7d4696afab7677f156d09b7ffe6a91/beacontools-1.3.1.tar.gz" } ] }