{ "info": { "author": "Thimo Visser", "author_email": "thimo.visser@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Utilities" ], "description": ".. image:: https://img.shields.io/pypi/pyversions/pytsa.svg\n :target: https://github.com/thimovss/pytsa/\n.. image:: http://img.shields.io/badge/license-MIT-green.svg\n :target: https://github.com/thimovss/pytsa/blob/master/LICENSE\n.. image:: http://img.shields.io/travis/thimovss/pytsa.svg\n :target: https://travis-ci.org/thimovss/pytsa\n.. image:: https://coveralls.io/repos/github/thimovss/pytsa/badge.svg\n :target: https://coveralls.io/github/thimovss/pytsa\n\nPYThon StrictArguments\n======================\n\nSimple, human-readable, fully tested, signature-preserving Python decorators to ensure your method abides to its contract.\nGet rid of testing all those edge cases for passed arguments, by making the method's contract more strict!\n\nInstall\n-------\n\n| ``$ pip install pytsa``\n| `https://pypi.org/project/pytsa `__\n\nHow to use\n----------\n\n| Pytsa provides decorators for most python types.\n| These decorators allow you to verify that the arguments passed to your\n method are of a certain type and/or follow the rules you specify.\n| The decorator name specifies the type you expect, for example sa_int\n if you expect an integer.\n| The first argument of the decorator is the name of the parameter this\n decorator applies to.\n| The arguments after the first one specify the rules this parameter has\n to follow, if any.\n| ``@sa_TYPE(PARAM_NAME, RULE1=RULE1_VAL, RULE2=RULE2_VAL)``\n| For example,\n\n::\n\n @sa_string('a', starts_with='a', ends_with='c', is_lower=True, contains='1')\n def foo(a):\n ...\n\n::\n\n @sa_path('b', is_dir=True, is_abs=True)\n def bar(b):\n ...\n\n::\n\n @sa_list('c', len=8, type=float)\n def foo(a, b, c):\n ...\n\n::\n\n @sa_int('d', gt=-4, lte=4, non_zero=True, mod=2)\n def bar(d):\n ...\n\nDemo\n----\n\nWant a demo of other rules? check out the test directory, it has an\nexample for every rule there is!\n\n::\n\n from pytsa import sa_int\n\n @sa_int('val', gt=0, lte=10)\n def assign_score(val)\n \"\"assign an integer score higher than 0, up to 10\"\"\n print('set score to {val}')\n score = val\n\n assign_score(5)\n > set score to 5\n\n assign_score(0)\n > Error: int argument val with value 0 was not greater than 0\n\n assign_score('abc')\n > Error: int argument val with value 'abc' was of type string, not of type 'int'\n\n assign_score(None)\n > Error: int argument val was None\n\n assign_score(35)\n > Error: int argument val with value 35 was not less than, or equal to 10\n\nRules\n-----\n\nFor a more a more detailed description on the behaviour of a rule, make\nsure to check out its test cases! Not sure how @sa_list's len handles\nNone type? see `'test/test_sa_list.py'\ntest_rule_len() `__\n\nAll rules\n~~~~~~~~~\n\n====================== =======================================================================================================================================================================================================================================\nRule Description\n====================== =======================================================================================================================================================================================================================================\n**allow_none**\\ (bool) By default, no rule allows a value of None. This can be circumvented with the rule **``allow_none``**\\ (bool), which is available for every rule. **important!**: If the value provided is None, all other checks will not be executed!\n====================== =======================================================================================================================================================================================================================================\n\nString ``@sa_string``\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n========================= =====================================================================================================================\nRule Description\n========================= =====================================================================================================================\n**not_empty**\\ (bool) ensure the argument is not an empty string.\n**not_blank**\\ (bool) ensure the argument is not an empty string, or contains only whitespace characters. According to ``string.isspace()``\n**ends_with**\\ (string) ensure the argument ends with the rule value. According to ``string.endswith()``\n**starts_with**\\ (string) ensure the argument starts with the rule value. According to ``string.startswith()``\n**contains**\\ (string) ensure the argument contains the rule value. According to ``string.find()``\n**is_lower**\\ (bool) ensure all non-whitespace characters in the argument are lowercase.\n**is_upper**\\ (bool) ensure all non-whitespace characters in the argument are uppercase.\n**regex**\\ (string) ensure the argument matches the regex. According to ``re.search()``\n========================= =====================================================================================================================\n\nNumber (Float, Integer) ``@sa_number`` ``@sa_float`` ``@sa_int``:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n| The rule @sa_number accepts both integer and float values.\n| The rules @sa_number, @sa_int, and @sa_float share the same rule set.\n| The rules @sa_int and @sa_float only accept arguments of their\n respective types, but accept both floats and integers as values to\n their rules.\n\n==================== ================================================================\nRule Description\n==================== ================================================================\n**non_zero**\\ (bool) ensure the argument does not equal 0 or 0.0.\n**gt**\\ (number) ensure the argument is greater than the rule value.\n**gte**\\ (number) ensure the argument is greater than, or equal to the rule value.\n**lt**\\ (number) ensure the argument is lesser than the rule value.\n**lte**\\ (number) ensure the argument is lesser than, or equal to the rule value.\n**mod**\\ (number) ensure the argument is a multiple of the rule value.\n==================== ================================================================\n\nBoolean ``@sa_bool``:\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nthere are no rules for bool available.\n\nList ``@sa_list``:\n~~~~~~~~~~~~~~~~~~~~~~\n\n**! Warning: some tests such as type will brute-force the whole list\nevery time the method is called, this could cause performance issues.**\n\n===================== ====================================================================================================================================================================================\nRule Description\n===================== ====================================================================================================================================================================================\n**type**\\ (type) ensure all the values in the list are of the given type. (*Tip: make sure not to call as ``type=type(int)``, as this will check if everything is of type type, instead of type int*)\n**len**\\ (int) ensure the argument has the given length. None is counted in the length.\n**not_empty**\\ (bool) ensure the argument is not an empty list\n===================== ====================================================================================================================================================================================\n\nPath ``@sa_path``:\n~~~~~~~~~~~~~~~~~~~~~~\n\n============================== ========================================================================================\nRule Description\n============================== ========================================================================================\n**exists**\\ (bool) ensure that the argument is an existing path. According to ``os.path.exists()``\n**is_dir**\\ (bool) ensure the argument is an existing path to a directory. According to ``os.path.isdir()``\n**is_file**\\ (bool) ensure the argument is an existing path to a file. According to ``os.path.isfile()``\n**is_abs**\\ (bool) ensure the argument is an absolute path. According to ``os.path.isabs()``\n**can_owner_read**\\ (bool) ensure the owner has read permission.\n**can_group_read**\\ (bool) ensure the group has read permission.\n**can_others_read**\\ (bool) ensure the others has read permission.\n**can_owner_write**\\ (bool) ensure the owner has write permission.\n**can_group_write**\\ (bool) ensure the group has write permission.\n**can_others_write**\\ (bool) ensure the others has write permission.\n**can_owner_execute**\\ (bool) ensure the owner has execute permission.\n**can_group_execute**\\ (bool) ensure the group has execute permission.\n**can_others_execute**\\ (bool) ensure the others has execute permission.\n============================== ========================================================================================\n\nProduction\n==========\n\n| You might want to disable the processing of Pytsa decorators for your\n production deployments cause of performance reasons.\n| Pytsa can be disabled by setting the environment variable\n 'PYTSA_DISABLED' to 'True'\n\nLicense\n=======\n\nlicensed under the `MIT\nLicense `__", "description_content_type": "text/x-rst; charset=UTF-8", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/thimovss/pytsa", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pytsa", "package_url": "https://pypi.org/project/pytsa/", "platform": "", "project_url": "https://pypi.org/project/pytsa/", "project_urls": { "Homepage": "https://github.com/thimovss/pytsa", "Source Code": "https://github.com/thimovss/pytsa" }, "release_url": "https://pypi.org/project/pytsa/0.5.4/", "requires_dist": null, "requires_python": "", "summary": "Simple, human-readable, fully tested, signature-preserving Python decorators to ensure your method abides to its contract.", "version": "0.5.4" }, "last_serial": 4918686, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "1a96a79cd66553ab24417d32d853b4a3", "sha256": "832f687021543032a87bfd403d8d9b4d72165dc3fb3709466ec2f9f6506bbd8b" }, "downloads": -1, "filename": "pytsa-0.0.0.tar.gz", "has_sig": false, "md5_digest": "1a96a79cd66553ab24417d32d853b4a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8595, "upload_time": "2019-02-16T10:12:11", "url": "https://files.pythonhosted.org/packages/a2/c9/030c7fb2a346ae0190b18ff223aea3a5f943a5a1a603fc6c6877f8654294/pytsa-0.0.0.tar.gz" } ], "0.1": [ { "comment_text": "", "digests": { "md5": "f96cae2e68dbbf57910e6e32d97c539f", "sha256": "171d545ff039427b0a7b406ebbe5af436c218e99c825e091c799d053edcfbd32" }, "downloads": -1, "filename": "pytsa-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f96cae2e68dbbf57910e6e32d97c539f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11182, "upload_time": "2019-02-13T16:02:46", "url": "https://files.pythonhosted.org/packages/38/d7/c40f186433d697bdc6bbc98b271a9f726d99e2679f8b9cd37c2ac75d504e/pytsa-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f690422ec77a262ff3b3b6ce810f913b", "sha256": "2849f17f8acea1dc0da7913b98d204f5545eae300b28d0b34110a84723259d6e" }, "downloads": -1, "filename": "pytsa-0.1.tar.gz", "has_sig": false, "md5_digest": "f690422ec77a262ff3b3b6ce810f913b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8598, "upload_time": "2019-02-16T09:37:55", "url": "https://files.pythonhosted.org/packages/ba/6d/1227b9b93db80f11385d48d4fd8580b097b1f438e6415d836b5e7a9a27bf/pytsa-0.1.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "b44cc91fe5e46614a202559a8de4c5b1", "sha256": "327f6dae1a69ddb0ab675d07dffc53fd6192f2a0a46b5643baeb4cad1c6a42ac" }, "downloads": -1, "filename": "pytsa-0.2.1.tar.gz", "has_sig": false, "md5_digest": "b44cc91fe5e46614a202559a8de4c5b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11236, "upload_time": "2019-02-16T10:26:22", "url": "https://files.pythonhosted.org/packages/cd/72/eb531d190479de134dce997419e918c3ab951aba19eb39e6782a5645f927/pytsa-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "4af044686485be79c631c4f600a518ed", "sha256": "97993125321054048c4f370b7ea3891e74e1a11f04deddf98b4c3fc582fed3a6" }, "downloads": -1, "filename": "pytsa-0.2.2.tar.gz", "has_sig": false, "md5_digest": "4af044686485be79c631c4f600a518ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11277, "upload_time": "2019-02-16T10:36:19", "url": "https://files.pythonhosted.org/packages/ea/07/3a8a1bdc65a7a1af45d42700fdb368353ac2c69e0b5d88b1b06ed5fc1207/pytsa-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "928d7f2644b2347f6495f94be57c74f2", "sha256": "50e92d379214cb1a29e135cdcf6ddc7dfb4615118f6f4bb7a2d895f573cfd79e" }, "downloads": -1, "filename": "pytsa-0.3.0.tar.gz", "has_sig": false, "md5_digest": "928d7f2644b2347f6495f94be57c74f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15199, "upload_time": "2019-02-28T10:29:27", "url": "https://files.pythonhosted.org/packages/ec/4a/ecbd418a40d9dd3058d09f869d08e292bb04298d27bd4860c190a5f6cc04/pytsa-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "96f1936ba82840127a6e23c909e03ac6", "sha256": "17a6f8acc2ad5fcd182ac9c0dd5e64d8612dc78fec7879fff4bc70ded790a040" }, "downloads": -1, "filename": "pytsa-0.3.1.tar.gz", "has_sig": false, "md5_digest": "96f1936ba82840127a6e23c909e03ac6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17777, "upload_time": "2019-02-28T10:38:11", "url": "https://files.pythonhosted.org/packages/1a/6e/5c56c2c6f7089ffbbad9aded0b00130ac62b10f337608e5a79133d88211e/pytsa-0.3.1.tar.gz" } ], "0.3.10": [ { "comment_text": "", "digests": { "md5": "9a9323d9af2623bb61af6aed95437410", "sha256": "2270de6670e96ac143553bed310ba4dab83fb00b9f46a4215f06f90bd3453d3d" }, "downloads": -1, "filename": "pytsa-0.3.10.tar.gz", "has_sig": false, "md5_digest": "9a9323d9af2623bb61af6aed95437410", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15810, "upload_time": "2019-02-28T12:23:56", "url": "https://files.pythonhosted.org/packages/6d/8c/ffc6095bf0234363043e3b0649b9650a161ea4eb65f36334228ecdf8ff96/pytsa-0.3.10.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "062d38eb974a320df7b71ad4d1158030", "sha256": "fe19c1664562098e1c2c42669a410c62168e1ecc7cb4625c73bddd70aca0e6c3" }, "downloads": -1, "filename": "pytsa-0.3.2.tar.gz", "has_sig": false, "md5_digest": "062d38eb974a320df7b71ad4d1158030", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18595, "upload_time": "2019-02-28T10:53:25", "url": "https://files.pythonhosted.org/packages/82/6c/47743b780e773e6645e2b69bdd23ecbbfbeb1b8e983f1479e6663a4de092/pytsa-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "e19d39ac2239ad989b7e2d6b788becde", "sha256": "8420dd4ccc4a9cb2fec3b7f851934a9e0ccf799c8a61a7f9cd80a70c71ae145a" }, "downloads": -1, "filename": "pytsa-0.3.3.tar.gz", "has_sig": false, "md5_digest": "e19d39ac2239ad989b7e2d6b788becde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15739, "upload_time": "2019-02-28T10:59:51", "url": "https://files.pythonhosted.org/packages/69/e6/556870ab2ad917a9b69dd90bde64562b57bb1df65bd702a29174a0361fa6/pytsa-0.3.3.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "ab232c209d7c8f833064ec7dc271e014", "sha256": "133232b870f81c06f0b98d0a24c23bb6ad13c85eb788a02b1530a4da6bebae56" }, "downloads": -1, "filename": "pytsa-0.3.5.tar.gz", "has_sig": false, "md5_digest": "ab232c209d7c8f833064ec7dc271e014", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18931, "upload_time": "2019-02-28T11:46:31", "url": "https://files.pythonhosted.org/packages/42/98/67b420eeba747852016557441d69e8aa48252bcbb57cb1cc13542d410c75/pytsa-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "bc6ae6fb7cfe87d2b771ed037c3e90eb", "sha256": "b69a3bfdfe588637384918014c4860849d62e9e565547183238755789a706d30" }, "downloads": -1, "filename": "pytsa-0.3.6.tar.gz", "has_sig": false, "md5_digest": "bc6ae6fb7cfe87d2b771ed037c3e90eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15714, "upload_time": "2019-02-28T11:50:20", "url": "https://files.pythonhosted.org/packages/63/b7/0dc8986a2305d6f9e6917d8853ee7884e5a6e430de3c1322c651b7e1c76c/pytsa-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "1983bbc52fdfc25d7fea1b4cbb06904c", "sha256": "3ecd45f07b24773cec88ea51b01af89927a41550e88a31cd203a8db021708d19" }, "downloads": -1, "filename": "pytsa-0.3.7.tar.gz", "has_sig": false, "md5_digest": "1983bbc52fdfc25d7fea1b4cbb06904c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18672, "upload_time": "2019-02-28T11:57:13", "url": "https://files.pythonhosted.org/packages/0b/94/1c3f958350e06f340bf7720d94e88301dc0c2a334a3dbaa69ec3e4ef1432/pytsa-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "d14de2c38a711dd5d4ec16329f9d9eaf", "sha256": "9a4ced7fa67180c1c57c92683ea5de43fafd07db8405c553ac2bf20a022282c9" }, "downloads": -1, "filename": "pytsa-0.3.8.tar.gz", "has_sig": false, "md5_digest": "d14de2c38a711dd5d4ec16329f9d9eaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18672, "upload_time": "2019-02-28T12:01:24", "url": "https://files.pythonhosted.org/packages/70/5c/24b66107144c8c8fc76bdaad65beff195a91bf2e9cc3510ee309e6bd7062/pytsa-0.3.8.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "b9080762e22de28d051c64d9cb097d08", "sha256": "76b5b76c9013a1121ff3d97330199a0a3c61b74a34cc35a7a8426d120ab95022" }, "downloads": -1, "filename": "pytsa-0.4.0.tar.gz", "has_sig": false, "md5_digest": "b9080762e22de28d051c64d9cb097d08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15831, "upload_time": "2019-02-28T12:54:40", "url": "https://files.pythonhosted.org/packages/36/01/db7d5d6b130dac24edf07180585838cae85361104be9d1782f7cae170257/pytsa-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "7a92861362a718c2d4ef30d63e855b53", "sha256": "3ad4f044dbc3fbaa546cfae584b0daf625df9218a1ab68c126219a6273d21355" }, "downloads": -1, "filename": "pytsa-0.4.1.tar.gz", "has_sig": false, "md5_digest": "7a92861362a718c2d4ef30d63e855b53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15893, "upload_time": "2019-02-28T15:10:35", "url": "https://files.pythonhosted.org/packages/4f/7a/20f5a8c8be9ba08725c1240962e39cf25fb8d7aede2249f1527dfb8dcce4/pytsa-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "8883d0b4239894f35fc610734e434b2d", "sha256": "4159309d881a04c7d1995ba641d6427b8cb62406f6489371dd0069d8643ed354" }, "downloads": -1, "filename": "pytsa-0.4.2.tar.gz", "has_sig": false, "md5_digest": "8883d0b4239894f35fc610734e434b2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16773, "upload_time": "2019-03-02T14:29:43", "url": "https://files.pythonhosted.org/packages/33/7f/39c8213c0e38013fef145f23591e1e224fc56c14374857796c6962ee8033/pytsa-0.4.2.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "484ee85c24997908ae1175a399eea10d", "sha256": "fbd649168991b7d948681037c4ff8bec4b39f32f35149a30360bbe2e2344df08" }, "downloads": -1, "filename": "pytsa-0.4.4.tar.gz", "has_sig": false, "md5_digest": "484ee85c24997908ae1175a399eea10d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19221, "upload_time": "2019-03-02T21:21:18", "url": "https://files.pythonhosted.org/packages/92/dc/3d29929b0d6a04dfaefc84b04be6b9dfaff236f30fc07d429fbca8a38164/pytsa-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "0dc4d00d75f809a18c4463283ed039bf", "sha256": "6523635c8231b2128ae5201fb91485879fe470738ac462589ffc7608593e68f2" }, "downloads": -1, "filename": "pytsa-0.4.5.tar.gz", "has_sig": false, "md5_digest": "0dc4d00d75f809a18c4463283ed039bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19249, "upload_time": "2019-03-02T21:32:29", "url": "https://files.pythonhosted.org/packages/78/1b/d990d0bf96edc89a0ef70e937e7934e106a3b8a1e6a6211879a62413eb34/pytsa-0.4.5.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d2ed8801a8ab908b6c1d4cf3a0308a09", "sha256": "ce621839345e8ddf0e263d913f844f9fd68e3f1e00053d298737eef26cef1d24" }, "downloads": -1, "filename": "pytsa-0.5.0.tar.gz", "has_sig": false, "md5_digest": "d2ed8801a8ab908b6c1d4cf3a0308a09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19041, "upload_time": "2019-03-03T10:05:47", "url": "https://files.pythonhosted.org/packages/6c/4a/6d3a8cb42749da917242aa12c2c9667596993c59853187452ecfbcbcb343/pytsa-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "5eba1416e7463365ec89f9cb36db8e08", "sha256": "360e52c24b3bc4c91c39c12811beef5dc286f1b7f75f6d300b322241b933c548" }, "downloads": -1, "filename": "pytsa-0.5.1.tar.gz", "has_sig": false, "md5_digest": "5eba1416e7463365ec89f9cb36db8e08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19338, "upload_time": "2019-03-03T10:47:37", "url": "https://files.pythonhosted.org/packages/d5/bb/430c0e8efa3f2b75ea9ada5eefa62a79fbe936766f05af8b20ceea1ffbc2/pytsa-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "c8ac811c04242411ed21ff1ab6e89f18", "sha256": "a2e1a1e720d624805461b2189c6411edb910399807be4d6203d4c3e83cc613ee" }, "downloads": -1, "filename": "pytsa-0.5.2.tar.gz", "has_sig": false, "md5_digest": "c8ac811c04242411ed21ff1ab6e89f18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19972, "upload_time": "2019-03-03T12:51:23", "url": "https://files.pythonhosted.org/packages/d4/fd/9e39c7b02377c40af0e8bc239cbcd64fe274009b4257c18f40b902d3fc7d/pytsa-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "47aa319974b33a3651351425e9201986", "sha256": "dfa2a521e2b3f0a8a0d5ee078b82ed0fd745aa65a8d7289474a0bad04a24d67c" }, "downloads": -1, "filename": "pytsa-0.5.3.tar.gz", "has_sig": false, "md5_digest": "47aa319974b33a3651351425e9201986", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19952, "upload_time": "2019-03-09T10:47:14", "url": "https://files.pythonhosted.org/packages/3e/d1/0cf814c965126d76bc18296858bc5710849e33460d2051c25360dcc0043e/pytsa-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "7d1068aa44662942fdc9994583f6a22c", "sha256": "ea4c4cdd984d081b02c98f4ab2ea2268460e6c3dc256e83f59b635e0669fdf2d" }, "downloads": -1, "filename": "pytsa-0.5.4.tar.gz", "has_sig": false, "md5_digest": "7d1068aa44662942fdc9994583f6a22c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20174, "upload_time": "2019-03-09T12:46:40", "url": "https://files.pythonhosted.org/packages/d9/7f/b643f1db644c0405b5fd2065b32d1d640a56bcfde090e49172a892450395/pytsa-0.5.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7d1068aa44662942fdc9994583f6a22c", "sha256": "ea4c4cdd984d081b02c98f4ab2ea2268460e6c3dc256e83f59b635e0669fdf2d" }, "downloads": -1, "filename": "pytsa-0.5.4.tar.gz", "has_sig": false, "md5_digest": "7d1068aa44662942fdc9994583f6a22c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20174, "upload_time": "2019-03-09T12:46:40", "url": "https://files.pythonhosted.org/packages/d9/7f/b643f1db644c0405b5fd2065b32d1d640a56bcfde090e49172a892450395/pytsa-0.5.4.tar.gz" } ] }