{ "info": { "author": "Han Bao, Adrienne Karnoski, Robert Bronson, Philip Werner, Genevieve Conty", "author_email": "han.bao@avalara.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6" ], "description": "# Avalara AvaTax Python SDK\n[![Build Status](https://travis-ci.org/avadev/AvaTax-REST-V2-Python-SDK.svg?branch=master)](https://travis-ci.org/avadev/AvaTax-REST-V2-Python-SDK)\n[![PyPI](https://img.shields.io/pypi/v/Avalara.svg)](https://pypi.python.org/pypi/Avalara)\n\nThis GitHub repository is the Python SDK for Avalara's world-class tax service, AvaTax. It uses the AvaTax REST v2 API, which is a fully REST implementation and provides a single client for all AvaTax functionality. For more information about AvaTax REST v2, please visit [Avalara's Developer Network](http://developer.avalara.com/) or view the [online Swagger documentation](https://sandbox-rest.avatax.com/swagger/ui/index.html).\n\n\n## Installation:\n\nInstall simply with pip.\n```pip install Avalara```\n\n**OR**\n\nClone this repository to your local machine.\n```\n$ git clone https://github.com/avadev/AvaTax-REST-V2-Python-SDK.git\n```\nOnce downloaded, cd into the ```AvaTax-REST-V2-Python-SDK``` directory.\n```\n$ cd AvaTax-REST-V2-Python-SDK\n```\nBegin a new virtual environment with Python 3 and activate it.\n```\nAvaTax-REST-V2-Python-SDK $ python3 -m venv ENV\nAvaTax-REST-V2-Python-SDK $ source ENV/bin/activate\n```\n[pip](https://pip.pypa.io/en/stable) install this package as well as the testing set of extras into your virtual enviroment.\n```\n(ENV) AvaTax-REST-V2-Python-SDK $ pip install -e .\n(ENV) AvaTax-REST-V2-Python-SDK $ pip install -e .[testing]\n```\n\n## Usage:\n\n### Create a transaction\n\n\n**Import the AvataxClient from the client module**\n\nFirst thing to do is to import the AvataxClient constructor module to your name space, or your python script.\n\n```\nfrom client import AvataxClient\n```\n\n**Now we are ready to construct a client object**\n\nCreate a new AvaTaxClient object:\n```\n client = AvataxClient('my test app',\n 'ver 0.0',\n 'my test machine',\n 'sandbox')\n```\nThe client constructor takes four string parameters, in squence they are `app_name(required)`, `app_version(required)`, `machine_name(optional)`, and `environment(required)`.\nThe app_name, app_version, machine_name will be used to construct the [Client Header](https://developer.avalara.com/avatax/client-headers/) associated with each call made by this client. It will be returned within the response object to help you keep track of the API calls.\nThe `environment` variable can be either `\"sandbox\"` or `production`, they correspond to the two different environments for AvaTax service.\nIf you are a regular or free trial customer please use `\"production\"`. If you don't have an account, you can sign up for a free trail account on our [developer site](https://developer.avalara.com/avatax/signup/), this will be a production account as well.\nIf you wish to obtain a Sandbox account, please contact your [Customer Account Manager](https://help.avalara.com/Frequently_Asked_Questions/Avalara_AvaTax_FAQ/How_do_I_get_access_to_our_development%2F%2Fsandbox_account%3F)\n\n\n**Ping the service**\n\nNow we have a client object, we can ping the AvaTax REST V2 server to ensure connectivity.\n```\n response = client.ping()\n\n # to view respnse text\n print(response.text())\n\n # to view json version of the response\n print(response.json())\n\n # to view the status code\n print(response.status_code())\n\n # to view the raw response\n print(response.raw())\n```\nNote that the response from all REST calls made using this SDK will be [Request](http://docs.python-requests.org/en/master/user/quickstart/#response-content) object, which contains status code, response text, raw josn, and more information on the respnse.\n\n\n**Add credentials to your client object**\n\nUnlike `ping`, most methods in our REST V2 API requires you to be authenticated in order to associate those information provided by you with your account.\nTo find out if a method requires authentication, visit our [API Reference](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Transactions/) page.\nTo add credential on the current client object:\n```\n client = client.add_credentials('USERNAME/ACCOUNT_ID', 'PASSWORD/LICENSE_KEY')\n```\nThe `add_credential` method will hash your username/password, or account_id/license_key pair and attach to every call made by your client object, meaning you only have to add credential once to each client you prepare to use.\n\nTo verify that you have added a valid credential, simply call the `ping` method again, this time in the response text you should see `\"authenticated\": true`.\n\n\n**To create a transaction using your client object**\n\nNow our client object is authenticated, we can call the create_transaction method which calls the [CreateTransaction API](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Transactions/CreateTransaction/)\n```\n transaction_response = client.create_transaction(tax_document)\n print(transaction_response.text())\n\n tax_document = {\n 'addresses': {'SingleLocation': {'city': 'Irvine',\n 'country': 'US',\n 'line1': '123 Main Street',\n 'postalCode': '92615',\n 'region': 'CA'}},\n 'commit': False,\n 'companyCode': 'DEFAULT',\n 'currencyCode': 'USD',\n 'customerCode': 'ABC',\n 'date': '2017-04-12',\n 'description': 'Yarn',\n 'lines': [{'amount': 100,\n 'description': 'Yarn',\n 'itemCode': 'Y0001',\n 'number': '1',\n 'quantity': 1,\n 'taxCode': 'PS081282'}],\n 'purchaseOrderNo': '2017-04-12-001',\n 'type': 'SalesInvoice'}\n\n``` \nThe create_transaction method takes in a model, in python it's a dictionary type object. Which you will fill out to include all of your transaction information. In this case, we are using the [TransactionModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/TransactionModel/)\nFor information on other models use by AvaTax APIs, visit our information page [here](https://developer.avalara.com/api-reference/avatax/rest/v2/models)\n\n\n### Use other methods\n\nLike our SDKs in other languages, the Python SDK includes all methods offered by the AvaTax REST V2 API. To find a mehtod corresponding to a specific API endpoint, simply visit this [code page](https://github.com/avadev/AvaTax-REST-V2-Python-SDK/blob/master/src/client_methods.py)\nTo learn more about integrating our REST API into your system, visit our [developer guide](https://developer.avalara.com/avatax/dev-guide/getting-started-with-avatax/) that contains information on using the powerful features offered by our API.\n\n\n### Use transaction builder\n\nWe realize that having to format the TransactionModel can be complicated and time consuming, thus we created a tool called Transaction Builder to help you put together a transaction model, and create it!\nFirst import the transaction builder constructor into your name space:\n```from transaction_builder import TransactionBuilder```\n\nThen, let's create a transaction builder object:\n```\n tb = TransactionBuilder(client, \"DEFAULT\", \"SalesInvoice\", \"ABC\")\n```\nThe builder takes four required parameters, in sequence they are\n- The client object\n- Company name(created through AvaTax portal or by calling [CreateCompany API](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Companies/CreateCompanies/))\n- The type of transaction, a [full list](https://developer.avalara.com/api-reference/avatax/rest/v2/models/enums/DocumentType/) of options. \n- The customer code, an unique code identifying the customer that requested this transaction.\n\nNow you are free to add transaction details to this object, by using methods like `with_address`, `with_line`, `with_parameter`.\nFor a fulll list of transaction builder methods available and the parameters they take in, visit the [code page](https://github.com/avadev/AvaTax-REST-V2-Python-SDK/blob/master/src/transaction_builder_methods.py)\nIn the end, you may call the `create` method on your builder object, which will call the CreateTransaction API with the transaction model you have build so far, and return back the response.\n\n\n### Setup Test Credentials\n\nIf you wish to run the integration and unit testings, you must store a pair of credentials in the current enviroment.\nAdd the following to the ```activate``` file in your environment, and restart bash.\nOR simply ```export``` them directly:\n\n```\nexport SANDBOX_USERNAME='your_sandbox_username'\nexport SANDBOX_PASSWORD='your_sandbox_password'\n\n# OR\nSANDBOX_ACCOUNTID='your_sandbox_account_id'\nSANDBOX_LICENSEKEY='your_sandbox_license_key'\n```\nNote: Only *Sandbox credentials* should be used for testing, as the test case will commit/adjust/void dummy transactions on the account to verify functionalities. \n\n\n## Issue or suggestion\n\nUser feedbacks are highly valued here at Avalara, we want to ensure the best experience for every customer using our services. If you have any concern with this SDK or AvaTax in general, please post your queston/suggestion on our [Developer Relation Forum](https://community.avalara.com/avalara/category_sets/developers) as we will reply to you in a timely manner.\nIf you wish to contribute to this SDK, please fork the [repository](https://github.com/avadev/AvaTax-REST-V2-Python-SDK) and submit your pull request from the forked version. We are happy to review your contribution, and merge them if all checks has passed!\n\n\n## Original Contributors\n\n[Han Bao](https://www.linkedin.com/in/hbao2016)\n\n[Philip Werner](https://www.linkedin.com/in/philip-werner-421aa66a)\n\n[Robert Bronson](https://www.linkedin.com/in/robert-bronson)\n\n[Adrienne Karnoski](https://www.linkedin.com/in/adrienne-karnoski)", "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/avadev/AvaTax-REST-V2-Python-SDK", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "Avalara", "package_url": "https://pypi.org/project/Avalara/", "platform": "", "project_url": "https://pypi.org/project/Avalara/", "project_urls": { "Homepage": "https://github.com/avadev/AvaTax-REST-V2-Python-SDK" }, "release_url": "https://pypi.org/project/Avalara/19.9.1.1/", "requires_dist": null, "requires_python": "", "summary": "Avalara Tax Python SDK.", "version": "19.9.1.1" }, "last_serial": 5973873, "releases": { "18.10.3": [ { "comment_text": "", "digests": { "md5": "9078da0cd41bb699eb65996009c8d82f", "sha256": "fb8b749ba7f089d8a4f11b0c3a62088e661c0188d0fc0e654aaaea81128cfee3" }, "downloads": -1, "filename": "Avalara-18.10.3.tar.gz", "has_sig": false, "md5_digest": "9078da0cd41bb699eb65996009c8d82f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58158, "upload_time": "2018-10-30T17:21:01", "url": "https://files.pythonhosted.org/packages/e4/0d/0773969975e23c9d0d1e283ca3d502a0a6f9deef479297e0398e0482421b/Avalara-18.10.3.tar.gz" } ], "18.12.0": [ { "comment_text": "", "digests": { "md5": "cacdefc01f01de9aa613be76b9fd8358", "sha256": "679061e54997113f385c1925d358e55cfa95dda65bfd462be9a48b51c8536284" }, "downloads": -1, "filename": "Avalara-18.12.0.tar.gz", "has_sig": false, "md5_digest": "cacdefc01f01de9aa613be76b9fd8358", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59608, "upload_time": "2019-01-15T01:22:18", "url": "https://files.pythonhosted.org/packages/b7/8e/8db414c54a2f3abe28778658cfa0d6b0cdee862abf524dbd36a1dad64506/Avalara-18.12.0.tar.gz" } ], "18.2.0": [ { "comment_text": "", "digests": { "md5": "04e30a386917036364d8877d38de035d", "sha256": "5cb723bc9e5b7e23e43f0060f260c10d06471affc4481dbd49be58f0f1d2f765" }, "downloads": -1, "filename": "Avalara-18.2.0.tar.gz", "has_sig": false, "md5_digest": "04e30a386917036364d8877d38de035d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46237, "upload_time": "2018-03-20T23:12:11", "url": "https://files.pythonhosted.org/packages/56/1c/aa4e2524bb6d78011b03d5f03aee0ba934968cbc25b422d65b8c0985856a/Avalara-18.2.0.tar.gz" } ], "18.2.1": [ { "comment_text": "", "digests": { "md5": "d33fe75088516738f3df80e7f40aef0e", "sha256": "262c635d90f848d64401034b39bdcadc95c9bb88ac862520c7f6681475ca00fe" }, "downloads": -1, "filename": "Avalara-18.2.1.tar.gz", "has_sig": false, "md5_digest": "d33fe75088516738f3df80e7f40aef0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46258, "upload_time": "2018-03-21T18:58:20", "url": "https://files.pythonhosted.org/packages/9c/52/16c7c613f792d1113fdd4c30acebc10b1b2537168778f9ad975811924fcc/Avalara-18.2.1.tar.gz" } ], "18.3.0": [ { "comment_text": "", "digests": { "md5": "59fdcac0a8c8e1871529f9afb0fe2cb7", "sha256": "1f7de7300fc5c27446f10d5faab9eb7b5043220d7605ef2a19835e1311ae27ea" }, "downloads": -1, "filename": "Avalara-18.3.0.tar.gz", "has_sig": false, "md5_digest": "59fdcac0a8c8e1871529f9afb0fe2cb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47499, "upload_time": "2018-03-30T18:25:25", "url": "https://files.pythonhosted.org/packages/6f/b3/b24a2210bfb82a8ffd8e8916903bfe278225ae68d44954c1125c6816c56b/Avalara-18.3.0.tar.gz" } ], "18.4.0": [ { "comment_text": "", "digests": { "md5": "a1b9b5ed8cf723d330d5e6874d9ecf3c", "sha256": "ba8bf1be854336ee2dc8f3bf722aa53099934a190ca9e55903743d0d9923153a" }, "downloads": -1, "filename": "Avalara-18.4.0.tar.gz", "has_sig": false, "md5_digest": "a1b9b5ed8cf723d330d5e6874d9ecf3c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50263, "upload_time": "2018-04-26T23:23:22", "url": "https://files.pythonhosted.org/packages/10/a6/965012470e9b105e99b3bc85879f403e320072ce078c76e54548a3ac8084/Avalara-18.4.0.tar.gz" } ], "18.5.1": [ { "comment_text": "", "digests": { "md5": "17cf8aa778c81ee19de5df4c36079b31", "sha256": "d88e5c1b958e7e7018cfc5c8c7a824ae8b30f045def0252af72a52a28260efe2" }, "downloads": -1, "filename": "Avalara-18.5.1.tar.gz", "has_sig": false, "md5_digest": "17cf8aa778c81ee19de5df4c36079b31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50963, "upload_time": "2018-05-30T20:37:21", "url": "https://files.pythonhosted.org/packages/72/23/586f7230a6fc31093abbf736588911fc62b4dbd6e25c1bb7b4abd9d74de7/Avalara-18.5.1.tar.gz" } ], "18.5.2": [ { "comment_text": "", "digests": { "md5": "a29b1a119ab93af4fbf7b0b44bdc5414", "sha256": "e991bb714c1cb46c97a691f0dabe08db3bd6ec80263481c783024e6837fbb75e" }, "downloads": -1, "filename": "Avalara-18.5.2.tar.gz", "has_sig": false, "md5_digest": "a29b1a119ab93af4fbf7b0b44bdc5414", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55330, "upload_time": "2018-06-07T17:29:49", "url": "https://files.pythonhosted.org/packages/8f/8a/e5450834d121741ca2db1329e19dfd6256127f2c8df1553d1f5b3a6e8eb8/Avalara-18.5.2.tar.gz" } ], "18.9.0": [ { "comment_text": "", "digests": { "md5": "cbcd38a62a57697284bfaa68a0c3ee3d", "sha256": "e56eb71f97dd4b47d9976cc7c2fd31001b17756e1652019bea67e943d2f6b9c6" }, "downloads": -1, "filename": "Avalara-18.9.0.tar.gz", "has_sig": false, "md5_digest": "cbcd38a62a57697284bfaa68a0c3ee3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58155, "upload_time": "2018-10-16T23:13:29", "url": "https://files.pythonhosted.org/packages/12/f0/5661d0435c6af0f8743f7a80d2fdf81c5466ddeaea1ccbe4ec2335cb5168/Avalara-18.9.0.tar.gz" } ], "19.1.1": [ { "comment_text": "", "digests": { "md5": "8d2855e65c54b27ad73e472367a735e6", "sha256": "b48104c1b80411731512717833b2ed9ffddf0dd7a9b57c6751a378107f26817f" }, "downloads": -1, "filename": "Avalara-19.1.1.tar.gz", "has_sig": false, "md5_digest": "8d2855e65c54b27ad73e472367a735e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59651, "upload_time": "2019-02-05T21:37:43", "url": "https://files.pythonhosted.org/packages/3c/14/6e1927c2ac57d6b8765ad80303f6eaf981d95912baaef666061c8141e387/Avalara-19.1.1.tar.gz" } ], "19.2.0": [ { "comment_text": "", "digests": { "md5": "14a64074bb0868136aa3c06ae2f9cbf4", "sha256": "371a47ad1d294d7cb8c8ff7fa34e998c54e1cdde2881f0dba60cea7c6fe8abcf" }, "downloads": -1, "filename": "Avalara-19.2.0.tar.gz", "has_sig": false, "md5_digest": "14a64074bb0868136aa3c06ae2f9cbf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60582, "upload_time": "2019-03-04T23:36:03", "url": "https://files.pythonhosted.org/packages/ec/36/6803107bc2f988bbb3306112e24f785a7650959f7fbbf88da0d194c5dc31/Avalara-19.2.0.tar.gz" } ], "19.3.0": [ { "comment_text": "", "digests": { "md5": "62fcd869eb6dad8f49784187ffe7296e", "sha256": "fe03fd51efe371515c51636983a124de2b8fff7081063462560488ef762dd0dd" }, "downloads": -1, "filename": "Avalara-19.3.0.tar.gz", "has_sig": false, "md5_digest": "62fcd869eb6dad8f49784187ffe7296e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59865, "upload_time": "2019-03-25T23:39:20", "url": "https://files.pythonhosted.org/packages/36/7a/0a73f4db629916c6a536242109d1a9e2acb28b1bab6db228b1c2e1b79440/Avalara-19.3.0.tar.gz" } ], "19.4.0": [ { "comment_text": "", "digests": { "md5": "e12e930d1633c55dbd7e028875148db4", "sha256": "0bb052e512032cdc56d04aab3fca2e1e10b519a82ed41f88088c7705fa32f5de" }, "downloads": -1, "filename": "Avalara-19.4.0.tar.gz", "has_sig": false, "md5_digest": "e12e930d1633c55dbd7e028875148db4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62120, "upload_time": "2019-04-16T22:39:30", "url": "https://files.pythonhosted.org/packages/8c/dd/f3482bc90c8e2fd955d5962fad251b8b6f7fb261508ec8230f5e325eab75/Avalara-19.4.0.tar.gz" } ], "19.5.0": [ { "comment_text": "", "digests": { "md5": "36ded2288578f69530c4714f35062e6a", "sha256": "ed5ce18a7a787652e71f7997ab5aaead2aeec27eccdd30f5793bc8e627427591" }, "downloads": -1, "filename": "Avalara-19.5.0.tar.gz", "has_sig": false, "md5_digest": "36ded2288578f69530c4714f35062e6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56251, "upload_time": "2019-05-20T22:44:51", "url": "https://files.pythonhosted.org/packages/7f/93/30bfafd51648aa937dd05015920a49a1f8bd74facb7cb2cea695fd5b0660/Avalara-19.5.0.tar.gz" } ], "19.6.0": [ { "comment_text": "", "digests": { "md5": "05ee26b8fe89c14517111b746f975970", "sha256": "c66dbec5950e11f1e5c936958bf4d4574bb0fee67b8195c70ef668110b5fe33f" }, "downloads": -1, "filename": "Avalara-19.6.0.tar.gz", "has_sig": false, "md5_digest": "05ee26b8fe89c14517111b746f975970", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56462, "upload_time": "2019-06-18T20:59:30", "url": "https://files.pythonhosted.org/packages/bf/28/9f397ec9267b9a469ba77122b56f08e0f43b346aeeedd0a549943931b8c8/Avalara-19.6.0.tar.gz" } ], "19.7.0": [ { "comment_text": "", "digests": { "md5": "88e5dc952244ff75bcc2999388b2abe9", "sha256": "6e98ef12956735d953c58729a5d3256a7b58cdcbf3fdd29ee8ce5fb38dc24fd6" }, "downloads": -1, "filename": "Avalara-19.7.0.tar.gz", "has_sig": false, "md5_digest": "88e5dc952244ff75bcc2999388b2abe9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57945, "upload_time": "2019-07-16T21:46:17", "url": "https://files.pythonhosted.org/packages/be/9c/ea1709143cf82b00ce09d0caa899d15886c16ec4c6d34193592df10a8ebd/Avalara-19.7.0.tar.gz" } ], "19.8.0": [ { "comment_text": "", "digests": { "md5": "d547c69e0d006c2e8bec1850b48af8b1", "sha256": "a615c57abdca39c9189dbe228309843efeef8c1aa63528c7921ebbc31fd2341a" }, "downloads": -1, "filename": "Avalara-19.8.0.tar.gz", "has_sig": false, "md5_digest": "d547c69e0d006c2e8bec1850b48af8b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65552, "upload_time": "2019-08-15T17:43:39", "url": "https://files.pythonhosted.org/packages/a1/6b/67d624f0348495c884c32fd2895a795682a60e2b1fb9c1dc727171efc8aa/Avalara-19.8.0.tar.gz" } ], "19.9.0": [ { "comment_text": "", "digests": { "md5": "788edd622fec52fd2ec36723df928ded", "sha256": "5ca47e01bcf3d9b5eda18fc153d93ae9db76e6a44f7df1abc79f5c976f576d43" }, "downloads": -1, "filename": "Avalara-19.9.0.tar.gz", "has_sig": false, "md5_digest": "788edd622fec52fd2ec36723df928ded", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58918, "upload_time": "2019-10-01T18:02:26", "url": "https://files.pythonhosted.org/packages/f5/3c/be424612dd1f992c3e25c6c403062eea11cba5645c0902a6bb34fd8749b3/Avalara-19.9.0.tar.gz" } ], "19.9.1.1": [ { "comment_text": "", "digests": { "md5": "154722e5bdfbdd37399558660dae3c96", "sha256": "7ad945a4a3f7c112d0369de0962c51ad33f2232cb7926ee6cd5ba77802b0a5d4" }, "downloads": -1, "filename": "Avalara-19.9.1.1.tar.gz", "has_sig": false, "md5_digest": "154722e5bdfbdd37399558660dae3c96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59135, "upload_time": "2019-10-14T22:46:51", "url": "https://files.pythonhosted.org/packages/6c/08/99abad526d8344c866cbb76b4438adb6793661239aa0b4a7ce4f6ad8ab0b/Avalara-19.9.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "154722e5bdfbdd37399558660dae3c96", "sha256": "7ad945a4a3f7c112d0369de0962c51ad33f2232cb7926ee6cd5ba77802b0a5d4" }, "downloads": -1, "filename": "Avalara-19.9.1.1.tar.gz", "has_sig": false, "md5_digest": "154722e5bdfbdd37399558660dae3c96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59135, "upload_time": "2019-10-14T22:46:51", "url": "https://files.pythonhosted.org/packages/6c/08/99abad526d8344c866cbb76b4438adb6793661239aa0b4a7ce4f6ad8ab0b/Avalara-19.9.1.1.tar.gz" } ] }