{ "info": { "author": "Altertech Group", "author_email": "pr@altertech.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries" ], "description": "# pyaltt\n**this library is deprecated and no longer supported**\n\n**Use [atasker](https://pypi.org/project/atasker/) library instead**\n\nVarious tools for functions, looped and queued workers etc.\n\nLicense: Apache License 2.0\n\nFunctionCollection\n==================\n\nCollects and executes a pack of functions\n\nUsage example:\n \n```python\nfrom pyaltt import FunctionCollecton\n\nfc = FunctionCollecton()\n\n@fc\ndef f1():\n print('I am function 1')\n return 1\n\n@fc\ndef f2():\n print('I am function 2')\n return 2\n\nresult = fc.run() # or fc(), returns dict containing all function results\n```\n\nReal life example: define **dump** function collection and call *dump.run()* or\nsimply *dump()* to collect registered modules information.\n\nReal life example 2: define **shutdown** function collection and call\n*shutdown()* to stop threads of background workers.\n\nParameters:\n\n* **on_error** function which is called if any function throws an exeption\n (with e=Exception argument), or if **remove** method is called and function\n doesn't exist in collection.\n* **on_error_kwargs** additional arguments for *on_error*\n* **include_exceptions** if function fails, value in result dict is set to\n *None* by default. Specifying *include_exceptions=True* will set value to\n tuple (Exception, traceback)\n\n*run()* method actually just calls *return self.execute()*, so you can easily\noverride it. In addition to function result dict, *execute()* returns *True* if\nall functions were executed without an exceptions, *False* if not.\n\n```python\n\ndef my_run():\n print('Shutdown started')\n result, success = fc.execute()\n if success:\n print('Shutdown finished')\n else:\n print('Shutdown failed')\n return result\n\nfc.run = my_run\n```\n\nBackground workers\n==================\n\nLooped worker decorator\n-----------------------\n\nSimple background worker which executes method in loop, with an interval/delay\nif set.\n\nUsage example:\n\n```python\nfrom pyaltt import background_worker\n\n#transforms function into background worker which run in a loop\n@background_worker\ndef myworker(**kwargs):\n print('I\\'m a worker ' + kwargs.get('worker_name'))\n\nmyworker.start()\n# ................\nmyworker.stop()\n```\n\nParameters for @background_worker:\n\n* **name** alternative worker name (default is function name)\n* **daemon** set background worker as daemon (default is *True*)\n* **o** any object which worker can get with *kwargs.get('o')*\n* **on_error** function which is called if worker throws an exeption (with\n e=Exception argument)\n* **on_error_kwargs** additional arguments for *on_error*\n* **delay_before** delay before each worker function execution\n* **delay_after** (or simply **delay**) delay after each worker function\n execution\n* **interval** same as **delay_after** but it will try to keep execution\n interval exactly\n* **poll_delay** sleep precision (lower is better but uses CPU, default is 0.1\n sec)\n* **realtime** Use different algorythm for sleeping to be even more exact\n\nNote: if running in virtual machine, unset \"sync guest time with host\"\notherwise real time sleep may work unpredictable.\n\nPoll delay should be lower or equal to delays. If you set very short delays,\ndon't forget to decrease poll delay as well.\n\nReal time loop execution in this library is not 100% exact and can't be used\ne.g. in heavy industry. Real time loops require dedicated coding for the\nparticular task and for small delays can't be coded with Python at all or\nrequire special tricks/hardware.\n\nParameters for start():\n\n* **_daemon** override initial params and set worker as daemon or not\n* name, delay, interval and realtime parameters can be overriden in start (use\n kwargs with *_*: _name, _delay, _interval etc.)\n\n* All other parameters are passed to worker function (both args and kwargs)\n\nWorker gets all parameters used in *start()* plus additionally, **worker_name**\nand **o** in kwargs (can be overriden in *start()*).\n\nWorker can access *self* object via *kwargs['_worker']*.\n\nParamter *wait=False* can be used for *stop()* to send a signal to worker and\ncontinue (default is wait until worker finish)\n\nQueue worker decorator\n----------------------\n\nBackground worker which processes tasks in a queue.\n\nUsage example:\n\n```python\nfrom pyaltt import background_worker\n\n#transforms function into background worker which run on task in queue\n@background_worker(q=True)\ndef myworker(task, **kwargs):\n print('Got a task %s' % task)\n\nmyworker.start()\n# ................\nmyworker.put('task 1')\n# ................\nmyworker.stop()\n```\n\nParameters:\n\n* **name**, **daemon**, **o**, **on_error**, **on_error_kwargs** same as for\n looped worker\n* **queue_class** use alternative queue class (e.g. queue.PriorityQueue,\n default is *queue,Queue*).\n* **queue** use external queue\n\nIf *queue* or *queue_class* parameters are set, *q=True* is not required.\n\nTask can be any object (obvious). Worker has task always as first parameter.\n\nParameters for start() / stop() are the same as for looped worker.\n\nEvent worker decorator\n----------------------\n\nBackground worker which runs method on event.\n\n```python\nfrom pyaltt import background_worker\n\n#transforms function into background worker which runs on event\n@background_worker(e=True)\ndef myworker(**kwargs):\n print('event triggered')\n\nmyworker.start()\n# ................\nmyworker.trigger()\n# ................\nmyworker.stop()\n```\n\nParameters:\n\n* **name**, **daemon**, **o**, **on_error**, **on_error_kwargs** same as for\n looped worker\n* **event** use external *threading.Event()* object. If this parameter is set,\n *e=True* is not required.\n\nParameters for start() / stop() are the same as for looped worker.\n\n\nStopping loop from worker\n-------------------------\n\nThis can be done in 2 ways: calling *myworker.terminate()* from worker function\nor simply return *False*.\n\nWorking directly with classes\n-----------------------------\n\nIf you define background workers in your classes which may be inherited or have\nmultiple objects, Background worker classes should be used without a wrapper.\n\nClass names:\n\n* **pyaltt.BackgroundWorker**\n* **pyaltt.BackgroundQueueWorker**\n* **pyaltt.BackgroundEventWorker**\n\nYou can override **loop** method to have own function executed when worker\nstarts.\n\nLoop calls **run** function which's actually a worker function (the same\ndecorated/transformed in the examples above).\n\n(c) 2018-2019 Altertech Group, https://www.altertech.com/", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/alttch/pyaltt", "keywords": "", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "pyaltt", "package_url": "https://pypi.org/project/pyaltt/", "platform": "", "project_url": "https://pypi.org/project/pyaltt/", "project_urls": { "Homepage": "https://github.com/alttch/pyaltt" }, "release_url": "https://pypi.org/project/pyaltt/0.2.7/", "requires_dist": null, "requires_python": "", "summary": "Various tools for functions, looped and queued workers etc.", "version": "0.2.7" }, "last_serial": 5558267, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "f94df2b3a6012b031559bdedf17d2350", "sha256": "aac191ba6379b3efdaa3628086d19086628ccd01bcf7b57cf3e6e28fd8aca57c" }, "downloads": -1, "filename": "pyaltt-0.0.1.tar.gz", "has_sig": false, "md5_digest": "f94df2b3a6012b031559bdedf17d2350", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4271, "upload_time": "2019-03-02T00:15:05", "url": "https://files.pythonhosted.org/packages/01/21/695cb4f54369ab08e4866cac09bf7622d99c1a2db16eb6d57a7676aeea3d/pyaltt-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "3d315262fd05af49c24bc41aae31cecf", "sha256": "02685c76ec7899b6d83ce6a0122898b7535713650036edc4b5a2e5fe42402957" }, "downloads": -1, "filename": "pyaltt-0.0.2.tar.gz", "has_sig": false, "md5_digest": "3d315262fd05af49c24bc41aae31cecf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4264, "upload_time": "2019-03-02T00:48:09", "url": "https://files.pythonhosted.org/packages/4b/09/e606eccdad7a652632aee545a1218e28a5170cdea259203958d880f9d3e1/pyaltt-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "3ada1c5b2a3af3327fa8c474931c9cf9", "sha256": "47a297773e61abe33b2ab7726df00749dacd527af1387bb37ea7bc35106100eb" }, "downloads": -1, "filename": "pyaltt-0.0.3.tar.gz", "has_sig": false, "md5_digest": "3ada1c5b2a3af3327fa8c474931c9cf9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4579, "upload_time": "2019-03-02T01:44:12", "url": "https://files.pythonhosted.org/packages/7b/b5/dca22d4a287a731b8475db55b58a5c620018e9f331e53a02a39b1df6ff1f/pyaltt-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "52a0e6603fb774364afece2f8026d0f3", "sha256": "7f6f4d7184698d45709433b30760951b4a1c353bcc8661131e1d0fc6ec0c5726" }, "downloads": -1, "filename": "pyaltt-0.0.4.tar.gz", "has_sig": false, "md5_digest": "52a0e6603fb774364afece2f8026d0f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4582, "upload_time": "2019-03-02T01:46:22", "url": "https://files.pythonhosted.org/packages/9a/6a/fe9c18cee356136c0669ae02f41ba7a0126f6eab47aa33c5e80c8e321915/pyaltt-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "8a8de9c53b24e4f6b1c907b62e8eee6b", "sha256": "9dc4c59935963d8621cc4cb18d8f638825774e4211f054c210d1a142753ae1a4" }, "downloads": -1, "filename": "pyaltt-0.0.5.tar.gz", "has_sig": false, "md5_digest": "8a8de9c53b24e4f6b1c907b62e8eee6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4593, "upload_time": "2019-03-02T02:41:40", "url": "https://files.pythonhosted.org/packages/62/66/e4005cc0ccb79aa9ec94d69181ec7d74a483538be7a925eb2211a34aa4e1/pyaltt-0.0.5.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "99ea737fe91afb87927df058ae3b3ea1", "sha256": "c9968781fae50d278e9144b4d0190219683fad2d375e375241bffd9080a3180b" }, "downloads": -1, "filename": "pyaltt-0.0.7.tar.gz", "has_sig": false, "md5_digest": "99ea737fe91afb87927df058ae3b3ea1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4589, "upload_time": "2019-03-02T02:43:06", "url": "https://files.pythonhosted.org/packages/3a/45/270080c7365fa67a1862325baded5bd0007f3f9aca1f95e5fd890590d658/pyaltt-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "a508189052a555c2c51da32e070bd576", "sha256": "d46d0bbd483f23a2cb237df86043b68f4d8bf1b0a53dd7acd27f094ad0c307bc" }, "downloads": -1, "filename": "pyaltt-0.0.8.tar.gz", "has_sig": false, "md5_digest": "a508189052a555c2c51da32e070bd576", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4870, "upload_time": "2019-03-02T03:11:05", "url": "https://files.pythonhosted.org/packages/5b/39/0de7fa8990de31399e5d38d820b51b744477835a2a4f62866e6c28f19f96/pyaltt-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "947b0e3d64d57d9b5a2eaad9bd2d0089", "sha256": "7b6976642b8b23f317ae2873f8ecb08b06f45048416f4d74a1a1f949197386fa" }, "downloads": -1, "filename": "pyaltt-0.0.9.tar.gz", "has_sig": false, "md5_digest": "947b0e3d64d57d9b5a2eaad9bd2d0089", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4884, "upload_time": "2019-03-02T03:13:43", "url": "https://files.pythonhosted.org/packages/40/d1/86ec9b2cecf58e635dadbfb74bbc57f9bc84bc8fccadf5027fee8cd6cc29/pyaltt-0.0.9.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "00da4cd9337363fcb2fd223f3f992557", "sha256": "a334d4e024f73fd25108e8129fef6ba173786c34f2a997e732f82c24085fb28b" }, "downloads": -1, "filename": "pyaltt-0.1.0.tar.gz", "has_sig": false, "md5_digest": "00da4cd9337363fcb2fd223f3f992557", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4893, "upload_time": "2019-03-02T03:20:23", "url": "https://files.pythonhosted.org/packages/d8/2f/ef1e698da377603ac7611da500c122eeb1b69795b2d5ce135d776b8db7ef/pyaltt-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "a616911743bc65750db0a9d8bca254e7", "sha256": "be9d9d170268a37ad47f50d691772afc32f4ef7cafba620b123956eaa4ff132b" }, "downloads": -1, "filename": "pyaltt-0.1.1.tar.gz", "has_sig": false, "md5_digest": "a616911743bc65750db0a9d8bca254e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4984, "upload_time": "2019-03-02T17:34:47", "url": "https://files.pythonhosted.org/packages/58/9d/fbd3b714d81f8e72834f65a8bcbf6f6eb222120afefb12006cf65e7f808f/pyaltt-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "74631a19effeffcbce5ee91dc2142e3a", "sha256": "2e8a4bd44082a5dbec56cd40222980c5c1d3115a5b1891bd5309ecb57ea8d7a5" }, "downloads": -1, "filename": "pyaltt-0.1.10.tar.gz", "has_sig": false, "md5_digest": "74631a19effeffcbce5ee91dc2142e3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5676, "upload_time": "2019-03-04T16:03:32", "url": "https://files.pythonhosted.org/packages/18/d9/772997d2578e4e656e609b70ac8e31f86ee62f7ebc7d5c207b334653a0a0/pyaltt-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "56c8edf10a4a210084042bc8868871eb", "sha256": "abcddb36de486e69bc5162d7c2b4192cbb1b63a05fe115d70b1b548243e21aec" }, "downloads": -1, "filename": "pyaltt-0.1.11.tar.gz", "has_sig": false, "md5_digest": "56c8edf10a4a210084042bc8868871eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5809, "upload_time": "2019-03-04T16:24:15", "url": "https://files.pythonhosted.org/packages/61/8e/5f8a12c2f6a2b28c702f78e14176da3fc7bbc1b147c32648b12a761db918/pyaltt-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "6c25c88fc16f3e8a95ce6f61b9e50567", "sha256": "5f5160de08a71b410dbdfe2f3e180ca593c1ddeb6e3fef23e5361d6ca254e7c4" }, "downloads": -1, "filename": "pyaltt-0.1.12.tar.gz", "has_sig": false, "md5_digest": "6c25c88fc16f3e8a95ce6f61b9e50567", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5825, "upload_time": "2019-03-04T16:42:48", "url": "https://files.pythonhosted.org/packages/89/d3/a9a2fbdf699ab4e45edb3b148beedae51cfd0bdb20828ddac8aa89c6bfcb/pyaltt-0.1.12.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "abd330639a511f63804d0d05ecdc08e1", "sha256": "d7c044b13cb67954919e68f1a024d13383dd8dfa252d63160661d064e7b800ae" }, "downloads": -1, "filename": "pyaltt-0.1.2.tar.gz", "has_sig": false, "md5_digest": "abd330639a511f63804d0d05ecdc08e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4905, "upload_time": "2019-03-02T17:38:21", "url": "https://files.pythonhosted.org/packages/48/b2/695889e025731b54f538c1415101d52bcf645e2cee4b8adb2b4018fa3914/pyaltt-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "58848d91374a88913fca04d4e06b0adb", "sha256": "bd87cc5dedf2e376ce92cd414b2429af6891fb0ff1ebd7d448d0636e0b941cd3" }, "downloads": -1, "filename": "pyaltt-0.1.3.tar.gz", "has_sig": false, "md5_digest": "58848d91374a88913fca04d4e06b0adb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5165, "upload_time": "2019-03-02T18:02:42", "url": "https://files.pythonhosted.org/packages/19/82/62638b45c9edbadebca7de05df1f0d2f82545b84f7c3725ac77ca978953f/pyaltt-0.1.3.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "dc18af89bb320acc7e8177aaeb9ec9d2", "sha256": "f3a157bba18f4e1c7c4e23ddbbb6af8070f3c10170ed8473a6d1ba6cdfba6580" }, "downloads": -1, "filename": "pyaltt-0.1.5.tar.gz", "has_sig": false, "md5_digest": "dc18af89bb320acc7e8177aaeb9ec9d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5207, "upload_time": "2019-03-02T22:14:28", "url": "https://files.pythonhosted.org/packages/f9/ab/fcaf796bd88ce4b47867fb2849b857b4a7ce6179dbf95f62bb7c98cb735a/pyaltt-0.1.5.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "891682c512de2bae8a1055a42973e159", "sha256": "fd2ca84417cf5b22d513e613f41ac251b0a3806833cacc7e2a1118c8d7346b85" }, "downloads": -1, "filename": "pyaltt-0.1.7.tar.gz", "has_sig": false, "md5_digest": "891682c512de2bae8a1055a42973e159", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5475, "upload_time": "2019-03-02T23:34:06", "url": "https://files.pythonhosted.org/packages/f6/50/28e0bd1eec30c0a0e2454436ca5e46579b2c890f37f3c5696fd31360bb1d/pyaltt-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "20bb9f27d5b0504dfcea30a1a267b194", "sha256": "f8ae5523c995f117e12127c757629540e28d4f54c01b4d1e5fa2daadee5cf6cd" }, "downloads": -1, "filename": "pyaltt-0.1.8.tar.gz", "has_sig": false, "md5_digest": "20bb9f27d5b0504dfcea30a1a267b194", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5510, "upload_time": "2019-03-02T23:41:10", "url": "https://files.pythonhosted.org/packages/eb/7d/9e8ec78d6bbb801568e2c9cffe60bf42e3d407b57b931c75bae0cf612889/pyaltt-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "2a6905498b962c9cd1ed5b6233be080d", "sha256": "e85b017267d496537d9b3ace46163e93f0cdc7c76f42254dda0607e1690f3527" }, "downloads": -1, "filename": "pyaltt-0.1.9.tar.gz", "has_sig": false, "md5_digest": "2a6905498b962c9cd1ed5b6233be080d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5465, "upload_time": "2019-03-03T00:00:14", "url": "https://files.pythonhosted.org/packages/29/91/82c84357e62f8b92dfa5da087f4a9ad7f34cbc08bd8496781fe7a09fba3d/pyaltt-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "0578d10d37cd4444f908d115f160be16", "sha256": "ce25473303dbf7c00473a02d8dd0bebdbf6b98627aac1d411a4b3e3ff060789e" }, "downloads": -1, "filename": "pyaltt-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0578d10d37cd4444f908d115f160be16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5841, "upload_time": "2019-03-18T23:36:51", "url": "https://files.pythonhosted.org/packages/3b/0e/dd5e66adc095e989bbc11c8e7d34da0f1f41b931e60a12179e0c4333a66d/pyaltt-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "e18b234e2a2d09e7974dd7d59ea09051", "sha256": "6ec6d345831e086c1ffa81492a413d7b4cb46142b7865605a38b2c762d23dfba" }, "downloads": -1, "filename": "pyaltt-0.2.1.tar.gz", "has_sig": false, "md5_digest": "e18b234e2a2d09e7974dd7d59ea09051", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5857, "upload_time": "2019-03-24T00:48:44", "url": "https://files.pythonhosted.org/packages/8a/2c/10ec841096d0d5323e178fa8d0156de4c0bbdd951605e571e1dbb695e389/pyaltt-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "aacb49e0a2956fca08c1ca26ff4cbbb9", "sha256": "da3db482d40d2456b5d944d0aacb7713ac009656fec5628cced69e0646ba7d34" }, "downloads": -1, "filename": "pyaltt-0.2.2.tar.gz", "has_sig": false, "md5_digest": "aacb49e0a2956fca08c1ca26ff4cbbb9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5897, "upload_time": "2019-07-09T23:48:12", "url": "https://files.pythonhosted.org/packages/7f/fc/506ebe5d9489b7a9d163ee3a342280652379edc895fe91676fc86d210b3b/pyaltt-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "cc1d0f36d357f6efbc614250d464ec9b", "sha256": "d1978792bc3bdc91ff361a76508341ea3ef1e0262df317ceea2aecb6100afcc2" }, "downloads": -1, "filename": "pyaltt-0.2.3.tar.gz", "has_sig": false, "md5_digest": "cc1d0f36d357f6efbc614250d464ec9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5891, "upload_time": "2019-07-10T00:46:29", "url": "https://files.pythonhosted.org/packages/96/aa/46f7cd46c67a8d38c88ff55e0574d140c2f58d0f788222b76ac430a07a00/pyaltt-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "c9f716a3aaf14d84696eff5cbb82bb65", "sha256": "c7e90303bb35a930a1a21b7e2f65a7adaad639e9d17c6b8e8c5d8ae89f777ca5" }, "downloads": -1, "filename": "pyaltt-0.2.4.tar.gz", "has_sig": false, "md5_digest": "c9f716a3aaf14d84696eff5cbb82bb65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5891, "upload_time": "2019-07-10T00:55:02", "url": "https://files.pythonhosted.org/packages/fc/c3/558ab78036c7e6a615001ad6640b4b7d14e0e1922b1e0a8cf415a0d06322/pyaltt-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "8b57fbded02e0f2a413aca54d6f89e91", "sha256": "af8e3e6e66acb55edd64e5fbc6fec95abee41b94147cd501dfffd7d4062d9592" }, "downloads": -1, "filename": "pyaltt-0.2.5.tar.gz", "has_sig": false, "md5_digest": "8b57fbded02e0f2a413aca54d6f89e91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7560, "upload_time": "2019-07-11T03:54:51", "url": "https://files.pythonhosted.org/packages/b4/60/bf118ee110baf464629a380c61bc6f33c432b928c692bd43455e3e26f060/pyaltt-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "f5ad712f3a09bb79383cff800338f506", "sha256": "d24b35f5f9a1c17f1461fafc6a017a59cc1ca557b2ab698dc090379edb04a2ae" }, "downloads": -1, "filename": "pyaltt-0.2.6.tar.gz", "has_sig": false, "md5_digest": "f5ad712f3a09bb79383cff800338f506", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7568, "upload_time": "2019-07-11T03:57:26", "url": "https://files.pythonhosted.org/packages/61/ac/27ea270a19142308a00f4d30c423a9eb75fd59b9c4cbbf05cd453581a401/pyaltt-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "4082ca4053c20fe645d7f2c48f599db1", "sha256": "a8f0c3fa531c35cd4f20c891c94978dbc0e39677e628b2b932d828ca055d7c5f" }, "downloads": -1, "filename": "pyaltt-0.2.7.tar.gz", "has_sig": false, "md5_digest": "4082ca4053c20fe645d7f2c48f599db1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7687, "upload_time": "2019-07-19T20:18:32", "url": "https://files.pythonhosted.org/packages/05/9c/5d701ba3b8180d53b5c48a10ba3358b6c871afffc936b9f5d97bb2ffef51/pyaltt-0.2.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4082ca4053c20fe645d7f2c48f599db1", "sha256": "a8f0c3fa531c35cd4f20c891c94978dbc0e39677e628b2b932d828ca055d7c5f" }, "downloads": -1, "filename": "pyaltt-0.2.7.tar.gz", "has_sig": false, "md5_digest": "4082ca4053c20fe645d7f2c48f599db1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7687, "upload_time": "2019-07-19T20:18:32", "url": "https://files.pythonhosted.org/packages/05/9c/5d701ba3b8180d53b5c48a10ba3358b6c871afffc936b9f5d97bb2ffef51/pyaltt-0.2.7.tar.gz" } ] }