{ "info": { "author": "Hakan Halil", "author_email": "hhalil@melontech.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# \n# Econt Package - Python 2.7/3.3/3.5-3.6/3.7\n# URL\n**PyPI** : https://pypi.org/project/econt-test/\n\n**GitLab** : https://gitlab.melontech.com/melontech/econt\n\n# Installation\n### Make sure you have pip and virtualenv installed\n* For **Python 2.7**\n```terminal\n$ sudo apt install python2.7 python-pip\n```\n```terminal\n$ sudo pip install virtualenv \n```\n* For **Python 3.X**\n```terminal\n$ sudo apt-get install python3-pip\n```\n```terminal\n$ sudo pip install virtualenv \n```\n## Using PyPI\n\n* Create the virtual environment\n```terminal\n$ virtualenv envname\n```\n\n* Activate the virtual environment\n\n```terminal\n$ source envname/bin/activate\n```\n\n* Install the package\n\n```commandline\n$ pip install econt-test\n```\n\n## Using the repository\n* Clone the repository\n\n```terminal\n$ git clone git@gitlab.melontech.com:melontech/econt.git\n```\n* Change the current directory\n\n```terminal\n$ cd econt\n```\n\n* Create the virtual environment\n\n```terminal\n$ virtualenv envname\n```\n* Activate the virtual environment\n\n```terminal\n$ source envname/bin/activate\n```\n* Install the libraries and packages used in the code\n\n```terminal\n$ pip install -r requirements.txt\n```\n\n## Econt class\n\n### `init(username, password, demo=True)`\nThe constructor takes **username**, **password** and **demo** as arguments.\n\nIf **demo** is **True**, the class uses the demo urls for Econt's services and parcels\n\nIf **demo** is **False**, the class uses the real urls for Econt's services and parcels\n\n\n### `request(url, xml)`\nThe method takes a URL and an XML as arguments and sends an XML request to the given URL.\n\nThe response from the Econt server is then converted to a Python dictionary and returned to the user.\n```python\nresponse = {'status':..., 'message': ..., 'data': ...}\n```\nEvery method of the class uses `request(url, xml)` so every response is of the above-mentioned format.\n\nThe `data` key holds the desired information, but if there are any ERRORS it corresponds to `None` \n\nThe `status` key holds `StatusCode` which consists of 6 different values.\n\nThe `message` key holds **information** about the **error** if there is any, otherwise it is `OK`\n\n\n### `xml_builder(data, root_element='request', authenticate=False)`\nThe method takes **data**, **root_element**, and **authenticate** as arguments in [JSON](https://www.w3schools.com/js/js_json_objects.asp), string, and bool format respectively.\n\nWhen **authenticate** is **False**, the given JSON is converted to an XML and the XML is returned to the user.\n\nWhen **authenticate** is **True**, the user's username and password are added to the JSON, then converted to XML, and returned to the user.\n\n\n### `get_user_credentials()`\nThe method returns the **username** and **password** of the user wrapped in a **client** key as a python dict.\n\n\n### `validate_address(address_json)`\nThe method takes a JSON and sends an XML request to the server to decide whether the address is valid.\n\n\n### `register(data)`\nThe method takes a JSON and sends an XML request to the server to create an Econt account.\n\n\n### `retrieve_profile()`\nThe method takes sends an XML request to the server to retrieve the profile information of the current user. \n\n\n### `get_offices()`\nThe method returns information about all of the Econt offices in the world.\n\n\n### `cancel_shipment(shipment_number)`\nThe method takes an **int** as argument and sends an XML request to the server to cancel the shipment corresponding to that number.\n\n\n### `get_cities()`\nThe method returns a JSON containing all the cities with Econt offices and their details.\n\n\n### `get_streets()`\nThe method returns a JSON containing all the streets with Econt offices and their details.\n\n\n### `get_streets_by_city(city_post_code)`\nThe method takes an **int** or a **str** as an argument and returns a JSON containing the English and Bulgarian names of all the streets in the given city_post_code area.\n\n\n### `get_offices_by_city(city_post_code)`\nThe method takes an **int** or a **str** as an argument and returns a JSON containing all the offices in the given city_post_code area.\n\n\n### `get_countries()`\nThe method returns a JSON containing all the countries Econt operates in.\n\n\n### `get_seller_addresses()`\nThe method returns the addresses of the user\n\n\n### `get_quarters()`\nThe method returns a JSON containing all the quarters with Econt offices and their details.\n\n\n### `get_quarters_by_post_code(city_post_code)`\nThe method takes a **str** or an **int** as argument and returns a JSON containing all the quarters in the given **city_post_code** area and their details.\n\n\n### `get_regions()`\nThe method returns a JSON containing all the regions in every city and their details.\n\n\n### `get_zones()`\nThe method returns a JSON containing all the zones in every city and their details.\n\n\n### `__build_shipment(sender_data, receiver_data, shipment_data, services_data, payment_data, instructions_data, validate=False, only_calculate=False, process_all_parcels=False, error_email='')`\nAn internal method to create_shipment taking six **dicts**, three optional **bools**, and an optional **str** as arguments.\n\nThe optional arguments are used when this method is called from the wrappers below.\n\n\n### `create_shipment(sender_data, receiver_data, shipment_data, services_data, payment_data, instructions_data, error_email='')`\nThe method takes six **dicts** and an optional **str** as arguments.\n\nIt generates a shipment and returns information about the created shipment.\n\nIf **error_email** is provided any errors that have occurred during the request are sent to the given email address.\n\n\n### `calculate_shipment_price(sender_data, receiver_data, shipment_data, services_data, payment_data, instructions_data, error_email='')`\nThe method takes six **dicts** and an optional **str** as arguments.\n\nIt returns information about the price of the shipment without generating a cargo.\n\nIf **error_email** is provided any errors that have occurred during the request are sent to the given email address.\n\n\n### `validate_shipment(sender_data, receiver_data, shipment_data, services_data, payment_data, instructions_data, error_email='')`\nThe method takes six **dicts** and an optional **str** as arguments.\n\nIt performs a check-up on the data that is provided without generating a cargo.\n\nIf **error_email** is provided any errors that have occurred during the request are sent to the given email address.\n\n\n### `get_clients()`\nThe method returns a JSON containing information about the clients of the user.\n\n\n### `validate_cd_agreement(name, cd_no)`\nThe function takes two **strs** as arguments and returns a JSON which tells whether the Punitive Decree agreement (given by **cd_no**) of the user (given by **name**) is valid.\n\n\n### `get_postboxes(city_name='', quarter_name='')`\nThe method takes two optional parameters as **strs**, gets information about all the postboxes while filtering them according to the parameters if applicable and returns them as a JSON.\n\n\n### `retrieve_shipment_info(shipment_ids, full_tracking=False)`\nThe method takes a **list** of shipment ids and an optional **bool** as arguments and returns information about the given shipment(s)\n\n\n### `get_post_tariff()`\nThe method takes no arguments and returns information about the current post tariff.\n\n\n## StatusCode class\nThere 6 class variables in here.\nEach variable indicates the following :\n```python\nSTATUS_OK = 0\nCONNECTION_ERROR = 1\nINVALID_URL_ERROR = 2\nEMPTY_URL_ERROR = 3\nXML_PARSE_ERROR = 4\nECONT_API_XML_ERROR = 5\nUNEXPECTED_ERROR = 6\n```\nThese variables are used in the `request` method to indicate the status of the response from Econt.\n\n## RequestType class\nThis class holds all of the request types that were implemented by us.\n```python\nACCESS_CLIENTS = 'access_clients'\nCHECK_ADDRESS = 'check_address'\nE_ECONT_REGISTRATION = 'e_econt_registration'\nPROFILE = 'profile'\nCANCEL_SHIPMENTS = 'cancel_shipments'\nSHIPPING = 'shipping'\nSHIPMENTS = 'shipments'\nSTREETS = 'cities_streets'\nOFFICES = 'offices'\nCOUNTRIES = 'countries'\nCITIES = 'cities'\nQUARTERS = 'cities_quarters'\nREGIONS = 'cities_regions'\nZONES = 'cities_zones'\nCD_AGREEMENT = 'check_cd_agreement'\nPOSTBOXES = 'post_boxes'\n```\n\n# Examples\n\n#### request(url, xml)\n**input**\n\n```javascript\nurl=''\nxml=''\n```\n**output**\n```javascript\n{'status': 3, 'message': 'Please provide http:// or https://!'}\n```\n#### create_shipment\n```python\n>>> from econt.api import Econt\n>>> SENDER_DATA = {\n 'city_en': 'Ruse',\n 'post_code': '7000',\n 'office_code': '7000',\n 'name': '\u0418\u0432\u0430\u043d \u0418\u0432\u0430\u043d\u043e\u0432',\n 'phone_num': '08888888888'\n}\n>>> RECEIVER_DATA = {\n 'city_en': 'Sofia',\n 'post_code': '1505',\n 'name': '\u041f\u0435\u0442\u044a\u0440 \u0418\u0432\u0430\u043d\u043e\u0432',\n 'phone_num': '08888888888',\n 'street': '\u0421\u043b\u0430\u0432\u044f\u043d\u0441\u043a\u0430',\n 'street_num': '16'\n}\n>>> SHIPMENT_DATA = {\n 'envelope_num': '111111,22222,3332342',\n 'shipment_type': 'PACK',\n 'description': 'description of the content content',\n 'pack_count': '3',\n 'weight': '1',\n 'tariff_sub_code': 'OFFICE_DOOR',\n 'pay_after_accept': '1',\n 'pay_after_test': '0'\n}\n>>> SERVICES_DATA = {\n 'dc': 'ON',\n 'oc': '44.99',\n 'cd': '44.99',\n 'cd_currency': 'BGN',\n 'cd_pay_options': {\n 'name': '\u0418\u0432\u0430\u043d \u0418\u0432\u0430\u043d\u043e\u0432',\n 'phone': '08888888888',\n 'money_transfer': '0',\n 'method': 'door',\n 'city': 'Sofia',\n 'post_code': '1505',\n 'quarter': 'gk Suhata Reka',\n 'street': 'bul. Botevgradsko Shose',\n 'street_num': '49'\n }\n}\n>>> PAYMENT_DATA = {\n 'side': 'SENDER',\n 'method': 'CASH'\n}\n>>> INSTRUCTIONS_DATA = {\n 'e': {\n 'type': 'return',\n 'delivery_fail_action': 'return_to_office',\n 'return_name': '\u041c\u0430\u0440\u0438\u043d \u041c\u0430\u0440\u0438\u043d\u043e\u0432',\n 'return_phone': '088888888',\n 'return_email': 'ddd@ddd.dd',\n 'return_city': '\u0420\u0443\u0441\u0435',\n 'return_post_code': '7000',\n 'return_office_code': '7004',\n 'reject_delivery_payment_side': 'receiver',\n 'reject_return_payment_side': 'sender'\n }\n}\n\n>>> service = Econt('demo', 'demo')\n>>> result = service.create_shipment(SENDER_DATA, RECEIVER_DATA, SHIPMENT_DATA,\nSERVICES_DATA,PAYMENT_DATA, INSTRUCTIONS_DATA)\n>>> print(result)\n{\n 'status': 0,\n 'message': 'OK',\n 'data': {\n 'result': OrderedDict([('loading_id', '2018090000003116'), ('loading_num', '1051601425135'),\n ('courier_request_id', None), ('delivery_date', '2018-09-12'),\n ('loading_price', OrderedDict([('C', '6.3'), ('DC', '3.5'),\n ('OC', '0.11'), ('CD', '1.08'), ('total', '10.99'), ('sender_total', '10.99'),\n ('receiver_total', '0'), ('other_total', '0'), ('currency', '\u043b\u0432'),\n ('currency_code', 'BGN')])), ('loading_discount', None),\n ('CD_percent', '2.4'),\n ('pdf_url', 'http://demo.econt.com/ee/api_export.php?exportMethod=printLoading&loading_num=1051601425135&_key=eda82e9392910a376c4a53102d5390381ce5dcd7&'),\n ('return_reason', None), ('prev_parcel_num', None), ('next_parcels', None)]),\n 'pdf': OrderedDict([('blank_yes', 'http://demo.econt.com/e-econt/api/api_pdf_shipment.php?user=demo&print_media=template&nums[]=1051601425135'),\n ('blank_no', 'http://demo.econt.com/e-econt/api/api_pdf_shipment.php?user=demo&print_media=double&nums[]=1051601425135')])\n }\n}\n>>> url = result['data']['pdf']['blank_yes']\n# if you go to this url on your web browser you will see this pdf file\n```\nhttp://demo.econt.com/e-econt/api/api_pdf_shipment.php?user=demo&print_media=template&nums[]=1051601425135\n#### xml_builder(data, root_element='request', authenticate=False)\n**input**\n\n```javascript\ndata={'city': 'Sofia', 'post_code': '1113','street': 'Kosta Lulchev','street_num': '20', 'street_et': '3', }\nauthenticate=True\n```\n**output**\n```javascript\n\n\n Sofia\n 1113\n Kosta Lulchev\n 20\n 3\n \n demo\n demo\n \n\n```\n#### get_user_credentials()\n**input**\n\n```javascript\nNone\n```\n**output**\n```javascript\n{'client': {'username': 'demo','password': 'demo'}}\n\n```\n#### validate_address(address_json)\n**input**\n\n```javascript\naddress_json={'city': 'Sofia', 'post_code': '1113', 'street': Kosta Lulchev', 'street_num': '20', 'street_et': '3'}\n```\n**output**\n```javascript\n{'status': 0, 'message': ''}\n```\n\n# Testing\nTo test the function with the cases given in the **tests** simply run as following in the command line:\n```python\npython testrunner.py\n```\nThe test cases of each method of the **Econt class** collected in the **tests** folder will be run. An **OK** message should be returned to the console.\n\n**get_user_credentials** method is tested in the **api.py** with the help of a **doctest**.\n\n# Contribution\nIf you wish to contribute to this project and make changes, feel free to do so by branching master and posting a merge request later on.\n\nShould any problem arise, you can always contact us at\n\n> hhalil@melontech.com\n\n> ehaliloglu@melontech.com\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.melontech.com/melontech/econt.git", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "econt-test", "package_url": "https://pypi.org/project/econt-test/", "platform": "", "project_url": "https://pypi.org/project/econt-test/", "project_urls": { "Homepage": "https://gitlab.melontech.com/melontech/econt.git" }, "release_url": "https://pypi.org/project/econt-test/0.1.0/", "requires_dist": [ "dicttoxml (~=1.7.4)", "lxml (~=4.2.5)", "nested-lookup (~=0.1.5)", "requests (~=2.18.4)", "unittest-xml (~=0.2.2)", "xmltodict (~=0.11.0)", "six (~=1.11.0)" ], "requires_python": "", "summary": "Integrating Econt API using Python", "version": "0.1.0" }, "last_serial": 4295741, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "17c4f17172b8aedd522852f9df0a49a9", "sha256": "57d854e167c67d19da4b2e8f92551952180f44bc8a996932eb537fbbfe6e12da" }, "downloads": -1, "filename": "econt_test-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "17c4f17172b8aedd522852f9df0a49a9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41581, "upload_time": "2018-09-19T11:14:23", "url": "https://files.pythonhosted.org/packages/ab/1a/a8dfa7dd7f75996a68cd7c1b2c294f2838903047619688ebe35c21e12a53/econt_test-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5423f0ca5f4ea21b0f9c52e782a2fbed", "sha256": "762b43e38802b0f3331c7e60bff4552015fb242212a68c94283aa26616f1f1e8" }, "downloads": -1, "filename": "econt_test-0.0.1.tar.gz", "has_sig": false, "md5_digest": "5423f0ca5f4ea21b0f9c52e782a2fbed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29545, "upload_time": "2018-09-19T11:14:25", "url": "https://files.pythonhosted.org/packages/de/7c/421cb9d7a79c3dca5d886a8f8f43991df645445844305b01a2557eecffa8/econt_test-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "719ad3763d20b9f80ad480e4a1feea69", "sha256": "7ec819269bd7b33d7871300a0498ba3d10a8bac31e2baef6c0eb5868b6e26f32" }, "downloads": -1, "filename": "econt_test-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "719ad3763d20b9f80ad480e4a1feea69", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37454, "upload_time": "2018-09-21T09:17:29", "url": "https://files.pythonhosted.org/packages/00/9e/1ecb286487fa416ae9960b66468a6e620e1f13ff3be07d6e30f7c0a28432/econt_test-0.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b18876cc8bb47c8e3001d17407402de", "sha256": "f9ae464ee2c513353db9e0720e8515f453d43c5301b7fb9d7b0cbcf3362a97d2" }, "downloads": -1, "filename": "econt_test-0.0.10.tar.gz", "has_sig": false, "md5_digest": "3b18876cc8bb47c8e3001d17407402de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30063, "upload_time": "2018-09-21T09:17:30", "url": "https://files.pythonhosted.org/packages/7d/77/2b85f4957fea8751b349836fe08ade8f4e9afc44236847b016674028d645/econt_test-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "ad1a6343e65ab5acb765257d4117a5bc", "sha256": "0c844d586f01a5f3b27ce47ed2e2ee48605043821f9c8422ad0844cf977b857d" }, "downloads": -1, "filename": "econt_test-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "ad1a6343e65ab5acb765257d4117a5bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37421, "upload_time": "2018-09-21T09:25:05", "url": "https://files.pythonhosted.org/packages/76/24/969093dae2869b49e223ffdeb50f51a3586741d80bcc4d9fc88d9adaeb59/econt_test-0.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f961e90152ea166069b26f645efa52ad", "sha256": "5b21903cec7ecae4f1b683f5dbe3f2113245e7c9bc1054552171e726c28cde05" }, "downloads": -1, "filename": "econt_test-0.0.11.tar.gz", "has_sig": false, "md5_digest": "f961e90152ea166069b26f645efa52ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29985, "upload_time": "2018-09-21T09:25:07", "url": "https://files.pythonhosted.org/packages/b2/30/eeccb410c78bb8221766c13d3f0420a55146736ce4bd72726f3478597b0b/econt_test-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "e431ff9bfd7b94808f797125ff010142", "sha256": "843d34ff8b640a8228fda3904ad0356cf1ca31946b91a60cc75b85e989f0acd2" }, "downloads": -1, "filename": "econt_test-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "e431ff9bfd7b94808f797125ff010142", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37420, "upload_time": "2018-09-21T09:40:10", "url": "https://files.pythonhosted.org/packages/ea/ff/36d7e7f633a0823e02f8a70fcaffea05ed810911be400b62997973b59f15/econt_test-0.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc96f6b3bf77f4be07421c778fddda58", "sha256": "80f4f8132c21bcbf14e3417765dd60f0b5a4451205e21e455729994837697876" }, "downloads": -1, "filename": "econt_test-0.0.12.tar.gz", "has_sig": false, "md5_digest": "cc96f6b3bf77f4be07421c778fddda58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29991, "upload_time": "2018-09-21T09:40:12", "url": "https://files.pythonhosted.org/packages/11/61/05640db1eb59bc6d9d1ef3ce92c55ccbec2e592c45baebaffa6856308edb/econt_test-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "6f0b17269cc7278bd8cfd69ec44fe7cd", "sha256": "9b8355267a42095f7b8d5fa6d638044530380fbe91d6db6ef8129e19da3f33a4" }, "downloads": -1, "filename": "econt_test-0.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "6f0b17269cc7278bd8cfd69ec44fe7cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37421, "upload_time": "2018-09-21T09:47:52", "url": "https://files.pythonhosted.org/packages/e9/a2/71c852ccbd328cd52d46281b7fc470480a9706205bb228b94ed8081d65d5/econt_test-0.0.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "07ac4360f24043b09fc7e60011127ddd", "sha256": "60808ba93b4ea79347ea8bb2d7f9344cf1ab274e940af55976ed73e5f4aa6e48" }, "downloads": -1, "filename": "econt_test-0.0.13.tar.gz", "has_sig": false, "md5_digest": "07ac4360f24043b09fc7e60011127ddd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29999, "upload_time": "2018-09-21T09:47:55", "url": "https://files.pythonhosted.org/packages/38/ff/1ef7dbdfcff99df1d0ad26e3f9063a034efe09f2c85e63a3ff79ca0c8bd9/econt_test-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "60000e41904cb6fdf145402f3dc0e6a6", "sha256": "7863a334a76666cee37385801e4d2bd4b11143979a3344bf1b0d81c0afa72891" }, "downloads": -1, "filename": "econt_test-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "60000e41904cb6fdf145402f3dc0e6a6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37421, "upload_time": "2018-09-21T10:09:38", "url": "https://files.pythonhosted.org/packages/73/96/166d92243d9e155d4835c7108615c9b6634e27489bee66553db898c3579e/econt_test-0.0.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3dd9cb77ef9c72168fd3e8c7eaeb1c3d", "sha256": "42afa50b0f08e38c81e690cb50fb4ab3423ea29f9a6a9532746844c72d0ecf22" }, "downloads": -1, "filename": "econt_test-0.0.14.tar.gz", "has_sig": false, "md5_digest": "3dd9cb77ef9c72168fd3e8c7eaeb1c3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30030, "upload_time": "2018-09-21T10:09:40", "url": "https://files.pythonhosted.org/packages/39/65/7e4f56d526b835a36513200bb0dd05f0deb74b3e2a93737556683079bdfa/econt_test-0.0.14.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "c86fbddb30c401d3d9a8ca252fc35648", "sha256": "5fae12a3c39856fd59cc5feaa8aed4445b6a784e9f8e0bd33e90cc58a6c945cc" }, "downloads": -1, "filename": "econt_test-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c86fbddb30c401d3d9a8ca252fc35648", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41594, "upload_time": "2018-09-19T11:25:25", "url": "https://files.pythonhosted.org/packages/8c/7f/049d5e50ced413ed49d8080cd9013ab67aa0e42f7ae46f7949de0d3a8cc8/econt_test-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e312dd3ce37a26124e079e42e3ff4797", "sha256": "a690d4332b73cc476d3a3bcf7223c9da3a21042dd0e10d65daf9a99ae90be3bd" }, "downloads": -1, "filename": "econt_test-0.0.2.tar.gz", "has_sig": false, "md5_digest": "e312dd3ce37a26124e079e42e3ff4797", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29566, "upload_time": "2018-09-19T11:25:27", "url": "https://files.pythonhosted.org/packages/6f/71/25b2faa4cf9fe4a6535a8c551c031523e1cc4caa33074b4b2e0c9bed2341/econt_test-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "6073251a804228b201a5de6fec40e773", "sha256": "f23be3bee3344f338d8c0dcbb4fdfbc186fdaabe44ec02002b62db7b5b7f869c" }, "downloads": -1, "filename": "econt_test-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "6073251a804228b201a5de6fec40e773", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41598, "upload_time": "2018-09-19T12:17:18", "url": "https://files.pythonhosted.org/packages/12/f5/eb190e340182e13f054d583d45c0aa532faf814e1234b04f7c0bcd9ab323/econt_test-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "133a7b0984ed8e9c8f3c54e7e62c9730", "sha256": "563e70b8c824c1a8817b7131960b1a9d6c37b51f650d18dc431f2fde1b3ff4a6" }, "downloads": -1, "filename": "econt_test-0.0.3.tar.gz", "has_sig": false, "md5_digest": "133a7b0984ed8e9c8f3c54e7e62c9730", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29565, "upload_time": "2018-09-19T12:17:19", "url": "https://files.pythonhosted.org/packages/d7/1b/03d11a3b0b9c07d746866c8dd938e0b76ab484a4ba6f2be4a0ef6cbd8dfa/econt_test-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "b135dbf769eeff452ffd790afc6f80d0", "sha256": "1bb96d1a1af002ff2853d644f431d485a1c3d0d634fd4f92003da69fd4d328af" }, "downloads": -1, "filename": "econt_test-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b135dbf769eeff452ffd790afc6f80d0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36292, "upload_time": "2018-09-19T12:20:01", "url": "https://files.pythonhosted.org/packages/af/5e/225fff8cc8d0bc236a222138ef8343820cc0351c53c0689df7fb33bc586d/econt_test-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6049a328571e69803f1b74eda676b029", "sha256": "d80a96a0f94e09ca27f4f5573a748ddcdd75318bc3ca0b99ebe655e1c777d0e3" }, "downloads": -1, "filename": "econt_test-0.0.4.tar.gz", "has_sig": false, "md5_digest": "6049a328571e69803f1b74eda676b029", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29572, "upload_time": "2018-09-19T12:20:03", "url": "https://files.pythonhosted.org/packages/59/72/4b0862167e9b99255408fc18414207c76c1d362954a2f615704ecc54e6c6/econt_test-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "7aeba5474af13886d69f2a2ca1f0956b", "sha256": "1d3b7dfa30f95fe76bdeddfeabdc2991e6363dd6f68ee4c705d55ebe6f18d6a7" }, "downloads": -1, "filename": "econt_test-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "7aeba5474af13886d69f2a2ca1f0956b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36226, "upload_time": "2018-09-19T12:23:33", "url": "https://files.pythonhosted.org/packages/c8/6c/ab42dae1a6cc94a9f7f1ffc2c4db693522f9d2c8103e0884e6f5985502fb/econt_test-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fafb5ef9acbb2eec59b596ff1316c392", "sha256": "adccb7d34de10dd14d0a9824ed1db5f8a0491f5571d723d26625ad5afb79bdba" }, "downloads": -1, "filename": "econt_test-0.0.5.tar.gz", "has_sig": false, "md5_digest": "fafb5ef9acbb2eec59b596ff1316c392", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29416, "upload_time": "2018-09-19T12:23:34", "url": "https://files.pythonhosted.org/packages/bc/fa/fe8c5c698ed0a98edfbcbb7e87909af335801d611bf0ba7154c4c519cd0f/econt_test-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "ab1ff6932f531d5e2adad1da01d878e4", "sha256": "1c1963368cd59b5490bfe703c00a5f56ba7cfe8255d29484c6a98eec4739de5e" }, "downloads": -1, "filename": "econt_test-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "ab1ff6932f531d5e2adad1da01d878e4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36291, "upload_time": "2018-09-19T12:37:13", "url": "https://files.pythonhosted.org/packages/b7/ed/c9524d8d47907a2e76bc2f44c5b5f7e05c950fbbb3368f4389cc3847396a/econt_test-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58380a81574e17531fcb889d115bf4b4", "sha256": "99138b9886c0929eba0b5680b44abd22e56d51b82c499e44c67696faae2baf0c" }, "downloads": -1, "filename": "econt_test-0.0.6.tar.gz", "has_sig": false, "md5_digest": "58380a81574e17531fcb889d115bf4b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29600, "upload_time": "2018-09-19T12:37:43", "url": "https://files.pythonhosted.org/packages/53/cc/a25e50e78eafd5167e2e9d05a7716a41727d480b7dbe18cfde3a5cb259eb/econt_test-0.0.6.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "50cd67665a3330deb85b5d5bb9cf765e", "sha256": "573f818619464055944a0cc3f7dd745d0119ead416963a8b91a26a072f13dde4" }, "downloads": -1, "filename": "econt_test-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "50cd67665a3330deb85b5d5bb9cf765e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37445, "upload_time": "2018-09-21T09:03:43", "url": "https://files.pythonhosted.org/packages/27/c5/17b3a0043ea710ad000048b8579580fb61526119b4ae2716683c4dc095d8/econt_test-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40789c2dccfef2acdbf539b95016dcdd", "sha256": "1726ce9bc0f3102b1eb69dc8128a0e3f0c09019aa91e81b900642d828d28b308" }, "downloads": -1, "filename": "econt_test-0.0.9.tar.gz", "has_sig": false, "md5_digest": "40789c2dccfef2acdbf539b95016dcdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30024, "upload_time": "2018-09-21T09:03:45", "url": "https://files.pythonhosted.org/packages/62/29/ff0f87ce07bc1cafaa14b66d2c94c5a5a794c55a84696e1091a697a109d0/econt_test-0.0.9.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "36321efbd1f36cfb8cdfded4d29b0de1", "sha256": "f5ac63608cc58460260afd2d534b393f13259c11222bbfe88878310bb65f50f4" }, "downloads": -1, "filename": "econt_test-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "36321efbd1f36cfb8cdfded4d29b0de1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37391, "upload_time": "2018-09-21T10:50:34", "url": "https://files.pythonhosted.org/packages/64/79/ce71388960a6e3909bb274aa850490c39fa5f751908cb5abf93ae8e52acc/econt_test-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0520152bfd2fe49f84c99290cb0b6f8f", "sha256": "724a684f8cfde8c364a71377c00d3cc20cf880802c1b649aa962ed90f278c870" }, "downloads": -1, "filename": "econt_test-0.1.0.tar.gz", "has_sig": false, "md5_digest": "0520152bfd2fe49f84c99290cb0b6f8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29997, "upload_time": "2018-09-21T10:50:36", "url": "https://files.pythonhosted.org/packages/c9/dc/d885e304a14753783f041964ed0c624431a4b20a7c2e5188ac3902557849/econt_test-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "36321efbd1f36cfb8cdfded4d29b0de1", "sha256": "f5ac63608cc58460260afd2d534b393f13259c11222bbfe88878310bb65f50f4" }, "downloads": -1, "filename": "econt_test-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "36321efbd1f36cfb8cdfded4d29b0de1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37391, "upload_time": "2018-09-21T10:50:34", "url": "https://files.pythonhosted.org/packages/64/79/ce71388960a6e3909bb274aa850490c39fa5f751908cb5abf93ae8e52acc/econt_test-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0520152bfd2fe49f84c99290cb0b6f8f", "sha256": "724a684f8cfde8c364a71377c00d3cc20cf880802c1b649aa962ed90f278c870" }, "downloads": -1, "filename": "econt_test-0.1.0.tar.gz", "has_sig": false, "md5_digest": "0520152bfd2fe49f84c99290cb0b6f8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29997, "upload_time": "2018-09-21T10:50:36", "url": "https://files.pythonhosted.org/packages/c9/dc/d885e304a14753783f041964ed0c624431a4b20a7c2e5188ac3902557849/econt_test-0.1.0.tar.gz" } ] }