{ "info": { "author": "Dmitri Pribysh", "author_email": "pribysh@blazemeter.com", "bugtrack_url": null, "classifiers": [], "description": "# Apiritif\n\nApiritif is a number of utilities aimed to simplify the process of maintaining API tests. \nApiritif tests fully based on python nose tests. This library can help you to develop and run your existing tests.\nIn order to create any valid tests for Apiritif you can read [nose test documentation](https://nose.readthedocs.io/en/latest/testing.html).\n\nCheck Apiritif version with the following command:\n```\npython -m apiritif -- version\n```\n\nHere described some features of Apiritif which can help you to create tests more easily. \n\n## Overview\n\n## HTTP Requests\n\nApiritif allows to use simple `requests`-like API for making HTTP requests.\n\n```python\nfrom apiritif import http\n\nresponse = http.get(\"http://example.com\")\nresponse.assert_ok() # will raise AssertionError if request wasn't successful\n```\n\n`http` object provides the following methods:\n```python\nfrom apiritif import http\n\nhttp.get(\"http://api.example.com/posts\")\nhttp.post(\"http://api.example.com/posts\")\nhttp.put(\"http://api.example.com/posts/1\")\nhttp.patch(\"http://api.example.com/posts/1\")\nhttp.delete(\"http://api.example.com/posts/1\")\nhttp.head(\"http://api.example.com/posts\")\n```\n\nAll methods (`get`, `post`, `put`, `patch`, `delete`, `head`) support the following arguments:\n```python\ndef get(address, # URL for the request\n params=None, # URL params dict\n headers=None, # HTTP headers\n cookies=None, # request cookies\n data=None, # raw request data\n json=None, # attach JSON object as request body\n encrypted_cert=None, # certificate to use with request \n allow_redirects=True, # automatically follow HTTP redirects\n timeout=30) # request timeout, by default it's 30 seconds\n```\n\n##### Certificate usage\nCurrently `http` supports `pem` and `pkcs12` certificates. \nHere is an example of certificate usage:\n```python\nhttp.get(\"http://api.example.com/posts\", encrypted_cert=('./cert.pem', 'passphrase'))\n```\nFirst parameter is path to certificate, second is the passphrase certificate encrypted with.\n\n## HTTP Targets\n\nTarget is an object that captures resource name of the URL (protocol, domain, port)\nand allows to set some settings applied to all requests made for a target.\n\n\n```python\nfrom apiritif import http\n\nqa_env = http.target(\"http://192.160.0.2\")\nqa_env.get(\"/api/v4/user\")\nqa_env.get(\"/api/v4/user\")\n```\n\nTarget constructor supports the following options:\n```python\ntarget = apiritif.http.target(\n address, # target base address\n base_path=None, # base path prepended to all paths (e.g. '/api/v2')\n use_cookies=True, # use cookies\n additional_headers=None, # additional headers for all requests\n keep_alive=True, # reuse opened HTTP connection\n auto_assert_ok=True, # automatically invoke 'assert_ok' after each request\n)\n```\n\n\n## Assertions\n\nApiritif responses provide a lot of useful assertions that can be used on responses.\n\nHere's the list of assertions that can be used:\n```python\nresponse = http.get(\"http://example.com/\")\n\n# assert that request succeeded (status code is 2xx or 3xx)\nresponse.assert_ok()\n# assert that request has failed\nresponse.assert_failed()\n\n# status code based assertions\nresponse.assert_2xx()\nresponse.assert_3xx()\nresponse.assert_4xx()\nresponse.assert_5xx()\nresponse.assert_status_code(code)\nresponse.assert_not_status_code(code)\nresponse.assert_status_code_in(codes)\n\n# content-based assertions\n\n# assert that response body contains a string\nresponse.assert_in_body(member)\n\n# assert that response body doesn't contain a string\nresponse.assert_not_in_body(member)\n\n# search (or match) response body with a regex\nresponse.assert_regex_in_body(regex, match=False)\nresponse.assert_regex_not_in_body(regex, match=False)\n\n# assert that response has header\nresponse.assert_has_header(header)\n\n# assert that response has header with given value\nresponse.assert_header_value(header, value)\n\n# assert that response's headers contains a string\nresponse.assert_in_headers(member)\nresponse.assert_not_in_headers(member)\n\n# search (or match) response body with a regex\nresponse.assert_regex_in_headers(member)\nresponse.assert_regex_not_in_headers(member)\n\n# assert that response body matches JSONPath query\nresponse.assert_jsonpath(jsonpath_query, expected_value=None)\nresponse.assert_not_jsonpath(jsonpath_query)\n\n# assert that response body matches XPath query\nresponse.assert_xpath(xpath_query, parser_type='html', validate=False)\nresponse.assert_not_xpath(xpath_query, parser_type='html', validate=False)\n\n# assert that HTML response body contains CSS selector item\nresponse.assert_cssselect(selector, expected_value=None, attribute=None)\nresponse.assert_not_cssselect(selector, expected_value=None, attribute=None)\n\n```\n\nNote that assertions can be chained, so the following construction is entirely valid:\n```python\n\nresponse = http.get(\"http://example.com/\")\nresponse.assert_ok().assert_in_body(\"Example\")\n```\n\n## Transactions\n\nApiritif allows to group multiple requests or actions into a transaction using a `transaction` context manager.\nFor example when we have test action like bellow we want to execute requests according to concrete user as a separate piece.\nAlso we want to process test for `users/all` page even if something wrong with previous actions.\n\n```python\ndef test_with_login():\n user_credentials = data_mock.get_my_user()\n http.get(\"https://blazedemo.com/user/login?id=\"+user_credentials.id).assert_ok()\n http.get(\"https://blazedemo.com/user/id/personalPage\").assert_ok()\n http.get(\"https://blazedemo.com/user/id/getPersonalData\").assert_ok()\n\n http.get(\"https://blazedemo.com/users/all\").assert_ok()\n```\n\nHere where we can use transaction in order to wrap login process in one block.\n\n```python\ndef test_with_login():\n with apiritif.transaction('Login'):\n user_credentials = data_mock.get_my_user()\n http.get(\"https://blazedemo.com/user/login?id=\"+user_credentials.id).assert_ok()\n http.get(\"https://blazedemo.com/user/id/personalPage\").assert_ok()\n http.get(\"https://blazedemo.com/user/id/getPersonalData\").assert_ok()\n\n http.get(\"https://blazedemo.com/users/all\").assert_ok()\n```\nAt the same time requests to `users/all` page will be executed outside of transaction even if something inside transaction fails.\n\nTransaction defines the name for the block of code. This name with execution results of this particular block will be displayed in the output report.\n\n#### Smart transactions\n\n`smart_transaction` is advanced option for test flow control (stop or continue after failed test method).\nLet see another test method example:\n\n```python\nclass Tests(TestCase):\n def test_available_pages():\n http.get(\"https://blazedemo.com/\").assert_ok()\n http.get(\"https://blazedemo.com/users\").assert_ok()\n \n http.get(\"https://blazedemo.com/users/search\").assert_ok()\n http.get(\"https://blazedemo.com/users/count\").assert_ok()\n http.get(\"https://blazedemo.com/users/login\").assert_ok()\n\n http.get(\"https://blazedemo.com/contactUs\").assert_ok()\n http.get(\"https://blazedemo.com/copyright\").assert_ok()\n```\nIn this case we have multiple requests divided into blocks. I do not want to test pages under `users` space if it is not available.\nFor this purpose we can use `smart_transaction`.\n\n```python\nclass Tests(TestCase):\n def setUp(self):\n apiritif.put_into_thread_store(func_mode=True)\n \n def test_available_pages():\n http.get(\"https://blazedemo.com/\").assert_ok()\n\n with apiritif.smart_transaction('Availability check'):\n http.get(\"https://blazedemo.com/users\").assert_ok()\n \n with apiritif.smart_transaction('Test users pages'):\n http.get(\"https://blazedemo.com/users/search\").assert_ok()\n http.get(\"https://blazedemo.com/users/count\").assert_ok()\n http.get(\"https://blazedemo.com/users/login\").assert_ok()\n\n http.get(\"https://blazedemo.com/contactUs\").assert_ok()\n http.get(\"https://blazedemo.com/copyright\").assert_ok()\n```\nNow this two blocks are wrapped into `smart_transaction` which would help with error test flow handling and logging.\n\nAlso each transaction defines the name for the block of code and will be displayed in the output report.\n \nNow about `apiritif.put_into_thread_store(func_mode=True)`, this is test execution mode for apiritif.\nWe can execute all of the transactions in test no matter what or stop after first failed transaction.\nThis flag tells to apiritif \"Stop execution if some transaction failed\". `False` says \"Run till the end in any case\".\n\n##### Nose Flow Control\nIt's one more feature based on smart transactions. It changes `func_mode` if necessary to execute whole teardown block,\nintended to finalize all necessary things.\n\n```python\ndef test_flow-control(self):\n try:\n self._method_with_exception()\n self._skipped_method()\n finally:\n apiritif.set_stage(\"teardown\")\n self._teardown1()\n self._teardown2()\n```\nIf this test will be interrupted in `_method_with_exception`, both of teardown methods will be executed even if them raise exception.\nPlease note two differences with usage of `tearDown` method of nose:\n1. all parts of teardown stage will be executed as mentioned above (will be interrupted in regular nose execution)\n2. results of teardown steps will be written by apiritif SampleWriter into output file (nose lost them as tearDown isn't recognised as test).\n\n##### Graceful shutdown\nSomethimes waiting of end of test isn't necessary and we prefer to break it but save all current results and handle all teardown steps. (see above)\nIt's possible with GRACEFUL flag. To use it you can run apiritif with GRACEFUL environment variable pointed to any file name.\nApiritif will be interrupted as soon as the file is created.\n\n## CSV Reader\nIn order to use data from csv file as test parameters Apiritif provides two different csv readers.\nSimple `CSVReader` helps you to read data from file line by line and use this data wherever you need:\n\n```python\ndata_reader = apiritif.CSVReader('---path to required file---')\nclass Tests(TestCase):\n def test_user_page():\n data_reader.read_vars()\n vars = data_reader.get_vars()\n http.get(\"https://blazedemo.com/users/\" + vars.user_id).assert_ok()\n```\n\nIn case of multithreading testing you may need to deviate data between threads and ysu uniq lines for each thread.\n`CSVReaderPerThread` helps to solve this problem: \n\n```python\ndata_per_thread_reader = apiritif.CSVReaderPerThread('---path to required file---')\nclass Tests(TestCase):\n def setUp(self):\n data_per_thread_reader.read_vars()\n self.vars = data_per_thread_reader.get_vars()\n \n def test_user_page():\n http.get(\"https://blazedemo.com/users/\" + self.vars.user_id).assert_ok()\n```\n\n## Execution results\n\nApiritif writes output data from tests in `apiritif.#.csv` files by default. Here `#` is number of executing process.\nThe output file is similar to this:\n```csv\ntimeStamp,elapsed,Latency,label,responseCode,responseMessage,success,allThreads,bytes\n1602759519185,0,0,Correct test,,,true,0,2\n1602759519186,0,0,Correct transaction,,,true,0,2\n1602759519187,0,0,Test with exception,,Exception: Horrible error,false,0,2\n``` \nIt contains test and transaction results for executed tests by one process.\n\n### Environment Variables\n\nThere are environment variables to control length of response/request body to be written into traces and logs:\n * `APIRITIF_TRACE_BODY_EXCLIMIT` - limit of body part to include into exception messages, default is 1024\n * `APIRITIF_TRACE_BODY_HARDLIMIT` - limit of body length to include into JSON trace records, default is unlimited\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/Blazemeter/apiritif", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Blazemeter/apiritif", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "apiritif", "package_url": "https://pypi.org/project/apiritif/", "platform": "", "project_url": "https://pypi.org/project/apiritif/", "project_urls": { "Download": "https://github.com/Blazemeter/apiritif", "Homepage": "https://github.com/Blazemeter/apiritif" }, "release_url": "https://pypi.org/project/apiritif/1.1.3/", "requires_dist": [ "nose2", "pytest", "requests (>=2.24.0)", "jsonpath-ng", "lxml", "unicodecsv", "cssselect", "chardet", "pyopenssl", "codecov" ], "requires_python": "", "summary": "Python framework for API testing", "version": "1.1.3", "yanked": false, "yanked_reason": null }, "last_serial": 12970368, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "a59810f3ede50f4ef91ffb9649fee75f", "sha256": "d72f0e74a2ab75657c1a29890e7c8580ff2d29e7b48ddf208606f2c98003e58c" }, "downloads": -1, "filename": "apiritif-0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a59810f3ede50f4ef91ffb9649fee75f", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6458, "upload_time": "2017-04-25T12:06:45", "upload_time_iso_8601": "2017-04-25T12:06:45.710336Z", "url": "https://files.pythonhosted.org/packages/ba/a3/f39ffc2a95e0ed4663e439e511faa9a142be86dafb1de2425758fa2c785a/apiritif-0.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "04c8680fd54788c0f56a96fb0a419ad8", "sha256": "9d749a1fbbbf1e609755b50ed2a78abd5b2ce5b4d9c4f2015279ec5470dd94bf" }, "downloads": -1, "filename": "apiritif-0.1.tar.gz", "has_sig": false, "md5_digest": "04c8680fd54788c0f56a96fb0a419ad8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5086, "upload_time": "2017-04-25T12:06:43", "upload_time_iso_8601": "2017-04-25T12:06:43.632513Z", "url": "https://files.pythonhosted.org/packages/ea/6e/fb652125a04663f9b3151a153e1ca784c5c84780daaad589bdc4c0ccb659/apiritif-0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2": [ { "comment_text": "", "digests": { "md5": "d8ec0a71b1acc54686076bcd4a09e158", "sha256": "1ced3474f5a658f0b5af914ccc7cf8d1c0585c8f42354e095192f63b6b4540b6" }, "downloads": -1, "filename": "apiritif-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d8ec0a71b1acc54686076bcd4a09e158", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6544, "upload_time": "2017-04-29T07:53:53", "upload_time_iso_8601": "2017-04-29T07:53:53.739210Z", "url": "https://files.pythonhosted.org/packages/a4/c2/c72e078b685a0c3e0377d6070ab2c493028ddbd04fab6f87147118b6a591/apiritif-0.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "75088a2eba0b1aca9995d825c3c89876", "sha256": "8c5cf1607fac5999caf52e18c6798a182da51bdf7bde45c252091f68c2f7d51d" }, "downloads": -1, "filename": "apiritif-0.2.tar.gz", "has_sig": false, "md5_digest": "75088a2eba0b1aca9995d825c3c89876", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5179, "upload_time": "2017-04-29T07:53:51", "upload_time_iso_8601": "2017-04-29T07:53:51.311798Z", "url": "https://files.pythonhosted.org/packages/5f/ce/868d03890d47de3a97fdccd1f01bdf64e76b338877dd34322a9f8b309715/apiritif-0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3": [ { "comment_text": "", "digests": { "md5": "97486b6adb5d706c9fa325cf54924f3f", "sha256": "70174b95e0ccba9a9b3465e6471fce0bbc6d832212476030ff7100c92df45f4e" }, "downloads": -1, "filename": "apiritif-0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "97486b6adb5d706c9fa325cf54924f3f", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6880, "upload_time": "2017-05-03T12:36:08", "upload_time_iso_8601": "2017-05-03T12:36:08.169929Z", "url": "https://files.pythonhosted.org/packages/0d/b0/8f0e3b8c7375930d2332ae415d617e8757046ad793c519e24ebba115e908/apiritif-0.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e47b53dc705718de601e0cf9642ba1ec", "sha256": "68de1e43d5e63980a32b367e322ee8a695e361e117a82f7743458de798b5eda1" }, "downloads": -1, "filename": "apiritif-0.3.tar.gz", "has_sig": false, "md5_digest": "e47b53dc705718de601e0cf9642ba1ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5498, "upload_time": "2017-05-03T12:36:05", "upload_time_iso_8601": "2017-05-03T12:36:05.886610Z", "url": "https://files.pythonhosted.org/packages/9b/45/32e87c13bb6ba9af46242858f80e1767be115076bb918fec26467757e020/apiritif-0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4": [ { "comment_text": "", "digests": { "md5": "822d42f2976e39c1586a64c4232f6398", "sha256": "3a8917e8c0309eb6d5c4e420eabd180f90be388c2eaf34e5b94adc3b488dab72" }, "downloads": -1, "filename": "apiritif-0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "822d42f2976e39c1586a64c4232f6398", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15792, "upload_time": "2017-11-10T15:05:18", "upload_time_iso_8601": "2017-11-10T15:05:18.552582Z", "url": "https://files.pythonhosted.org/packages/2b/89/916a79dc4918f983feae7bad6ae00d1c4c22c7c865e0d66bb2fc834c1b49/apiritif-0.4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "53c86fd0ba266402690f20decfc14916", "sha256": "179e40110f55dd015d11ac6578e9a57786512968e3b4b6d5a9df6ebe6a5dbbff" }, "downloads": -1, "filename": "apiritif-0.4.tar.gz", "has_sig": false, "md5_digest": "53c86fd0ba266402690f20decfc14916", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13405, "upload_time": "2017-11-10T15:05:16", "upload_time_iso_8601": "2017-11-10T15:05:16.695483Z", "url": "https://files.pythonhosted.org/packages/df/97/a298d2c08970171c7683b34b30e0af4a0f710ad7a1a4bb9dec7caa41b3b0/apiritif-0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5": [ { "comment_text": "", "digests": { "md5": "578d1cf6e5869a2aad796de21071ce09", "sha256": "fb8a5dde8d5bf618654cff32a308a076d9a70c3dad35f18e76d4419003706728" }, "downloads": -1, "filename": "apiritif-0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "578d1cf6e5869a2aad796de21071ce09", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15813, "upload_time": "2017-12-12T14:48:28", "upload_time_iso_8601": "2017-12-12T14:48:28.576343Z", "url": "https://files.pythonhosted.org/packages/f1/ce/3add95e401768b19ee0b0699f7bc6e7977f8bc911884b1dccedc3e70a3ca/apiritif-0.5-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fe28739ea27633e809f516174f691820", "sha256": "9428df3cb32ec0d0424c14c7b1c8470892cec2edb3a8adb4424fc845c4acc1fe" }, "downloads": -1, "filename": "apiritif-0.5.tar.gz", "has_sig": false, "md5_digest": "fe28739ea27633e809f516174f691820", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13584, "upload_time": "2017-12-12T14:48:25", "upload_time_iso_8601": "2017-12-12T14:48:25.573888Z", "url": "https://files.pythonhosted.org/packages/72/ef/302a89b0106abc43dcd413a67a37d77a28c0690c5037ff38f33a126a192d/apiritif-0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "7c7753abcc3521808ac0fb476013f686", "sha256": "a7c46f2527de1c911739983d3a54456e61b9c883abaa0f3d04ebd8163040cde0" }, "downloads": -1, "filename": "apiritif-0.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7c7753abcc3521808ac0fb476013f686", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16560, "upload_time": "2018-03-02T11:35:33", "upload_time_iso_8601": "2018-03-02T11:35:33.046263Z", "url": "https://files.pythonhosted.org/packages/87/85/5e9b8b6c1ea3c9aac09dc5dac0c77eda5f4c5d8c17071a94ea6cbfc59ee3/apiritif-0.6.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d0e402d0a50712f3ff2449974763a32e", "sha256": "335f28cb6e1552025d075bacc7a0bc56729713ffdbb4bfa2f9fd2bd2d394918e" }, "downloads": -1, "filename": "apiritif-0.6.1.tar.gz", "has_sig": false, "md5_digest": "d0e402d0a50712f3ff2449974763a32e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12885, "upload_time": "2018-03-02T11:35:35", "upload_time_iso_8601": "2018-03-02T11:35:35.143524Z", "url": "https://files.pythonhosted.org/packages/ac/c6/d35c41b41783eb91308cc67a1a12b34dd7e578ff9a49616c8fff8ca29a6d/apiritif-0.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "4ddbb1deb0171aaeffd51e523ac5cd6d", "sha256": "8ca9d23ae108eedb27ccfe1768b99679644010107f87b1246cee8cf554e92334" }, "downloads": -1, "filename": "apiritif-0.6.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4ddbb1deb0171aaeffd51e523ac5cd6d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17552, "upload_time": "2018-04-25T14:36:40", "upload_time_iso_8601": "2018-04-25T14:36:40.913713Z", "url": "https://files.pythonhosted.org/packages/c0/fe/3b32c1453ddfc3912ee8898327b77f7c783eb9af3fdda9a5cc1ca7a766e9/apiritif-0.6.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8f604e3604990ae3e8c54f3f707ba35d", "sha256": "05befdceba481c2e68ed278bc6dc29c4e6b8def23bfed60216ebc0bbacc7c5c5" }, "downloads": -1, "filename": "apiritif-0.6.2.tar.gz", "has_sig": false, "md5_digest": "8f604e3604990ae3e8c54f3f707ba35d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14717, "upload_time": "2018-04-25T14:36:42", "upload_time_iso_8601": "2018-04-25T14:36:42.206609Z", "url": "https://files.pythonhosted.org/packages/0a/c7/4b8310fc8ea71855a15ca71065704ac1866a35e4625b0718504c723c0c11/apiritif-0.6.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "a90bbdda2409448961ae12809249e26a", "sha256": "7c4d63a456a0d2649e9187baeff7b9e2409d7ddbae60895d6aad2c6ad0985d13" }, "downloads": -1, "filename": "apiritif-0.6.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a90bbdda2409448961ae12809249e26a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17661, "upload_time": "2018-04-25T15:15:59", "upload_time_iso_8601": "2018-04-25T15:15:59.262908Z", "url": "https://files.pythonhosted.org/packages/b6/f9/bee205da37e6b2a0dc8bc40ba2d096f8df274a325c6f9293fc446c885a16/apiritif-0.6.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2729fdf5379e66081321e537d6ab0891", "sha256": "0610654f8ec1aabb5aa83ef35c36af6f68338303c8a653ea1d15a2360bd608a7" }, "downloads": -1, "filename": "apiritif-0.6.3.tar.gz", "has_sig": false, "md5_digest": "2729fdf5379e66081321e537d6ab0891", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14837, "upload_time": "2018-04-25T15:16:00", "upload_time_iso_8601": "2018-04-25T15:16:00.565721Z", "url": "https://files.pythonhosted.org/packages/17/68/49b7f2f803715c8a733321afe36b7f393624089ccd6901961ba840bcee1f/apiritif-0.6.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "fde33a16cac57bf464cb5d0c52b3512e", "sha256": "7dd392cd50168ed5acbcd21013345b1acda6d4a0c35e38da70606953cd31da30" }, "downloads": -1, "filename": "apiritif-0.6.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fde33a16cac57bf464cb5d0c52b3512e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17711, "upload_time": "2018-05-17T12:06:32", "upload_time_iso_8601": "2018-05-17T12:06:32.926958Z", "url": "https://files.pythonhosted.org/packages/7a/d0/f9ffe047a49550f04b444a26ae8df0c05e04a9dcf039f43d98d92985714c/apiritif-0.6.4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "863487f29fcddb7a3ac5c7450e860214", "sha256": "8dd8e2d7426991dcf29781fd231f81790bade8c75dcc27768f7a21f0cd5652d2" }, "downloads": -1, "filename": "apiritif-0.6.4.tar.gz", "has_sig": false, "md5_digest": "863487f29fcddb7a3ac5c7450e860214", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14878, "upload_time": "2018-05-17T12:06:33", "upload_time_iso_8601": "2018-05-17T12:06:33.978937Z", "url": "https://files.pythonhosted.org/packages/1f/ce/d3e3a77dd9125c1152e44ebb1bf8ea85837fb4c9a19bb61b353515c4203a/apiritif-0.6.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "4b3343f16a99ef3887390c05ab565b47", "sha256": "09b8dd48d5b3b0fcb503902a12183c481cee355d065eb36aaa25dbaf78ea1708" }, "downloads": -1, "filename": "apiritif-0.6.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4b3343f16a99ef3887390c05ab565b47", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17790, "upload_time": "2018-05-22T12:50:28", "upload_time_iso_8601": "2018-05-22T12:50:28.109547Z", "url": "https://files.pythonhosted.org/packages/34/df/095285922665c638619635fd6e7302649d53899026f44316ab081f4de779/apiritif-0.6.5-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "58cbded7ae8eaf4331e835c8e79b8204", "sha256": "81c9883c3d60ffbd5111316878fdf4dd7b97075aaba107db29992a1b76057686" }, "downloads": -1, "filename": "apiritif-0.6.5.tar.gz", "has_sig": false, "md5_digest": "58cbded7ae8eaf4331e835c8e79b8204", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14969, "upload_time": "2018-05-22T12:50:29", "upload_time_iso_8601": "2018-05-22T12:50:29.384070Z", "url": "https://files.pythonhosted.org/packages/a7/7f/66ab907fb72867e34ca114ddc369ac892abac94a1005ff8c22739fafb341/apiritif-0.6.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "2d71cad4d9ed4ea4e7764e162c9d65be", "sha256": "3dc52e3be4377e92362828f722dd84086ecb1aa08849da0d55af6c9d7f46d635" }, "downloads": -1, "filename": "apiritif-0.6.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2d71cad4d9ed4ea4e7764e162c9d65be", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20581, "upload_time": "2018-08-07T18:48:30", "upload_time_iso_8601": "2018-08-07T18:48:30.397958Z", "url": "https://files.pythonhosted.org/packages/89/24/49d97dac6c3d38552f6af9645181253bdd133a7db885f4e0a3099a0466f1/apiritif-0.6.6-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "bf28f1a08c849276777d1f74b5c622e1", "sha256": "d2f226e447fa2731365d7416c07cc2367a5a9c9cf5e1d04a156ce0b0bd5ea8c9" }, "downloads": -1, "filename": "apiritif-0.6.6.tar.gz", "has_sig": false, "md5_digest": "bf28f1a08c849276777d1f74b5c622e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17235, "upload_time": "2018-08-07T18:48:32", "upload_time_iso_8601": "2018-08-07T18:48:32.092968Z", "url": "https://files.pythonhosted.org/packages/00/2f/292322c3ce42ceaceb273e1a333d7fcdc5913b7595c6dd63bf6667faa4f6/apiritif-0.6.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.7": [ { "comment_text": "", "digests": { "md5": "71f8d33730a70be93424410baf536862", "sha256": "d66aad7ac4c073233cfa436811ba985f2a1885ce966ed66af856c8359ed838b1" }, "downloads": -1, "filename": "apiritif-0.6.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "71f8d33730a70be93424410baf536862", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18268, "upload_time": "2018-08-08T12:31:48", "upload_time_iso_8601": "2018-08-08T12:31:48.322338Z", "url": "https://files.pythonhosted.org/packages/10/b6/456e23af1cb2e1ff61b03a29296a04d28a6b6c59371ff25f409d8b76a335/apiritif-0.6.7-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fa668f05e484c8d0833d7323ef401b20", "sha256": "9667c04724aacf8f501f05178b6788dc138180c4909cb876a78d23b9a0f35af9" }, "downloads": -1, "filename": "apiritif-0.6.7.tar.gz", "has_sig": false, "md5_digest": "fa668f05e484c8d0833d7323ef401b20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15489, "upload_time": "2018-08-08T12:31:49", "upload_time_iso_8601": "2018-08-08T12:31:49.563304Z", "url": "https://files.pythonhosted.org/packages/3e/4d/cc49edec3128c558e6476da68d165f1614b9250bca538aa86af2476d842e/apiritif-0.6.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "9063ded2f314ac9891bdc6ddda05e012", "sha256": "fd674a8b95971e4e77d7be522513a250e1bd84f264d3c840f0cdfc51eb634c60" }, "downloads": -1, "filename": "apiritif-0.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9063ded2f314ac9891bdc6ddda05e012", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20933, "upload_time": "2018-12-20T14:36:31", "upload_time_iso_8601": "2018-12-20T14:36:31.920770Z", "url": "https://files.pythonhosted.org/packages/da/c8/6ddbc580962b552808a705c86c78430f43b6975cc23ca4484c848f8116e2/apiritif-0.7.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0a76e3161915076f5859aee7d4a0f825", "sha256": "7f259327091e6684fac8e74169815ddb80e0e5bf6ce341ee1c365c27ac9a8ed5" }, "downloads": -1, "filename": "apiritif-0.7.0.tar.gz", "has_sig": false, "md5_digest": "0a76e3161915076f5859aee7d4a0f825", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17377, "upload_time": "2018-12-20T14:36:33", "upload_time_iso_8601": "2018-12-20T14:36:33.763827Z", "url": "https://files.pythonhosted.org/packages/b0/d4/a22e9fe384920e1443df4efd82f49841f9da39ab9e5b2d988076f5972c55/apiritif-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "3bae006c6154a264e60ac8fd6b23dea9", "sha256": "83d0c38a81b872a01ef7bd5d8878e13455dfe24f88a12a0dc6b6169b6b379fd1" }, "downloads": -1, "filename": "apiritif-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3bae006c6154a264e60ac8fd6b23dea9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25074, "upload_time": "2019-02-19T10:04:55", "upload_time_iso_8601": "2019-02-19T10:04:55.942763Z", "url": "https://files.pythonhosted.org/packages/46/7c/81b0fe9d6846e047f1c53b1f303a2dec4ddc7c56353fc5a14f4a8a3667fa/apiritif-0.8.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c877727796537c748b7b39396171a3f6", "sha256": "7de0be8856d7d2cdebfb97e167799cdef9695e5e25484ac620adc83cc4185dca" }, "downloads": -1, "filename": "apiritif-0.8.0.tar.gz", "has_sig": false, "md5_digest": "c877727796537c748b7b39396171a3f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18437, "upload_time": "2019-02-19T10:04:57", "upload_time_iso_8601": "2019-02-19T10:04:57.574252Z", "url": "https://files.pythonhosted.org/packages/ff/da/a7879514138da9f4974ce5f99ea532003dd9ae3b3c51997ef8eb02b54b87/apiritif-0.8.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "a3b34e00014eec8da1841633227a19de", "sha256": "934d66d36ec6320f52330b85f4e519469120ed1c4240ab689a7dd04ed7d98201" }, "downloads": -1, "filename": "apiritif-0.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a3b34e00014eec8da1841633227a19de", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21745, "upload_time": "2019-02-22T11:02:15", "upload_time_iso_8601": "2019-02-22T11:02:15.688015Z", "url": "https://files.pythonhosted.org/packages/ec/da/db4ebb14acfab7aa55a9bdba5f3c16b4fe5c164ec65a6021b9f21c8c43a8/apiritif-0.8.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a134e04f295707f8b1ecb7cf95b0546d", "sha256": "035cd677df9bdfa34e7293cc9e9a93d022141b6bf47b14b9d4abd0f30f2c4a8f" }, "downloads": -1, "filename": "apiritif-0.8.1.tar.gz", "has_sig": false, "md5_digest": "a134e04f295707f8b1ecb7cf95b0546d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17117, "upload_time": "2019-02-22T11:02:17", "upload_time_iso_8601": "2019-02-22T11:02:17.313496Z", "url": "https://files.pythonhosted.org/packages/82/ec/14e214ccb623df66d3dde690d08942d66d14e5732081bd06d4d80fd44a60/apiritif-0.8.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "21140a4d71b779e4a3529f7a404b2539", "sha256": "9ed170485567ff0a75ccffc67ebb01abc9029fa224a397d1f081e85ac8f62ab5" }, "downloads": -1, "filename": "apiritif-0.8.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "21140a4d71b779e4a3529f7a404b2539", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25900, "upload_time": "2019-08-13T10:15:35", "upload_time_iso_8601": "2019-08-13T10:15:35.125417Z", "url": "https://files.pythonhosted.org/packages/bc/02/6291f11ee228369e76b93763f9977ccdd3cc710ee0427fb0ac389b98cef9/apiritif-0.8.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "533ea305b31b38c23d5fc8468c0dfc7d", "sha256": "07114141cc98efc2c4db6f419c9e3a9434dd18af2192a034a51b75d01f25e2e4" }, "downloads": -1, "filename": "apiritif-0.8.2.tar.gz", "has_sig": false, "md5_digest": "533ea305b31b38c23d5fc8468c0dfc7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17207, "upload_time": "2019-08-13T10:15:37", "upload_time_iso_8601": "2019-08-13T10:15:37.220337Z", "url": "https://files.pythonhosted.org/packages/55/56/7eec95f79f527665e9741058f32f46d7eaf2d4b5b46f434344283413427f/apiritif-0.8.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "1a9e51e61f10e9118699ce4394f2c43b", "sha256": "86d6cb1d539234033f7650805efa146bcd4addd5034460d32276de7dbb45da39" }, "downloads": -1, "filename": "apiritif-0.9.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1a9e51e61f10e9118699ce4394f2c43b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27688, "upload_time": "2019-10-29T10:55:23", "upload_time_iso_8601": "2019-10-29T10:55:23.286880Z", "url": "https://files.pythonhosted.org/packages/68/bc/4ccc9b9e59d7270814698fea466b543306e6996874b2201d9aef292f5692/apiritif-0.9.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "bb34c8e03c74aeb1d7e388f150b65064", "sha256": "93418a0df8e268edc57141f59599ddf92809340fda001cd7151e3e38e2bb976e" }, "downloads": -1, "filename": "apiritif-0.9.0.tar.gz", "has_sig": false, "md5_digest": "bb34c8e03c74aeb1d7e388f150b65064", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18381, "upload_time": "2019-10-29T10:55:24", "upload_time_iso_8601": "2019-10-29T10:55:24.874600Z", "url": "https://files.pythonhosted.org/packages/f6/25/acb55e688587b9d60a85713ba4d71ad5c4c85485fe4fb0af8e6792d181ae/apiritif-0.9.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "ed877aaff6d521ede50ba13d616f5861", "sha256": "683abc9d145ecd3f1b4dd99c5415bc10c4f71a797222a5291b28e510172bb7bf" }, "downloads": -1, "filename": "apiritif-0.9.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ed877aaff6d521ede50ba13d616f5861", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27745, "upload_time": "2020-01-17T12:23:51", "upload_time_iso_8601": "2020-01-17T12:23:51.078779Z", "url": "https://files.pythonhosted.org/packages/87/8b/bd17918e7a8681bfe78060d86d82adcc20546c3fb3468b7c2caedb169b8a/apiritif-0.9.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d699432273616e5b492e5f8415f12c1d", "sha256": "dc415e142401642de73fad3bfbe8c523aa08611c0f68af90bdb1be6de1213cf1" }, "downloads": -1, "filename": "apiritif-0.9.1.tar.gz", "has_sig": false, "md5_digest": "d699432273616e5b492e5f8415f12c1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18475, "upload_time": "2020-01-17T12:23:52", "upload_time_iso_8601": "2020-01-17T12:23:52.843346Z", "url": "https://files.pythonhosted.org/packages/2f/e0/642106c6e4100fac512f4d03cf4ed48b19d7f267dcb592f574aef634b36e/apiritif-0.9.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "616efd561e67f6500449e800dd3ef292", "sha256": "e891a9ee585a780d5e8da69c7522197e859a4085802ec402472bfb4a843bb3fc" }, "downloads": -1, "filename": "apiritif-0.9.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "616efd561e67f6500449e800dd3ef292", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29166, "upload_time": "2020-02-24T08:53:46", "upload_time_iso_8601": "2020-02-24T08:53:46.958455Z", "url": "https://files.pythonhosted.org/packages/e8/c1/a089de5b8134fb7be6587c9104afb12045cf6c75795e74c9f35bfe6a97ea/apiritif-0.9.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "28c16b13d30cf476428bbba601b83603", "sha256": "27d9cf195dec00988d7bde7832fa0b8485bd0d0138afe99eef08f4a323b4aead" }, "downloads": -1, "filename": "apiritif-0.9.2.tar.gz", "has_sig": false, "md5_digest": "28c16b13d30cf476428bbba601b83603", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19487, "upload_time": "2020-02-24T08:53:48", "upload_time_iso_8601": "2020-02-24T08:53:48.814782Z", "url": "https://files.pythonhosted.org/packages/96/23/78c03e12b2d1b12b3e4451b7bcf432befc81568eed90e7629aa5620a1bc3/apiritif-0.9.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "7bbcb82b43c50d865a952374a73d89bb", "sha256": "65286a40b6fb3c09f24984bf3f70cb57c63331d0be16a5b611be1b4701bc51af" }, "downloads": -1, "filename": "apiritif-0.9.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7bbcb82b43c50d865a952374a73d89bb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25092, "upload_time": "2020-05-03T08:02:03", "upload_time_iso_8601": "2020-05-03T08:02:03.384358Z", "url": "https://files.pythonhosted.org/packages/cd/42/5d709abc1ae6ea818f501f821df96a652033675d907f254deb0f030cb25a/apiritif-0.9.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4f6dcfa446688f4a179c4e6020b08b26", "sha256": "40d521285ae3f9cf6ec93b874d0cbaa719c4c3b137b7957ae88cb23fc0766ae0" }, "downloads": -1, "filename": "apiritif-0.9.3.tar.gz", "has_sig": false, "md5_digest": "4f6dcfa446688f4a179c4e6020b08b26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19524, "upload_time": "2020-05-03T08:02:05", "upload_time_iso_8601": "2020-05-03T08:02:05.303845Z", "url": "https://files.pythonhosted.org/packages/55/21/c517c7bdaa44a5956d744ada04203c289bc43945b6a0be7c5e1106833bd8/apiritif-0.9.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "09fe5f5394c2c8453368728685be26b7", "sha256": "09d93489e86a7418f31b372ec124504a4715fd9fc7bd5929c0c88252c373ea41" }, "downloads": -1, "filename": "apiritif-0.9.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "09fe5f5394c2c8453368728685be26b7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29953, "upload_time": "2020-07-17T07:41:56", "upload_time_iso_8601": "2020-07-17T07:41:56.714779Z", "url": "https://files.pythonhosted.org/packages/cb/7d/fc44183ed13a5e471822794c598e37e97e54e27994715fc0fcbdbc820622/apiritif-0.9.4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "02b1a845b9df5c599896d8e05f57c411", "sha256": "004820bdfd5446c68daf7e86b9c41ccdc39fcdd88febb931d5aa54ed9a3bebb7" }, "downloads": -1, "filename": "apiritif-0.9.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "02b1a845b9df5c599896d8e05f57c411", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 30452, "upload_time": "2020-09-01T08:51:49", "upload_time_iso_8601": "2020-09-01T08:51:49.634880Z", "url": "https://files.pythonhosted.org/packages/12/c8/1f218e217d8309bdf2252403469f0235d868d626bb7ba92b8d9a67978660/apiritif-0.9.5-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f9cbbea2056e17db1169e4d85b3159ca", "sha256": "3f82ca21067c58adb25f81786bd31a8b1ca083669fd78321efa4a4cb0c13831e" }, "downloads": -1, "filename": "apiritif-0.9.5.tar.gz", "has_sig": false, "md5_digest": "f9cbbea2056e17db1169e4d85b3159ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22412, "upload_time": "2020-09-01T08:51:51", "upload_time_iso_8601": "2020-09-01T08:51:51.279099Z", "url": "https://files.pythonhosted.org/packages/cb/93/cffe8d2149df5beaf04bf137d2a4484e4abe63f8d44d20e1f4664fb11312/apiritif-0.9.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "271ef12315e97685e9a3ff0334184065", "sha256": "d335bfb82f088ef5644c1b1fc01afbf62d5ec6615af8791648ecfba001f0357c" }, "downloads": -1, "filename": "apiritif-0.9.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "271ef12315e97685e9a3ff0334184065", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34080, "upload_time": "2021-01-15T09:14:39", "upload_time_iso_8601": "2021-01-15T09:14:39.009757Z", "url": "https://files.pythonhosted.org/packages/79/7c/d2a097a256968464ae0ea53405a046847f27e4f14e3aa260eec0f46d982b/apiritif-0.9.6-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "23d382a58203644683843731a219bc1c", "sha256": "4be1c5a830735c8e8662aa8ac2ccd549b0481cd55b7ed7eb6bfa73fd983de0fc" }, "downloads": -1, "filename": "apiritif-0.9.6.tar.gz", "has_sig": false, "md5_digest": "23d382a58203644683843731a219bc1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24030, "upload_time": "2021-01-15T09:14:41", "upload_time_iso_8601": "2021-01-15T09:14:41.075438Z", "url": "https://files.pythonhosted.org/packages/3c/88/5d381e9755ce82de93a8e9b3b86332b45c42f3f2480d66dd77174b02bfb0/apiritif-0.9.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "5ca06270b3b305189163b14a29dc5681", "sha256": "1ef9f68e506b339140b410196b15dc76899bedf63be99d59b6f2c10702abd162" }, "downloads": -1, "filename": "apiritif-0.9.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5ca06270b3b305189163b14a29dc5681", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35162, "upload_time": "2021-06-15T02:32:33", "upload_time_iso_8601": "2021-06-15T02:32:33.268603Z", "url": "https://files.pythonhosted.org/packages/c3/b2/a41b904b0991e66d8c3a927e785df68038474d46baab71f23be45543601f/apiritif-0.9.7-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "82baa3b4904efb81ec69aa12af7644d3", "sha256": "e8344644924ce2acff34c03c4b1129c80a28b2d21a728926aaccd2479d1f8fa6" }, "downloads": -1, "filename": "apiritif-0.9.7.tar.gz", "has_sig": false, "md5_digest": "82baa3b4904efb81ec69aa12af7644d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29022, "upload_time": "2021-06-15T02:32:35", "upload_time_iso_8601": "2021-06-15T02:32:35.529443Z", "url": "https://files.pythonhosted.org/packages/68/a7/54bca14758a4bc592cf6097a543f03cf3f20da4b2e12ab1679ddbaef9751/apiritif-0.9.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "e1988dcd7bc9118bbad2088db55c4ff8", "sha256": "cd520cc08d3f04467898eb78348f6728177f6108fe9ed1d6f03f0a28f1b5c93c" }, "downloads": -1, "filename": "apiritif-0.9.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e1988dcd7bc9118bbad2088db55c4ff8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35150, "upload_time": "2021-07-06T09:38:12", "upload_time_iso_8601": "2021-07-06T09:38:12.898580Z", "url": "https://files.pythonhosted.org/packages/a2/90/9f40e82d24da8bf5acdd986973e95703da9cc7d82f3490d08a43d8eef059/apiritif-0.9.8-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "cdcce1701a263c4b2b65235cda6d0a73", "sha256": "a99e8862bd8ea45861f78eacfaf20a7b8cd9d9da6b6860dbccdf059d2b9e3480" }, "downloads": -1, "filename": "apiritif-0.9.8.tar.gz", "has_sig": false, "md5_digest": "cdcce1701a263c4b2b65235cda6d0a73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28987, "upload_time": "2021-07-06T09:38:14", "upload_time_iso_8601": "2021-07-06T09:38:14.939781Z", "url": "https://files.pythonhosted.org/packages/79/c4/d479e346ed62ce630e46e35ce7f167e99ae2b7da4b6e43827f63df37d6b8/apiritif-0.9.8.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "c5c49033b5f010630e443d7c15edce4b", "sha256": "e927bda4f5d3a4b3a1cbe3909fd1b66dbe934271f2942ced97e86f2d09bb5667" }, "downloads": -1, "filename": "apiritif-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c5c49033b5f010630e443d7c15edce4b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35747, "upload_time": "2021-09-27T09:19:04", "upload_time_iso_8601": "2021-09-27T09:19:04.435111Z", "url": "https://files.pythonhosted.org/packages/57/e9/4557aa7c64095f2deef1d13a3f3c44d9bdf334d6a227dc4da0128b336d79/apiritif-1.0.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b8275be799821c86b9a425468290d9a9", "sha256": "02a41786e12d6a8b301053b1268df3f513f29726f098330f59ae04e326b93427" }, "downloads": -1, "filename": "apiritif-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b8275be799821c86b9a425468290d9a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32485, "upload_time": "2021-09-27T09:19:06", "upload_time_iso_8601": "2021-09-27T09:19:06.197776Z", "url": "https://files.pythonhosted.org/packages/ca/53/ec1fcadb50293067a8c4f171655c97ab3689ae330c2655e4f40684db7c5d/apiritif-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "d27c44ea600e9717848a80630f47fe37", "sha256": "6945fb8a80a90271b14a7aef01a78f822ae40931749592aeaa1bf70356b7f2d2" }, "downloads": -1, "filename": "apiritif-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d27c44ea600e9717848a80630f47fe37", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35508, "upload_time": "2022-01-26T04:30:50", "upload_time_iso_8601": "2022-01-26T04:30:50.635027Z", "url": "https://files.pythonhosted.org/packages/7a/77/edea47a30ab18ab8994a2762428346692b415e87ba4e79e8ae74ede6298b/apiritif-1.1.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ee3c828b58f896de74f2947734864150", "sha256": "c6b888e80bb791f32851118664a538172cef870d62ea722003794f7ff16b1f4d" }, "downloads": -1, "filename": "apiritif-1.1.0.tar.gz", "has_sig": false, "md5_digest": "ee3c828b58f896de74f2947734864150", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32278, "upload_time": "2022-01-26T04:30:53", "upload_time_iso_8601": "2022-01-26T04:30:53.559833Z", "url": "https://files.pythonhosted.org/packages/08/17/cbf7673cb0b56cf49d168ee0ca06d6ef751ccb910ea7f24a84377fd48e28/apiritif-1.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "f688cd9c8905eb8c1cc3bc57cae2db9b", "sha256": "fcb3dca07965fca85a6860f3cb863edc56cf0abf24305f96c7cf05955424ecef" }, "downloads": -1, "filename": "apiritif-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f688cd9c8905eb8c1cc3bc57cae2db9b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35507, "upload_time": "2022-01-26T13:16:22", "upload_time_iso_8601": "2022-01-26T13:16:22.307170Z", "url": "https://files.pythonhosted.org/packages/10/b5/88d3d1654288a00317a15d7c0989a8768f571933227320fc13ee93259675/apiritif-1.1.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "81d672ce753004e8d00fd223b66d02dd", "sha256": "92acaccf1032b9a442aaac619cffa7ac634cded3c354d7d851caee968695aa7a" }, "downloads": -1, "filename": "apiritif-1.1.1.tar.gz", "has_sig": false, "md5_digest": "81d672ce753004e8d00fd223b66d02dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32270, "upload_time": "2022-01-26T13:16:24", "upload_time_iso_8601": "2022-01-26T13:16:24.047563Z", "url": "https://files.pythonhosted.org/packages/96/a0/182615f92b78ed072ca98bbcb8a2fbb014911c775dba630f29b52de0ee11/apiritif-1.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "178ea56f449998ae22593132e874ec57", "sha256": "04ca2f50f8b7b67974b7a3716fd2942db46fef2059eb4c5e3d350faca6d86f1f" }, "downloads": -1, "filename": "apiritif-1.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "178ea56f449998ae22593132e874ec57", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35494, "upload_time": "2022-01-27T17:24:04", "upload_time_iso_8601": "2022-01-27T17:24:04.337830Z", "url": "https://files.pythonhosted.org/packages/c1/c0/1e14978af69cf2e68245e7dd834e8a85e01425363e06eb6266afe637e1e5/apiritif-1.1.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d1bbbc715c1b1ac62b0ec2d36cfe7770", "sha256": "c97e98f91e5c2dc9dbcc68a58720172a32d183af184c1e425a2fdcb8b6854dcc" }, "downloads": -1, "filename": "apiritif-1.1.2.tar.gz", "has_sig": false, "md5_digest": "d1bbbc715c1b1ac62b0ec2d36cfe7770", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32262, "upload_time": "2022-01-27T17:24:06", "upload_time_iso_8601": "2022-01-27T17:24:06.501931Z", "url": "https://files.pythonhosted.org/packages/26/17/cb687b19adea2ef1acf04edbe7835e51f5dd1e6d6d160d9acd2ad28b2fe0/apiritif-1.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "4300a7d57e26c28155cd00406521a174", "sha256": "d4d7667f056d607dbb9329994899d575283895fff773f6c476d201a67c4743a2" }, "downloads": -1, "filename": "apiritif-1.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4300a7d57e26c28155cd00406521a174", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35506, "upload_time": "2022-02-22T11:21:28", "upload_time_iso_8601": "2022-02-22T11:21:28.515779Z", "url": "https://files.pythonhosted.org/packages/55/c7/7bcab6f87b7bd73f52fa7c0969f9e065e88df4cfc0650c19c1802aa86ac9/apiritif-1.1.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "81ed36b292f254c815302d841c666195", "sha256": "e1bc0700847b72b1b5328f1bde55f3b3e042845576b22cd68a6549dcce0cf442" }, "downloads": -1, "filename": "apiritif-1.1.3.tar.gz", "has_sig": false, "md5_digest": "81ed36b292f254c815302d841c666195", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32252, "upload_time": "2022-02-22T11:21:31", "upload_time_iso_8601": "2022-02-22T11:21:31.146436Z", "url": "https://files.pythonhosted.org/packages/3f/49/1b639130c415badb18aa4cceb9f6ae0af80c7c528b247cc2542b9b746838/apiritif-1.1.3.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4300a7d57e26c28155cd00406521a174", "sha256": "d4d7667f056d607dbb9329994899d575283895fff773f6c476d201a67c4743a2" }, "downloads": -1, "filename": "apiritif-1.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4300a7d57e26c28155cd00406521a174", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35506, "upload_time": "2022-02-22T11:21:28", "upload_time_iso_8601": "2022-02-22T11:21:28.515779Z", "url": "https://files.pythonhosted.org/packages/55/c7/7bcab6f87b7bd73f52fa7c0969f9e065e88df4cfc0650c19c1802aa86ac9/apiritif-1.1.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "81ed36b292f254c815302d841c666195", "sha256": "e1bc0700847b72b1b5328f1bde55f3b3e042845576b22cd68a6549dcce0cf442" }, "downloads": -1, "filename": "apiritif-1.1.3.tar.gz", "has_sig": false, "md5_digest": "81ed36b292f254c815302d841c666195", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32252, "upload_time": "2022-02-22T11:21:31", "upload_time_iso_8601": "2022-02-22T11:21:31.146436Z", "url": "https://files.pythonhosted.org/packages/3f/49/1b639130c415badb18aa4cceb9f6ae0af80c7c528b247cc2542b9b746838/apiritif-1.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }