{ "info": { "author": "Matt Ball", "author_email": "matt@endaga.com", "bugtrack_url": null, "classifiers": [], "description": "a Python client for the OpenBTS NodeManager,\nproviding access to several components in the OpenBTS application suite:\nSMQueue, SIPAuthServe, and OpenBTS itself.\n\n\n### requirements\n* Endaga's OpenBTS fork (tested on `3edca32`)\n* Endaga's SMQueue fork (tested on `bc292b2`)\n* Endaga's SIPAuthServe fork (tested on `3affcd7`)\n* Endaga's NodeManager fork (tested on `fae5611`)\n* Python 2.7\n\n\n### installation\n\n```shell\n$ pip install openbts\n```\n\n\n### usage\n\n```python\nimport openbts\n\n# read a config value from SMQueue\nsmqueue_connection = openbts.components.SMQueue()\nresponse = smqueue_connection.read_config('Bounce.Code')\nprint response.data['value']\n# 101\n\n# update an SIPAuthServe config value\nsipauthserve_connection = openbts.components.SIPAuthServe()\nresponse = sipauthserve_connection.update_config('Log.Alarms.Max', 12)\nprint response.code\n# 204\n\n# get realtime OpenBTS monitoring data\nopenbts_connection = openbts.components.OpenBTS()\nresponse = openbts_connection.monitor()\nprint response.data['noiseRSSI']\n# -67\n\n# view all subscriber data\nresponse = sipauthserve_connection.get_subscribers()\nprint len(response.data)\n# 78\n\n# view tmsis entries\nresponse = openbts_connection.tmsis()\nprint len(response)\n# 214\n\n# create a new subscriber by name, IMSI, MSIDSN and optional ki\nsubscriber = ('ada', 0123, 4567, 8901)\nresponse = sipauthserve_connection.create_subscriber(*subscriber)\nprint response.code\n# 200\n```\n\nsee additional examples in `integration_tests.py`\n\n\n### license\nMIT\n\n\n### releases\n* 0.1.9 - handles duplicate IMSI entries in output of `gprs list`\n* 0.1.8 - fixes ZMQError when socket is put in bad state because OpenBTS is down. Improves error reporting on CLI\n* 0.1.7 - `get_load` handles gprs utilization percentages expressed in scientific notation\n* 0.1.6 - new release for an internal endaga project\n* 0.1.5 - adds `components.OpenBTS.get_noise`\n* 0.1.4 - new release for an internal endaga project\n* 0.1.3 - adds `components.OpenBTS.get_load`\n* 0.1.2 - version increment required for internal endaga project\n* 0.1.1 - adds support for TMSIs\n* 0.1.0 - minor release!\n* 0.0.18 - fixes integration tests\n* 0.0.17 - sets `RCVTIME0` on zmq sockets\n* 0.0.16 - adds `envoy` to `setup.py`\n* 0.0.15 - get GPRS information (experimental); prefixes other ipaddr and port attributes with `openbts_`\n* 0.0.14 - `get_numbers` returns an empty list instead of raising if no number is found for an IMSI\n* 0.0.13 - fixes `get_subscriber` and `create_subscriber` for the latest NM\n* 0.0.12 - correctly handles `caller_id` in get / update / delete operations\n* 0.0.11 - `get_subscribers` returns `account_balance` info for each subscriber\n* 0.0.10 - adds read and update operations on subscriber `account_balance`\n* 0.0.9 - prevents `create_subscriber` from adding duplicate IMSIs\n* 0.0.8 - adds `get_imsi_from_number` method\n* 0.0.7 - adds some precise SubscriberRegistry methods and removes some more general ones\n* 0.0.6 - fixes distribution manifest\n* 0.0.5 - pypi points to Endaga fork\n* 0.0.4 - expands SIPAuthServe and SR tables\n* 0.0.3 - SMQueue config operations, OpenBTS monitoring, SIPAuthServe config and subscriber operations, version command for all components\n* 0.0.2 - config reading and updating for the OpenBTS component\n* 0.0.1 - barebones setup for pypi\n\n\n### resources\n* see the [OpenBTS 4.0 manual](http://openbts.org/site/wp-content/uploads/2014/07/OpenBTS-4.0-Manual.pdf)\n* and the [NodeManager source](https://github.com/RangeNetworks/NodeManager) from Range\n\n\n### testing\nrun unit tests with `nose` after installing the required modules:\n\n```shell\n$ pip install -r requirements.txt\n$ nosetests openbts --with-coverage --cover-package=openbts\n```\n\nWe have quite a few similar unit tests between components.\nMany could be written against `openbts.core.BaseComponent`, as the components\nall inherit from this single class. But it seems better to individually\ninspect the functionality of each class in `openbts.components`. Anyway,\nonward..\n\nTo run the integration tests, you'll need an OpenBTS instance running on the\nsame machine as the testing script. The test will modify real system\nparameters, so run it with caution. Or, better yet, run it against a system\nnot in production.\n\n```shell\n$ nosetests integration_tests\n$ nosetests integration_tests:SIPAuthServe\n$ nosetests integration_tests:SIPAuthServe.test_get_all_subscribers\n```\n\n\n### release process\nyou need a `~/.pypirc` like this:\n\n```\n[distutils]\nindex-servers =\n pypi\n\n[pypi]\nrepository: https://pypi.python.org/pypi\nusername: yosemitebandit\npassword: mhm\n```\n\nbump the versions in `setup.py` and here in the readme, then run:\n\n```shell\n$ git tag 0.0.1 -m 'openbts-python v0.0.1'\n$ git push origin master --tags\n$ python setup.py sdist upload -r pypi\n```", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/endaga/openbts-python/tarball/0.1.9", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/endaga/openbts-python", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "openbts", "package_url": "https://pypi.org/project/openbts/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/openbts/", "project_urls": { "Download": "https://github.com/endaga/openbts-python/tarball/0.1.9", "Homepage": "http://github.com/endaga/openbts-python" }, "release_url": "https://pypi.org/project/openbts/0.1.9/", "requires_dist": null, "requires_python": null, "summary": "OpenBTS NodeManager client", "version": "0.1.9" }, "last_serial": 1744538, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "de7114299f3740b0f92662dc252c7ee0", "sha256": "603e63238930f645ef876c4cc68c4a5db771226aa8d9f00d05fcd2a42c4d336c" }, "downloads": -1, "filename": "openbts-0.0.1.tar.gz", "has_sig": false, "md5_digest": "de7114299f3740b0f92662dc252c7ee0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2490, "upload_time": "2014-10-24T07:33:50", "url": "https://files.pythonhosted.org/packages/45/a7/25bbaf50a837719a617f69cfbac74cf3e53fee87d1278ad1af63a7c9e79f/openbts-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "9edbc50e0c9dd940132d0faeea2a1314", "sha256": "6c92aee4d1af0c06c1c250a3271d2d7db2e2a6d0fc118962b47eba772c2bf35c" }, "downloads": -1, "filename": "openbts-0.0.10.tar.gz", "has_sig": false, "md5_digest": "9edbc50e0c9dd940132d0faeea2a1314", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7059, "upload_time": "2015-03-17T16:47:20", "url": "https://files.pythonhosted.org/packages/38/48/cfc23bf373a34828b4847d50c54fc2b2aef0d313e6af1dbb6a3df0744f6c/openbts-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "16b97a40e7e4f67fdbeaa492a7619923", "sha256": "f963f441eb342d17ed363a8681c26e71c65d9b4627a0fe314b47ca082c163762" }, "downloads": -1, "filename": "openbts-0.0.11.tar.gz", "has_sig": false, "md5_digest": "16b97a40e7e4f67fdbeaa492a7619923", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7105, "upload_time": "2015-03-17T18:32:34", "url": "https://files.pythonhosted.org/packages/26/55/2edfcd734568abc2e6ab3b5fd4b9fd3da5df01f2c6cf76468ebcc7fffcfa/openbts-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "f07bcc4896fc90c8a631c2c8f78451fb", "sha256": "e673e3577e178ed9b36c7b4fbb20560a36eae409a77380774e51006e6fbbfded" }, "downloads": -1, "filename": "openbts-0.0.12.tar.gz", "has_sig": false, "md5_digest": "f07bcc4896fc90c8a631c2c8f78451fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7418, "upload_time": "2015-03-17T20:13:20", "url": "https://files.pythonhosted.org/packages/93/ca/997a50f0ef78dfa9d0a2bd1a7acec6e364a32220429443e0bc92f5cc0862/openbts-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "cc9c759ca1286403344eb1425c88c535", "sha256": "22c4d8adb6aefc71b895f2e6499bd8e0a45e2cfadbaf2ff4a33509cb68f959f5" }, "downloads": -1, "filename": "openbts-0.0.13.tar.gz", "has_sig": false, "md5_digest": "cc9c759ca1286403344eb1425c88c535", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7668, "upload_time": "2015-03-18T20:09:14", "url": "https://files.pythonhosted.org/packages/65/a5/c62a009c75376cf2ce001098181968add7bfe540afa76c62eef1ed52a09f/openbts-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "c1357c8e574d8ce624426980a3c5a2e9", "sha256": "bf0bbbd018435ed1dbba6957286609476e3b24f5e1bb5c930469d4863195b098" }, "downloads": -1, "filename": "openbts-0.0.14.tar.gz", "has_sig": false, "md5_digest": "c1357c8e574d8ce624426980a3c5a2e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7890, "upload_time": "2015-05-04T22:34:21", "url": "https://files.pythonhosted.org/packages/b0/41/002372a410d8cacff614f9020873b65be3ef3a01aa8f706a3e544fb90e46/openbts-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "cd04e56c3320679969cd8ceb764ae5f7", "sha256": "5cbcaabd24266963429ea21f68ab4814481278e61826d1ca55335c53c30db7c4" }, "downloads": -1, "filename": "openbts-0.0.15.tar.gz", "has_sig": false, "md5_digest": "cd04e56c3320679969cd8ceb764ae5f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8608, "upload_time": "2015-05-06T22:33:15", "url": "https://files.pythonhosted.org/packages/b2/c1/9f7a3095394abc93c979c0c75e42a659a99e1a2349565f680efbdff0dd10/openbts-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "d517bca321460f125ded111bd8323def", "sha256": "2651f81dc381b0770d51f5f2982f57bbf9ad3747e89551ae6541a1508ecce127" }, "downloads": -1, "filename": "openbts-0.0.16.tar.gz", "has_sig": false, "md5_digest": "d517bca321460f125ded111bd8323def", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8639, "upload_time": "2015-05-23T01:01:02", "url": "https://files.pythonhosted.org/packages/ec/32/caa051a814a48550c37ea0b96e614869b0161fed24c9b121d8021fb3e5b1/openbts-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "33bd7a81dd25ce6db3deb175b252a573", "sha256": "c45d0f8e73727584b8c85145bb8bfa0d60ae4784017d42c8a5944542631d7245" }, "downloads": -1, "filename": "openbts-0.0.17.tar.gz", "has_sig": false, "md5_digest": "33bd7a81dd25ce6db3deb175b252a573", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8857, "upload_time": "2015-06-03T23:05:20", "url": "https://files.pythonhosted.org/packages/5c/27/89ac69b30dd1e4a5e6b9b9fcf66d4fb32e0dcfc6ab2ac656bc3432e6144f/openbts-0.0.17.tar.gz" } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "68b1bb9defd61f60e7ac39bad6b10f6a", "sha256": "50a36ee2cd661f2cc48c2cc0b8c015b1071141d0df5bc0146379d3ad128a2b75" }, "downloads": -1, "filename": "openbts-0.0.18.tar.gz", "has_sig": false, "md5_digest": "68b1bb9defd61f60e7ac39bad6b10f6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8787, "upload_time": "2015-06-12T22:27:29", "url": "https://files.pythonhosted.org/packages/45/3d/b04c281b7351df057dc0f6e46cd368512e533c17161c56ee700b11ca9d1d/openbts-0.0.18.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "a2f6f171b984791f816206679345b40b", "sha256": "d7fcef8423213a460d824fddb080f9648f5283d8c314069cc645b8f40c1d7d8b" }, "downloads": -1, "filename": "openbts-0.0.2.tar.gz", "has_sig": false, "md5_digest": "a2f6f171b984791f816206679345b40b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4181, "upload_time": "2014-10-31T07:08:46", "url": "https://files.pythonhosted.org/packages/3f/bd/bd5a6f86ddb0a91a568547783eff82fed8f42c03aaa26119fdd5cb87c8de/openbts-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "aa3c6ee6638e1cf0af0a1c39554ff41f", "sha256": "a96d561749edb8ef12a3c2b3e2b884b5fddd294d3e628193b1f3cd1e53b7ad45" }, "downloads": -1, "filename": "openbts-0.0.3.tar.gz", "has_sig": false, "md5_digest": "aa3c6ee6638e1cf0af0a1c39554ff41f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5311, "upload_time": "2014-11-04T09:10:32", "url": "https://files.pythonhosted.org/packages/b2/de/d87e20b19261b00913071292b79f5175e513df2459edc0e25b91cd3a0421/openbts-0.0.3.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "5cb4a5dea63490def5bd7a338db940bf", "sha256": "890e441fdb651d97fc78da2fabe11947ed60dbe5d97e3a52f4b0c9908690cbcd" }, "downloads": -1, "filename": "openbts-0.0.5.tar.gz", "has_sig": false, "md5_digest": "5cb4a5dea63490def5bd7a338db940bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5974, "upload_time": "2015-03-10T18:06:17", "url": "https://files.pythonhosted.org/packages/90/c0/3815ae3880d21fdc9bd364948f33358926115f3b43c3a660eec5c6a76c96/openbts-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "8b5d001d2b7bd648515851272e851ba1", "sha256": "3fa5afbf3d26cb8f64ac5eb149eef01999ae0ce1ad7519eb493c444134c358ce" }, "downloads": -1, "filename": "openbts-0.0.6.tar.gz", "has_sig": false, "md5_digest": "8b5d001d2b7bd648515851272e851ba1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6489, "upload_time": "2015-03-10T18:22:19", "url": "https://files.pythonhosted.org/packages/82/21/f63aaf4a8b5afb61ac82380e47f98d6b56b5cfbee25827cbc3c5a579418a/openbts-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "14a3ccde4f1466db133a9d28fe33e274", "sha256": "2cc420780257d8abca061fc1119e51ad3a4e579656e93b9f25d9989eb59d6ac4" }, "downloads": -1, "filename": "openbts-0.0.7.tar.gz", "has_sig": false, "md5_digest": "14a3ccde4f1466db133a9d28fe33e274", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6691, "upload_time": "2015-03-17T04:11:46", "url": "https://files.pythonhosted.org/packages/67/67/064defbe903c208e302b53fa1f804fc86635a8e4416e0f74bcae47eaf068/openbts-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "bb022c704cab34c50190c202c75ba6c7", "sha256": "ba822e446d56c5242c99a2ae64ec397adba24cd851bf4764bc5ed183cad9ed49" }, "downloads": -1, "filename": "openbts-0.0.8.tar.gz", "has_sig": false, "md5_digest": "bb022c704cab34c50190c202c75ba6c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6792, "upload_time": "2015-03-17T04:53:13", "url": "https://files.pythonhosted.org/packages/3f/49/a9811c207015614cd610e2aff397f353a5979877870322b2b5e017252f37/openbts-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "b84e98df0cf5b2811ccf6a3385325d8b", "sha256": "124565ed5a3ddf92a0fa8d5a336def323dc4bcb1f8ecbee241a3777fe64457b0" }, "downloads": -1, "filename": "openbts-0.0.9.tar.gz", "has_sig": false, "md5_digest": "b84e98df0cf5b2811ccf6a3385325d8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6922, "upload_time": "2015-03-17T05:09:48", "url": "https://files.pythonhosted.org/packages/0a/02/aff7088cb95cd2b664ea426e19d46a20cf86f740b6dd17f18a719d178686/openbts-0.0.9.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "d1c43602d9a686e656e886051668db5a", "sha256": "8f1441a1a500c12eaaaec373a3042abda31641c5528b2a868f59ff649cc2a72c" }, "downloads": -1, "filename": "openbts-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d1c43602d9a686e656e886051668db5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8808, "upload_time": "2015-06-23T22:02:10", "url": "https://files.pythonhosted.org/packages/2a/45/def69419ff22abd767a7e880293fbd464721830bf1146fe3206876aed532/openbts-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "81a661251d2fd2721631d19d9f3df14b", "sha256": "b41404410b2f6b179f3592f4616e30cd0cdf9613f5c62a4ee64b44f4d9d93d82" }, "downloads": -1, "filename": "openbts-0.1.1.tar.gz", "has_sig": false, "md5_digest": "81a661251d2fd2721631d19d9f3df14b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9206, "upload_time": "2015-06-30T04:49:20", "url": "https://files.pythonhosted.org/packages/a3/09/c928376d4e23bab9de5fc2d5e18fac053af432d3243acf01f395c384a3bb/openbts-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "6c1a6012f5c386a50391125bcc37cc2a", "sha256": "d9e753a43a1a0763e5f6a4e4d5776fd342c82e3db187f1aec8e49cab17e05046" }, "downloads": -1, "filename": "openbts-0.1.2.tar.gz", "has_sig": false, "md5_digest": "6c1a6012f5c386a50391125bcc37cc2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9246, "upload_time": "2015-07-08T17:38:41", "url": "https://files.pythonhosted.org/packages/2f/7b/a2e199ad66039f7f7eedd09073392eb2228289912f0c27d8df4c560b1844/openbts-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "384694702b426df251a19139faf59f0b", "sha256": "80eabd3146865f53d4732b452972514818020c9fc58b78ed894539de57a7913b" }, "downloads": -1, "filename": "openbts-0.1.3.tar.gz", "has_sig": false, "md5_digest": "384694702b426df251a19139faf59f0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9589, "upload_time": "2015-07-08T22:32:05", "url": "https://files.pythonhosted.org/packages/af/7f/c4cd950406058467d765d1df6cd4588c3b28c24f8bc40ccee7f091ee54af/openbts-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "cb003a148ff640b2239dedea8c3163c2", "sha256": "996e3834748838dd0f24709bc8c3a48b2c23f1056771aec0feff42afd72d4e41" }, "downloads": -1, "filename": "openbts-0.1.4.tar.gz", "has_sig": false, "md5_digest": "cb003a148ff640b2239dedea8c3163c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9608, "upload_time": "2015-07-13T01:15:31", "url": "https://files.pythonhosted.org/packages/e4/6e/c55700e08fcb9226a6d01f3de6967c373fa4232046766620c9ab64e4b167/openbts-0.1.4.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "627c3d8e45acc0eb457b33f5cb64ded1", "sha256": "6089314b68dc08375e3b9fbcb2768cd096f46797de4fdd15c13f0ef45496e97a" }, "downloads": -1, "filename": "openbts-0.1.6.tar.gz", "has_sig": false, "md5_digest": "627c3d8e45acc0eb457b33f5cb64ded1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9749, "upload_time": "2015-07-22T01:10:36", "url": "https://files.pythonhosted.org/packages/c7/af/1a1e9f674f48375850e58e4072331e65498b0a3872b48053253250baadf5/openbts-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "7cb5b1d2443f357e2f01a376beaf96f4", "sha256": "25d8a21f0bc3d748b12012ce39f1dad0b21322356d6e67e16076f71e630028d2" }, "downloads": -1, "filename": "openbts-0.1.7.tar.gz", "has_sig": false, "md5_digest": "7cb5b1d2443f357e2f01a376beaf96f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9838, "upload_time": "2015-07-23T17:22:52", "url": "https://files.pythonhosted.org/packages/e3/4e/6bf66578d488cf970058f4afcfd3ed6be9e5ace86903d114daf72fb2a4cf/openbts-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "ff84190605d657e3dfab28c85ba3e6d0", "sha256": "49e14229a86326f1be3e69e010f0875aac471d6ad53b609ff22a7b97978d03ac" }, "downloads": -1, "filename": "openbts-0.1.8.tar.gz", "has_sig": false, "md5_digest": "ff84190605d657e3dfab28c85ba3e6d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9907, "upload_time": "2015-08-04T21:57:29", "url": "https://files.pythonhosted.org/packages/f2/99/eaf07af33d0d3df1df0054d285a6705fcc1ad5f0700ef8cad1c875e0ff70/openbts-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "5e7394d4b558790fed984c9d24ad071b", "sha256": "b0f63dcc25498f007f578748723d3505b9b1a0eb6e7a38a6d1652671803f553c" }, "downloads": -1, "filename": "openbts-0.1.9.tar.gz", "has_sig": false, "md5_digest": "5e7394d4b558790fed984c9d24ad071b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10116, "upload_time": "2015-08-05T01:35:39", "url": "https://files.pythonhosted.org/packages/f4/f0/23702c8f703406294901402ca467e7999b521b95c729c691ea92cbbba97c/openbts-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5e7394d4b558790fed984c9d24ad071b", "sha256": "b0f63dcc25498f007f578748723d3505b9b1a0eb6e7a38a6d1652671803f553c" }, "downloads": -1, "filename": "openbts-0.1.9.tar.gz", "has_sig": false, "md5_digest": "5e7394d4b558790fed984c9d24ad071b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10116, "upload_time": "2015-08-05T01:35:39", "url": "https://files.pythonhosted.org/packages/f4/f0/23702c8f703406294901402ca467e7999b521b95c729c691ea92cbbba97c/openbts-0.1.9.tar.gz" } ] }