{ "info": { "author": "Bojan Karlas", "author_email": "bojan.karlas@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Ease.ml Client\n\nThis is the Python implementation of the ease.ml client.\n\n## Installation\n\nThis package is available on PyPI.\n\n```bash\npip install easemlclient\n```\n\n## Example usage\n\n### Establishing a connection\n\nTo use the client API we first need to create a connection object that we will be using to target the running easeml instance. The connection must be inialized with a host name (here we use localhost) and either the API key or a username and password.\n\n```python\nfrom easemlclient.model import Connection\n\nconnection = Connection(host=\"localhost:8080\", api_key=\"some-api-key\")\n```\n\n### Querying Collections\n\nThen we can query all the running jobs. To do that we need to create a `JobQuery` instance which we use to specify the parameters of our query. For example, we can query all completed jobs. To get the result we call the `run()` method of the query object and pass the connection instance.\n\n```python\nfrom easemlclient.model import JobQuery\n\nquery = JobQuery(status=\"completed\")\nresult, next_query = query.run(connection)\n```\n\nThe result will contain a list of `Job` objects taht satisfy our query. Results are paginated to limit the size of each request. If there are more pages to be loaded, then the `next_query` variable will contain a `JobQuery` instance that we can run and return the next page. The full pattern for loading all jobs is the following:\n\n```python\nfrom easemlclient.model import JobQuery\n\nresult, query = [], JobQuery(status=\"completed\")\n\nnext_result, next_query = [], query\nwhile next_query is not None:\n next_result, next_query = query.run(connection)\n result.extend(next_result)\n```\n\nWe can take the first completed job and get a list of its tasks.\n\n```python\njob = result[0]\ntasks = job.tasks\n```\n\nThe `tasks` list actually contains \"shallow\" instances of the `Task` class. This means that each instance contains only the task's `id` field and no other fields. This is normal because the `Job` object has only references to tasks, not entire tasks. To get a full version of a task given a \"shallow\" instance, we use the `get()` method.\n\n```python\ntask = tasks[0].get(connection)\n```\n\n### Querying Specific Objects\n\nThe `Task` object can also be used to query tasks by their ID. We simply create a new \"shallow\" instance using a task ID and call the `get()` method.\n\n```python\nfrom easemlclient.model import Task\n\ntask = Task(id=\"some-task-id\").get(connection)\n```\n\n### Creating Objects\n\nWe have the ability to create certain objects, such as `Dataset`, `Module` and `Job`. We do this by initializing an instance of that object, assigning values to relevant fields and calling the `post()` method. Here is an example of creating a dataset object along with uploading of a dataset.\n\n```python\n\nfrom easemlclient.model import Dataset, DatasetSource, DatasetStatus\n\ndataset = Dataset.create(id=\"test_dataset_1\", source=DatasetSource.UPLOAD, name=\"Test Dataset 1\").post(connection)\n\nwith open(\"test_dataset_1.tar\", \"rb\") as f:\n dataset.upload(connection=connection, data=f)\n\n# Once the dataset upload finishes, we need to update the status of the dataset to \"transferred\".\ndataset.status = DatasetStatus.TRANSFERRED\n\n# Once we assign values to fields, we use the patch command\n# to apply updates to the dataset object on the server.\ndataset.patch(connection)\n```\n\n### Starting a new training Job and monitoring it\n\nHere we show a slightly more complex example that demonstrates how to start a model selection and tuning job given a previously uploaded dataset.\n\nWe will first fetch the dataset object in order to be able to access its schema.\n\n```python\nfrom easemlclient.model import Dataset\n\ndataset = Dataset(id=\"test_dataset_1\").get(connection)\n```\n\nThen we query all models that are applicable to the given dataset. We use the `ModuleQuery` class for this.\n\n```python\n\nfrom easemlclient.model import ModuleQuery, ModuleType\n\nquery = ModuleQuery(type=ModuleType.MODEL, status=ModuleStatus.ACTIVE,\n schema_in=dataset.schema_in, schema_out=dataset.schema_out)\n\n# We assume that the result does not contain more than one page.\nmodels, _ = query.run(connection)\n```\n\nWe do the same for objectives.\n\n```python\n\nfrom easemlclient.model import ModuleQuery, ModuleType\n\nquery = ModuleQuery(type=ModuleType.OBJECTIVE, status=ModuleStatus.ACTIVE,\n schema_in=dataset.schema_in, schema_out=dataset.schema_out)\nobjectives, _ = query.run(connection)\n\n# We will simply pick the first objective here.\nobjective = objectives[0]\n```\n\nThen we are ready to create a job.\n\n```python\nfrom easemlclient.model import Job\n\njob = Job(dataset=dataset, objective=objective, models=models, max_tasks=20).post(connection)\n```\n\nWith `max_tasks` we specify the number of tasks to run before a job's status will become `completed`. We can keep querying the job to check the status.\n\n```python\nfrom time import sleep\nfrom easemlclient.model import JobStatus\n\nwhile job.get(connection).status != JobStatus.COMPLETED:\n time.sleep(10)\n```\n\nOnce the job is completed, we can get the task with the best result.\n\n```python\nfrom easemlclient.model import TaskQuery, ApiQueryOrder\n\ntasks, _ = TaskQuery(job=job, order_by=\"quality\", order=ApiQueryOrder.DESC).run(connection)\n\nbest_task = tasks[0].get(connection)\n```\n\nFinally, we can download the Docker image of the best task and save it as a tar file.\n\n```python\nimage = best_task.get_image(connection)\nopen(\"/output/path/to/image.tar\", \"wb\").write(image)\n```\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://github.com/DS3Lab/easeml", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "easemlclient", "package_url": "https://pypi.org/project/easemlclient/", "platform": "", "project_url": "https://pypi.org/project/easemlclient/", "project_urls": { "Homepage": "https://github.com/DS3Lab/easeml" }, "release_url": "https://pypi.org/project/easemlclient/0.1.13/", "requires_dist": [ "requests (>=2.22.0)", "pyrfc3339 (>=1.1)", "tuspy (>=0.2.4)", "docker (>=4.0.1)" ], "requires_python": "", "summary": "Client library used to communicate with the ease.ml service.", "version": "0.1.13", "yanked": false, "yanked_reason": null }, "last_serial": 7883033, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e1de3e0f3750c194c16a54779df51ed5", "sha256": "c978069950a2dad5fd122075b35db0d869f1043491a428ce3de0fc2c54c2e47f" }, "downloads": -1, "filename": "easemlclient-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e1de3e0f3750c194c16a54779df51ed5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40446, "upload_time": "2019-10-22T16:10:51", "upload_time_iso_8601": "2019-10-22T16:10:51.144527Z", "url": "https://files.pythonhosted.org/packages/b0/63/1407c176325e36c5c59b5f25f4481b76f4a05a77cd93e0614ed2f12de2c6/easemlclient-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "995099dbb2a431482ee274a095298e51", "sha256": "125fafbf2ec36ab49b55135051228b71efae83045d77aebaae8de2b24d6e3fc0" }, "downloads": -1, "filename": "easemlclient-0.1.0.tar.gz", "has_sig": false, "md5_digest": "995099dbb2a431482ee274a095298e51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9928, "upload_time": "2019-10-22T16:10:53", "upload_time_iso_8601": "2019-10-22T16:10:53.758777Z", "url": "https://files.pythonhosted.org/packages/6c/50/fc4b6b9f5c6290ca3c24595f3e14a026770eec52427cd27d8fcf8cf4cc0e/easemlclient-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9cbba05fc7389ac5dd204f1679df121d", "sha256": "243c96c3dfcec335455cf5aee3621bdeed7a291ad6696f4e6db2e52dbbeac191" }, "downloads": -1, "filename": "easemlclient-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9cbba05fc7389ac5dd204f1679df121d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15942, "upload_time": "2019-10-22T16:59:56", "upload_time_iso_8601": "2019-10-22T16:59:56.783139Z", "url": "https://files.pythonhosted.org/packages/f8/85/04aff8ff6a2bd54f0cad30482c6cbcd39b276d6205166f070f7707112cbb/easemlclient-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c9f69d77057a03b5c0566edd83a889cd", "sha256": "670ca5f1114cb84ca1b0c8804361a67b4c5e583ee31e5d238d2910555d47c091" }, "downloads": -1, "filename": "easemlclient-0.1.1.tar.gz", "has_sig": false, "md5_digest": "c9f69d77057a03b5c0566edd83a889cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9974, "upload_time": "2019-10-22T16:59:58", "upload_time_iso_8601": "2019-10-22T16:59:58.679197Z", "url": "https://files.pythonhosted.org/packages/5b/d7/3bb9f02f0e2f8079e3c006e8022ceed0001108ea3f90ced5ccdf53003d2c/easemlclient-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "54ef0fced6590bddd0ff3bf63bf67908", "sha256": "0b50de4d3a230867960e8c83781718b8b7138de62286ce682d912c82c450b17a" }, "downloads": -1, "filename": "easemlclient-0.1.10-py3-none-any.whl", "has_sig": false, "md5_digest": "54ef0fced6590bddd0ff3bf63bf67908", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18187, "upload_time": "2020-07-28T16:12:48", "upload_time_iso_8601": "2020-07-28T16:12:48.914872Z", "url": "https://files.pythonhosted.org/packages/c1/84/a9a5f7af5fc93149c19857e9b2036c2a4408234f3874944869421e74c402/easemlclient-0.1.10-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2646e6456c6e69caeacb31843b5bc2f4", "sha256": "3442eb13e05c840c7c4ca3e9134c10898681ccaf6419f6b525537033a8bfa40c" }, "downloads": -1, "filename": "easemlclient-0.1.10.tar.gz", "has_sig": false, "md5_digest": "2646e6456c6e69caeacb31843b5bc2f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12460, "upload_time": "2020-07-28T16:12:50", "upload_time_iso_8601": "2020-07-28T16:12:50.551150Z", "url": "https://files.pythonhosted.org/packages/3a/2b/015ea84e22c5c235c9b43dc24c7f2e03b9c3849b83ebc22a1421c3baeb65/easemlclient-0.1.10.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "aa06907f074744c5b8d54b360f65e48a", "sha256": "07117f439583257993969d3c2d6b12198fdd04340784881140bb495dd6dc0618" }, "downloads": -1, "filename": "easemlclient-0.1.11-py3-none-any.whl", "has_sig": false, "md5_digest": "aa06907f074744c5b8d54b360f65e48a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18188, "upload_time": "2020-07-28T17:07:59", "upload_time_iso_8601": "2020-07-28T17:07:59.434815Z", "url": "https://files.pythonhosted.org/packages/61/90/52944097f96faed74b31528f2b0362d686575528f272bd260ce25d533cc6/easemlclient-0.1.11-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ab74bafc24b0f103c3fba5e6a3e7fee7", "sha256": "33a54dcc4acce52cf6308233bb172a9d74ae88c1c479dd55e809d05f616a31ff" }, "downloads": -1, "filename": "easemlclient-0.1.11.tar.gz", "has_sig": false, "md5_digest": "ab74bafc24b0f103c3fba5e6a3e7fee7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12457, "upload_time": "2020-07-28T17:08:00", "upload_time_iso_8601": "2020-07-28T17:08:00.686789Z", "url": "https://files.pythonhosted.org/packages/6a/8f/522e1010a42d89f72d3bfd292416c7606738499483eb70c9950dc76c8d18/easemlclient-0.1.11.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "8e6a6ea68158f403c93e044a70554965", "sha256": "da80b2e38b24f56eb62299d0e4a44a24626a573297705a3e532b1589b33d8bc6" }, "downloads": -1, "filename": "easemlclient-0.1.12-py3-none-any.whl", "has_sig": false, "md5_digest": "8e6a6ea68158f403c93e044a70554965", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18186, "upload_time": "2020-07-28T18:30:02", "upload_time_iso_8601": "2020-07-28T18:30:02.078916Z", "url": "https://files.pythonhosted.org/packages/f3/85/2ae121338b8b71cbebf541b14f38751be1de6218ed46f3ecd9de9749d724/easemlclient-0.1.12-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "326ebc3a7f3701e20f9f50a318b06c86", "sha256": "f61a6eec5f24efccb186a8ff72e8f2a0d46f7f1d0c904bdb53d986d4f881ab61" }, "downloads": -1, "filename": "easemlclient-0.1.12.tar.gz", "has_sig": false, "md5_digest": "326ebc3a7f3701e20f9f50a318b06c86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12463, "upload_time": "2020-07-28T18:30:03", "upload_time_iso_8601": "2020-07-28T18:30:03.250810Z", "url": "https://files.pythonhosted.org/packages/aa/66/deb3341f076fcee2f7dca8f2191186a36b05f2ca6f4785c702c499b11445/easemlclient-0.1.12.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "8c7e1fbb42aa46e2f1fc498b5df03b64", "sha256": "d44eaf14bf0b9f2237c9161215ef66c79caec7737d089669170bce233406af46" }, "downloads": -1, "filename": "easemlclient-0.1.13-py3-none-any.whl", "has_sig": false, "md5_digest": "8c7e1fbb42aa46e2f1fc498b5df03b64", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18187, "upload_time": "2020-08-04T16:37:56", "upload_time_iso_8601": "2020-08-04T16:37:56.037816Z", "url": "https://files.pythonhosted.org/packages/a8/df/d85b2ddef09c8d04d09b7769caff5e73b72c72db49601f2bd31e2168bdfa/easemlclient-0.1.13-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ab44e40c92813bfa79a806ad8e49d3a2", "sha256": "bb9a57bde8fdc7ec1e012903534c123b9f38ef89c35dade2340ad31ffe8d0a9c" }, "downloads": -1, "filename": "easemlclient-0.1.13.tar.gz", "has_sig": false, "md5_digest": "ab44e40c92813bfa79a806ad8e49d3a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12086, "upload_time": "2020-08-04T16:37:57", "upload_time_iso_8601": "2020-08-04T16:37:57.198847Z", "url": "https://files.pythonhosted.org/packages/aa/a7/adb84b05f0a8796eac7efa8ba10eae7898b43f40c18f6b3dc8f980caf3f2/easemlclient-0.1.13.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "49e30b3d9ffbe8575ff5a8ca0adb849e", "sha256": "e019fd5ffbc02446861cfcfc6088bcd012a2c51ce91ebae93354cb85b5a2b021" }, "downloads": -1, "filename": "easemlclient-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "49e30b3d9ffbe8575ff5a8ca0adb849e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17773, "upload_time": "2019-10-22T18:07:40", "upload_time_iso_8601": "2019-10-22T18:07:40.395937Z", "url": "https://files.pythonhosted.org/packages/94/27/bf865b442b3a95a6b7b7c36469bfb12f7716898dc5091b7a54585f7e7415/easemlclient-0.1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "80d6fc58b56d191ecd8a45d57bf92bf6", "sha256": "cdd69ecb291f568b97e8c4e42e844362ea4b3b388144bbdda379ab47e53bdb91" }, "downloads": -1, "filename": "easemlclient-0.1.2.tar.gz", "has_sig": false, "md5_digest": "80d6fc58b56d191ecd8a45d57bf92bf6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13819, "upload_time": "2019-10-22T18:07:42", "upload_time_iso_8601": "2019-10-22T18:07:42.345469Z", "url": "https://files.pythonhosted.org/packages/91/d6/c736275608ae42f312d637df30c417a09272bb10ab805015f3c3cdf16a5d/easemlclient-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "9949cfe5bb1087c4af5f81684c843ce0", "sha256": "fb37bc8f7d71ce49ffcaa87da97a255738b697fd46db14dc8b5bba96217cb8c1" }, "downloads": -1, "filename": "easemlclient-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9949cfe5bb1087c4af5f81684c843ce0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18022, "upload_time": "2019-11-28T14:11:02", "upload_time_iso_8601": "2019-11-28T14:11:02.594389Z", "url": "https://files.pythonhosted.org/packages/50/0e/82e1d02fd1e1b78fa11b0d858b0b9ddba57a541e8015dd735788a427f8c0/easemlclient-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f3eb1f17e94726c7f6ac16d60faf5202", "sha256": "9e872a6405e9d54ad3d0ec3f72489c922b6a0671554a7c2f77028b62e9f8e3d8" }, "downloads": -1, "filename": "easemlclient-0.1.3.tar.gz", "has_sig": false, "md5_digest": "f3eb1f17e94726c7f6ac16d60faf5202", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14052, "upload_time": "2019-11-28T14:11:04", "upload_time_iso_8601": "2019-11-28T14:11:04.090028Z", "url": "https://files.pythonhosted.org/packages/3d/38/5501b48f88178631771bbe3893a84c8a9c685573667e9c822a81e41e0077/easemlclient-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "742d2abfffa6004e84a530ae3e202358", "sha256": "4f32a4d54b0a11b564968ff47df679c1ac121dcd7c64c85cafb89af49f540bf0" }, "downloads": -1, "filename": "easemlclient-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "742d2abfffa6004e84a530ae3e202358", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18061, "upload_time": "2019-12-18T16:18:27", "upload_time_iso_8601": "2019-12-18T16:18:27.407172Z", "url": "https://files.pythonhosted.org/packages/b0/74/e28c0d7c9f32e39df0741e6aa97c995f7f0d72c8bf3d33c890b2e8245bff/easemlclient-0.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "be7413de792f86a1d8a69111df30a220", "sha256": "ffc856fdaaa592b0d047354294b5f8a406cf2cbb01cf49bd0de3e18bc8af5a32" }, "downloads": -1, "filename": "easemlclient-0.1.4.tar.gz", "has_sig": false, "md5_digest": "be7413de792f86a1d8a69111df30a220", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14094, "upload_time": "2019-12-18T16:18:28", "upload_time_iso_8601": "2019-12-18T16:18:28.994977Z", "url": "https://files.pythonhosted.org/packages/b2/61/0d47bde17f25446370f537b7da792e18badd96d3a48859230adceda87c6c/easemlclient-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "23b8eec78043f9fe882a506f2a619515", "sha256": "7eb6cc5dbb29832342deea891d2c444c5e098d2befcf09770ae869c11f5412b5" }, "downloads": -1, "filename": "easemlclient-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "23b8eec78043f9fe882a506f2a619515", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18615, "upload_time": "2020-06-18T05:58:17", "upload_time_iso_8601": "2020-06-18T05:58:17.307980Z", "url": "https://files.pythonhosted.org/packages/0c/cb/c34a45cf5585692dafa40c79570cd4ce3b75d9a3ab2d71bbea475fbc8f20/easemlclient-0.1.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "33bc31fd854acd635775614daf8be3d2", "sha256": "4f2cee9b58d67fd9f43401b08a8d8b211ec4aca7e8a3a3bde324158779284bf2" }, "downloads": -1, "filename": "easemlclient-0.1.5.tar.gz", "has_sig": false, "md5_digest": "33bc31fd854acd635775614daf8be3d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14255, "upload_time": "2020-06-18T05:58:18", "upload_time_iso_8601": "2020-06-18T05:58:18.341350Z", "url": "https://files.pythonhosted.org/packages/db/d0/313e3c738a6a5621748778cf65ae14dcc6feaf8fcbd96218726a18abb191/easemlclient-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "197b3d7836815c53316438b1fa3f12ae", "sha256": "52b11a47774a8ac2d38e97dfea9e11c9481da3e0863b208ba4cb2c96607adc00" }, "downloads": -1, "filename": "easemlclient-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "197b3d7836815c53316438b1fa3f12ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18175, "upload_time": "2020-06-18T07:16:42", "upload_time_iso_8601": "2020-06-18T07:16:42.074802Z", "url": "https://files.pythonhosted.org/packages/28/cf/7ca5c1c82d9c69ce08b92e118f8a80e6f557a08bcb57eeac9a6dbeec9013/easemlclient-0.1.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8d49a4b49be4fe23bd4ef7b011f86c74", "sha256": "c5ebe1d466973cb4e3cfb6c777c00762f2b81be2bfc683c059367112a65cabb4" }, "downloads": -1, "filename": "easemlclient-0.1.7.tar.gz", "has_sig": false, "md5_digest": "8d49a4b49be4fe23bd4ef7b011f86c74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12439, "upload_time": "2020-06-18T07:16:43", "upload_time_iso_8601": "2020-06-18T07:16:43.133379Z", "url": "https://files.pythonhosted.org/packages/85/9e/acb783b63b44de1501c67759e3c7c3fd84bcb5a99e0df65ffb484c127bdc/easemlclient-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "d5c8a9a681f35fb39fb090586203f1c9", "sha256": "36e3aef9b9567c70133957a00f8e946c3ad737fa03322945d2076556b1f2d48b" }, "downloads": -1, "filename": "easemlclient-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "d5c8a9a681f35fb39fb090586203f1c9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18175, "upload_time": "2020-07-02T05:32:34", "upload_time_iso_8601": "2020-07-02T05:32:34.175852Z", "url": "https://files.pythonhosted.org/packages/08/19/4cad955140325cb6e1ac9fd3a2de679c57896a18f7acf70507d1ca5e1969/easemlclient-0.1.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "02cc7a91e4736bf834df332bd57dda83", "sha256": "0e97a9e594e2ac5fb87013dbd6c5fba36f4690be5fe515a4e88985a0c07ea1df" }, "downloads": -1, "filename": "easemlclient-0.1.8.tar.gz", "has_sig": false, "md5_digest": "02cc7a91e4736bf834df332bd57dda83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14103, "upload_time": "2020-07-02T05:32:35", "upload_time_iso_8601": "2020-07-02T05:32:35.336225Z", "url": "https://files.pythonhosted.org/packages/79/01/45b5a1afe42113df52058e21a467ecc695b9b349c24085c9376c8dc86910/easemlclient-0.1.8.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8c7e1fbb42aa46e2f1fc498b5df03b64", "sha256": "d44eaf14bf0b9f2237c9161215ef66c79caec7737d089669170bce233406af46" }, "downloads": -1, "filename": "easemlclient-0.1.13-py3-none-any.whl", "has_sig": false, "md5_digest": "8c7e1fbb42aa46e2f1fc498b5df03b64", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18187, "upload_time": "2020-08-04T16:37:56", "upload_time_iso_8601": "2020-08-04T16:37:56.037816Z", "url": "https://files.pythonhosted.org/packages/a8/df/d85b2ddef09c8d04d09b7769caff5e73b72c72db49601f2bd31e2168bdfa/easemlclient-0.1.13-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ab44e40c92813bfa79a806ad8e49d3a2", "sha256": "bb9a57bde8fdc7ec1e012903534c123b9f38ef89c35dade2340ad31ffe8d0a9c" }, "downloads": -1, "filename": "easemlclient-0.1.13.tar.gz", "has_sig": false, "md5_digest": "ab44e40c92813bfa79a806ad8e49d3a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12086, "upload_time": "2020-08-04T16:37:57", "upload_time_iso_8601": "2020-08-04T16:37:57.198847Z", "url": "https://files.pythonhosted.org/packages/aa/a7/adb84b05f0a8796eac7efa8ba10eae7898b43f40c18f6b3dc8f980caf3f2/easemlclient-0.1.13.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }