{ "info": { "author": "Matt Ball", "author_email": "matt@endaga.com", "bugtrack_url": null, "classifiers": [], "description": "testing phone networks with GSM modules\n\n\n### requirements\n* one or more eno hardware nodes (Beaglebone Black + a Fona module)\n* Python 2.7\n\n\n### installation\n\n```shell\n$ pip install eno\n```\n\n\n### usage\nA cluster of eno hardware nodes are setup\nwith network connectivity to a testing machine.\nThe testing machine uses `eno.nodes.Node` to control the connected nodes\nand to read data from them.\nThe nodes themselves run the `eno.server.app`.\nOther clients (like the testing machine) connect to this server\nto give instructions to the hardware and to read data back.\nThe hardware uses [python-gsmmodem](https://github.com/faucamp/python-gsmmodem)\nto communicate with the onboard GSM modem.\n\nThe testing machine should have an `~/.enorc` describing the test cluster:\n\n```yaml\n- name: node A\n ip_address: 192.168.1.102\n sim: endaga\n- name: node B\n ip_address: 192.168.1.105\n sim: endaga\n- name: node C\n ip_address: 192.168.1.107\n sim: ting\n phone_number: 19195551234\n```\n\nSee additional examples in `server.py` and `sample_test.py`.\n\n\n### testing concurrent calls\nBy default, when making a call, the test server\nwill make the modem hang up a few seconds after the call connects.\nI experimented with a `/hangup` endpoint but that complicates things --\nwe would need signals and some WSGI runner\nin order to have more than one server process.\nSo instead you can specify `hangup_after` as a request param,\nthis will hangup the call after the specified number of seconds.\n\n\n### license\nMIT\n\n\n### releases\n* 0.0.17 - adjusts return values in `server.call`\n* 0.0.16 - fixes modem definition\n* 0.0.15 - adds call functionality\n* 0.0.14 - adds more request timeouts and `Node.get_info`\n* 0.0.13 - adjusts handling of `Node.wait_for_activity`\n* 0.0.12 - adds protocol in `Node.server_address`\n* 0.0.11 - fixes port default\n* 0.0.10 - allows tilde expansion when searching for enorc config file\n* 0.0.9 - adds `Node.wait_for_activity` for sms\n* 0.0.8 - adjusts handling of sms log in Node class\n* 0.0.7 - changes sms log deletion method\n* 0.0.6 - improves error handling and modem connection management\n* 0.0.5 - adjusts package structure\n* 0.0.4 - adds missing requests requirement\n* 0.0.3 - adjusts server script filename\n* 0.0.2 - adds SMS handling capabilities\n* 0.0.1 - barebones setup for pypi\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 'eno-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/eno-python/tarball/0.0.17", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/endaga/eno-python", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "eno", "package_url": "https://pypi.org/project/eno/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/eno/", "project_urls": { "Download": "https://github.com/endaga/eno-python/tarball/0.0.17", "Homepage": "http://github.com/endaga/eno-python" }, "release_url": "https://pypi.org/project/eno/0.0.17/", "requires_dist": null, "requires_python": null, "summary": "eno test client", "version": "0.0.17" }, "last_serial": 1744537, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "ac6b7b0eb543b14d424374ffd7b491e5", "sha256": "b867443c1d7abf289b5beda8b0b01c4941bb9ff26bc91a0102dab6bd9f1c3711" }, "downloads": -1, "filename": "eno-0.0.1.tar.gz", "has_sig": false, "md5_digest": "ac6b7b0eb543b14d424374ffd7b491e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3167, "upload_time": "2015-08-25T19:24:56", "url": "https://files.pythonhosted.org/packages/e8/8f/dffae1d0832fb2ccf29cf006483f995bf848377a53e8b9dc71f37d971f38/eno-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "ea05ece9c01191a5d92df2abde37b8fc", "sha256": "bc27c21b324238c897cca527e46179ce679c3ca57bda4bf75813bd7e6b740d36" }, "downloads": -1, "filename": "eno-0.0.10.tar.gz", "has_sig": false, "md5_digest": "ea05ece9c01191a5d92df2abde37b8fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5250, "upload_time": "2015-08-27T19:23:52", "url": "https://files.pythonhosted.org/packages/e5/39/02ba62779c6d65464115218d0b3427273f67ed2bfdd8bc7050b6a7773f6d/eno-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "41c838c6f0c2fe16a29d7ab79d7083b3", "sha256": "203a33105345dca43b820a5b3c498df450b69f033e483cc62f1160805fae6452" }, "downloads": -1, "filename": "eno-0.0.11.tar.gz", "has_sig": false, "md5_digest": "41c838c6f0c2fe16a29d7ab79d7083b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5275, "upload_time": "2015-08-27T19:38:57", "url": "https://files.pythonhosted.org/packages/ea/3f/8b4a2677115212d72169bed1b1c231b2d1ab3a1ebfa9453355805672bcdc/eno-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "781e55a51355d2935b2f4237aa9bb5a0", "sha256": "7ae53af0ce85784f166e916c3028e9358081d4052eca36d0baa71e8eb784f0fd" }, "downloads": -1, "filename": "eno-0.0.12.tar.gz", "has_sig": false, "md5_digest": "781e55a51355d2935b2f4237aa9bb5a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5294, "upload_time": "2015-08-27T19:42:16", "url": "https://files.pythonhosted.org/packages/e6/fb/3a03bb2e384059fc9dd6fa96d453cced3967f903fc4b0be42559b487cb64/eno-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "f7accf0cfd3f2ab19aa2d18c9ab49770", "sha256": "bffd49efc98252da42d2f8185cb78a0536ef31d8d7c498686df69d1ce7ea265b" }, "downloads": -1, "filename": "eno-0.0.13.tar.gz", "has_sig": false, "md5_digest": "f7accf0cfd3f2ab19aa2d18c9ab49770", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5352, "upload_time": "2015-08-28T18:43:18", "url": "https://files.pythonhosted.org/packages/8c/13/f0abc65e480c61c1b324234aabc5028a1d5bb6a782e94549ef492282b9e9/eno-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "083fa96aa4a2e273a2a70b2eafa0b73c", "sha256": "dd904f8b00cf7ca34a3e879c34d3accf01af1958b6eb1b02d80fd67e69da1276" }, "downloads": -1, "filename": "eno-0.0.14.tar.gz", "has_sig": false, "md5_digest": "083fa96aa4a2e273a2a70b2eafa0b73c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5444, "upload_time": "2015-08-28T18:57:27", "url": "https://files.pythonhosted.org/packages/fc/12/b64830f966a35508d427c653b43ded55c91ca2a25359bb836330238598c6/eno-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "5a2fd506df28d2830fec960ace5c6f3d", "sha256": "c71acac3db97f0e98fa16fb20d744af84c195206f551333381e9a12556bf71cc" }, "downloads": -1, "filename": "eno-0.0.15.tar.gz", "has_sig": false, "md5_digest": "5a2fd506df28d2830fec960ace5c6f3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5856, "upload_time": "2015-09-03T19:36:36", "url": "https://files.pythonhosted.org/packages/d1/4b/b2aefb65bd759dfdc76529850f597e1eaed7c4a03f2702ad5d1e736992c6/eno-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "476d4b3adf39019dfdd9b4899959daa0", "sha256": "83029b43217d4aee6ed760027605397dcee3d9d2d7561cded0317de95fb78877" }, "downloads": -1, "filename": "eno-0.0.16.tar.gz", "has_sig": false, "md5_digest": "476d4b3adf39019dfdd9b4899959daa0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5825, "upload_time": "2015-09-03T21:27:10", "url": "https://files.pythonhosted.org/packages/d9/35/b72b768a7793732d7fa91b085e4ff0b45822e63626f7cca9751b23a2ae6e/eno-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "4e3d9e2d3aef350336f500e6919f309a", "sha256": "334ec1151c23dd877d7ed8c8914b425be92f975d8fbd85b14583c4ecffc94c6f" }, "downloads": -1, "filename": "eno-0.0.17.tar.gz", "has_sig": false, "md5_digest": "4e3d9e2d3aef350336f500e6919f309a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5919, "upload_time": "2015-09-03T23:59:21", "url": "https://files.pythonhosted.org/packages/d6/81/d9aea049a656eb907fe6c223fa71008a0e32961b83d7f5973baacd15565d/eno-0.0.17.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "fdc4993d9540ec2d48cea54a6072890e", "sha256": "b6d64c9155dd69fa8662b70c1c1bf7c112231c057d57a1312d5299e6b2d3d446" }, "downloads": -1, "filename": "eno-0.0.2.tar.gz", "has_sig": false, "md5_digest": "fdc4993d9540ec2d48cea54a6072890e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4553, "upload_time": "2015-08-26T00:19:21", "url": "https://files.pythonhosted.org/packages/74/84/8e895b003356697321d2c62cca62283b559e8bc55437297e08dfeaf8103e/eno-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "891b543ac6b5e8d23dbbeac99c418568", "sha256": "7f7c2633de99735af85df6050c5510834277be2195f8dde782278d66c6fd69fd" }, "downloads": -1, "filename": "eno-0.0.3.tar.gz", "has_sig": false, "md5_digest": "891b543ac6b5e8d23dbbeac99c418568", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4574, "upload_time": "2015-08-26T00:22:40", "url": "https://files.pythonhosted.org/packages/87/b4/35501899fad05d2ba48efc68b0a92af008c41c2d2da30051db2fe724612d/eno-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "b28d841de4884da536d2e1af8a1cad4f", "sha256": "22dee8afe6ab17e219b1a51ed4f51ed021c8a687f0483f7882827f4929ced4ea" }, "downloads": -1, "filename": "eno-0.0.4.tar.gz", "has_sig": false, "md5_digest": "b28d841de4884da536d2e1af8a1cad4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4600, "upload_time": "2015-08-26T00:27:53", "url": "https://files.pythonhosted.org/packages/81/ba/70b5293fd69af05e8bb3a71091249e074eb0351b924f4fb2da2b223cfd3d/eno-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "4851e3522138bb616706a633889292a9", "sha256": "19cd7270976166295c342ef450f2ca1ef4799b1abd8859c1f19ef0f8c192d907" }, "downloads": -1, "filename": "eno-0.0.5.tar.gz", "has_sig": false, "md5_digest": "4851e3522138bb616706a633889292a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4611, "upload_time": "2015-08-26T23:05:27", "url": "https://files.pythonhosted.org/packages/87/2e/f37c4a28ca9ac73001af3bc9aba8bc2e5b983429683bdf173c52bc8a9413/eno-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "98c373fb05adf0f39d713daec96f753e", "sha256": "ed8839f124f9b1f6c133803b7096e556fd56c280b81187c122cc034f836afdec" }, "downloads": -1, "filename": "eno-0.0.6.tar.gz", "has_sig": false, "md5_digest": "98c373fb05adf0f39d713daec96f753e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4730, "upload_time": "2015-08-26T23:31:20", "url": "https://files.pythonhosted.org/packages/7c/18/145a387c033cd31d1fa7c6eaa45a758688f5cf53f78adec8e274d2a6fd06/eno-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "0965b980f68c1086df220c33680b022a", "sha256": "1e88e2b8692f5e99b4d1c2a3868e1768fc88e134779514c7c98c72cd0e237515" }, "downloads": -1, "filename": "eno-0.0.7.tar.gz", "has_sig": false, "md5_digest": "0965b980f68c1086df220c33680b022a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4881, "upload_time": "2015-08-27T17:29:39", "url": "https://files.pythonhosted.org/packages/3f/2f/8afa889fea052f449faef0968c6da67fb6f1eb68db3a8cb4299f284b29b1/eno-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "5a5ef0993816ba105c3dd72e887a3bf1", "sha256": "2a57ebf3d9c96c9dc5ced8ae64e3a27fddb6339014ebda3b2a1a3fc30bdaa251" }, "downloads": -1, "filename": "eno-0.0.8.tar.gz", "has_sig": false, "md5_digest": "5a5ef0993816ba105c3dd72e887a3bf1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4974, "upload_time": "2015-08-27T19:03:55", "url": "https://files.pythonhosted.org/packages/9a/90/3a23220a1e40fff6837c016d09b431741a50e2fa204c97a81c73106da3dc/eno-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "be1a1f9dbb850a8a400ac5f1f8976ba6", "sha256": "8e7f564d5f23c31f25209a5d25c538435e96169114c0ac35a274642d0bdcb2df" }, "downloads": -1, "filename": "eno-0.0.9.tar.gz", "has_sig": false, "md5_digest": "be1a1f9dbb850a8a400ac5f1f8976ba6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5138, "upload_time": "2015-08-27T19:16:28", "url": "https://files.pythonhosted.org/packages/17/06/9bf0b53f2deb1b916692e7b1078f2ce60aaadb18a448924f5989434f60bf/eno-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4e3d9e2d3aef350336f500e6919f309a", "sha256": "334ec1151c23dd877d7ed8c8914b425be92f975d8fbd85b14583c4ecffc94c6f" }, "downloads": -1, "filename": "eno-0.0.17.tar.gz", "has_sig": false, "md5_digest": "4e3d9e2d3aef350336f500e6919f309a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5919, "upload_time": "2015-09-03T23:59:21", "url": "https://files.pythonhosted.org/packages/d6/81/d9aea049a656eb907fe6c223fa71008a0e32961b83d7f5973baacd15565d/eno-0.0.17.tar.gz" } ] }