{ "info": { "author": "Datera Automation Team", "author_email": "support@datera.io", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "# Datera Python SDK\n\n\n## Introduction\n\nThis is Python SDK version v1.2 for the **Datera** Fabric Services API.\nDownload and use of this package implicitly accepts the terms in COPYING\n\nUsers of this package are assumed to have familiarity with the **Datera** API.\nDetails around the API itself are not necessarily covered through this SDK.\n\n## Features\n\n* Automatic session management and login\n* Automatic and configuable request retries\n* Object to REST request translation\n* Standard Logging Format (compatible with Datera SREQ log parsing)\n* Endpoint validation (toggleable)\n* Dot-notation access to response attributes\n* [UDC](#universal-datera-config) compliance\n\n## Installation\n\n### From Source\n```bash\n apt-get install python-virtualenv (or yum install python-virtualenv for CentOS)\n virtualenv sdk\n source sdk/bin/activate\n git clone https://github.com/Datera/python-sdk.git\n cd python-sdk\n pip install -r requirements.txt\n python setup.py install\n```\n\n### From PYPI\n```bash\n pip install -U dfs_sdk\n```\n\n## Universal Datera Config\n\nThe Universal Datera Config (UDC) is a config that can be specified in a\nnumber of ways:\n\n* JSON file with any of the following names:\n - .datera-config\n - datera-config\n - .datera-config.json\n - datera-config.json\n* The JSON file has the following configuration:\n```json\n {\"mgmt_ip\": \"1.1.1.1\",\n \"username\": \"admin\",\n \"password\": \"password\",\n \"tenant\": \"/root\",\n \"api_version\": \"2.2\",\n \"ldap\": \"\"}\n```\n* The file can be in any of the following places. This is also the lookup\n order for config files:\n - current directory\n - home directory\n - home/config directory\n - /etc/datera\n* If no datera config file is found and a cinder.conf file is present, the\n config parser will try and pull connection credentials from the\n cinder.conf\n* Tenant and API version and LDAP are always optional, but it's generally\n suggested to include them in your UDC file for easy reference.\n* Instead of a JSON file, environment variables can be used.\n - `DAT_MGMT`\n - `DAT_USER`\n - `DAT_PASS`\n - `DAT_TENANT`\n - `DAT_API`\n - `DAT_LDAP`\n* Most tools built to use the Universal Datera Config will also allow\n for providing/overriding any of the config values via command line flags.\n - --hostname\n - --username\n - --password\n - --tenant\n - --api-version\n - --ldap\n\n## Developing with Universal Datera Config\n\nTo use UDC in a new python tool is very simple just add the following to\nyour python script:\n\n```python\nfrom dfs_sdk import scaffold\n\nparser = scaffold.get_argparser()\nparser.add_argument('my-new-arg')\nargs = parser.parse_args()\n```\n\nIf you want to use subparsers, or customize the help outptu of your parser\nthen use the following\n\n```python\nimport argparse\nfrom dfs_sdk import scaffold\n\ntop_parser = scaffold.get_argparser(add_help=False)\nnew_parser = argparse.ArgumentParser(parents=[top_parser])\nnew_parser.add_argument('my-new-arg')\nargs = new_parser.parse_args()\n```\n\nInside a script the config can be recieved by calling\n```python\nfrom dfs_sdk import scaffold\n\nscaffold.get_argparser()\nconfig = scaffold.get_config()\n```\nNOTE: It is no longer required to call ``scaffold.get_argparser()`` before\ncalling ``scaffold.get_config()``. This is only necessary if building\na CLI tool that needs the cli parser.\n\n## Logging\n\nTo set custom logging.json file\n```bash\n export DSDK_LOG_CFG=your/log/location.json\n```\nOr the value can be set to a debug, info or error\n```bash\n export DSDK_LOG_CFG=info\n```\n\nTo set logging to stdout. The value can be any logging level supported by\nthe python logging module (eg: debug, info, etc)\n```bash\n export DSDK_LOG_STDOUT=debug\n```\n\nThe debug logs generated by the python-sdk are quite large, and are on a\nrotating file handler (provided that a custom logging.json file is not provided)\n\n## Managed Objects\n\nDatera provides an application-driven storage management model, whose goal is to closely align storage\nwith a corresponding application's requirements.\n\nThe main storage objects are defined and differentiated as follows:\n\n### Application Instance (AppInstance)\n - Corresponds to an application, service, etc.\n - Contains Zero or more Storage Instances\n\n### Storage Instance\n - Corresponds to one set of storage requirements for a given AppInstance\n - ACL Policies, including IQN Initiators\n - Target IQN\n - Contains Zero or more Volumes\n\n### Volumes\n - Corresponds to a single allocated storage object\n - Size (default unit is GB)\n - Replication Factor\n - Performance Policies (QoS for Bandwidth and IOPS)\n - Protection Policies (Snapshot scheduling)\n\nAnother way of viewing the managed object hierarchy is as follows:\n\n app_instances:\n - storage_instances: (1 or more per app_instance)\n + acl_policy (1 or more host initiators )\n + iqn (target IQN)\n + ips (target IPs)\n + volumes: (1 or more per storage_instance)\n * name\n * size\n * replication\n * performance_policy (i.e. QoS)\n * protection_policy (i.e. Snapshot schedules)\n\n\n## Endpoints\n\nHTTP operations on URL endpoints is the only way to interact with the set of managed objects.\nURL's have the format:\n```bash\n http://192.168.42.13:7717/v2.2//[]/...\n```\nwhere **7717** is the port used to access the API, and \"v2.2\" corresponds to an API version control.\n\nBriefly, the REST API supports 4 operations/methods **create (POST), modify (PUT), list (GET), delete (DELETE)**.\nAny input payload is in JSON format; any return payload is in JSON format.\nLogin session keys are required within the \"header\" of any HTTP request.\nSessions keys have a 15 minute lifetime.\n\nFor a full reference documentation of the REST API, please review the Datera REST API Guide.\n\nThis Python SDK serves as a wrapper around the raw HTTP layer.\n\n## Using this SDK\n\nThe Datera module is named **dfs_sdk**, and the main entry point is called __DateraApi__.\nObtaining an object handle can be done as follows:\n```python\n from dfs_sdk import get_api\n [...]\n api = get_api(mgmt_ip, username, password, \"v2.2\" **kwargs)\n```\n\nYou can also initialize the SDK using a Datera UDC file. The following will read any valid\nUDC file on the system or from the current environment variables.\n\n```python\n from dfs_sdk.scaffold import get_api\n [...]\n api = get_api()\n```\n## Configurable Options\n\nThese options can be set on instantiation via the ``get_api`` constructor\n\nOption | Default | Description\n-------|-------- | -----------\ntenant | '/root' | Datera account tenant/subtenant\ntimeout | 300 (s) | Timeout for HTTP requests\nsecure | True | Whether to use HTTPS (False sets HTTP)\nstrict | False | Whether to check if an endpoint is valid before sending request\ncert | None | HTTPS verification certificate\ncert\\_key | None | HTTPS verification certificate key\nthread\\_local | {} | Used for passing values down to the connection layer, usually for logging\n\n\n## Common Objects, Examples and Use Cases\n\nPlease see the **utils** directory for programming examples that cover the following:\n\nCommon methods for all objects include **create(), set(), delete(), list()**\n\n+ To create an app\\_instance with name **FOO**:\n```python\n ai = api.app_instances.create(name=\"FOO\")\n```\n+ Looping through objects can be done via **list()**:\n```python\n for ai in api.app_instances.list():\n print \"AppInstance: \", ai\n```\n+ To set a given **app_instance** into an _offline_ state:\n```python\n ai.set(admin_state=\"offline\")\n```\n+ To delete a given app\\_instance:\n```python\n ai.delete()\n```\n## Reporting Problems\n\nFor problems and feedback, please email \"support@datera.io\"\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/Datera/python-sdk/tarball/v1.2.25", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Datera/python-sdk/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "dfs-sdk", "package_url": "https://pypi.org/project/dfs-sdk/", "platform": "", "project_url": "https://pypi.org/project/dfs-sdk/", "project_urls": { "Download": "https://github.com/Datera/python-sdk/tarball/v1.2.25", "Homepage": "https://github.com/Datera/python-sdk/" }, "release_url": "https://pypi.org/project/dfs-sdk/1.2.25/", "requires_dist": [ "requests", "six", "urllib3" ], "requires_python": "", "summary": "Datera Fabric Python SDK", "version": "1.2.25" }, "last_serial": 5458217, "releases": { "1.2.15": [ { "comment_text": "", "digests": { "md5": "c03cc496ffa8175da1d9d454ea65ada9", "sha256": "9afb3fb4c59584a00213576325d1815e782e2084a1832f68cd8d09bcf788892d" }, "downloads": -1, "filename": "dfs_sdk-1.2.15-py3-none-any.whl", "has_sig": false, "md5_digest": "c03cc496ffa8175da1d9d454ea65ada9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32997, "upload_time": "2018-11-07T20:21:33", "url": "https://files.pythonhosted.org/packages/35/df/90bc595b55a246f8b376d6795ca6c08c290fa65b390726c0ef56b4d61860/dfs_sdk-1.2.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "776149eeea72f4c653ef3b773d6a0b12", "sha256": "30a606efac092ead913bbdc8a81b44e0737176f997ff48e3b4e7ac44e9966d7d" }, "downloads": -1, "filename": "dfs_sdk-1.2.15.tar.gz", "has_sig": false, "md5_digest": "776149eeea72f4c653ef3b773d6a0b12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33551, "upload_time": "2018-11-07T20:21:36", "url": "https://files.pythonhosted.org/packages/ef/e1/02cdef92fb8d372902e8ba51e194b6275f881e55b6a1b54b7c7dcfa3e09b/dfs_sdk-1.2.15.tar.gz" } ], "1.2.16": [ { "comment_text": "", "digests": { "md5": "5df5a18f681d63acbdc2267a01123763", "sha256": "8a34b9b2636f7b3f84b7ad28a5992a3e8614f7f179f5bdeb5f10d9efff06b829" }, "downloads": -1, "filename": "dfs_sdk-1.2.16-py3-none-any.whl", "has_sig": false, "md5_digest": "5df5a18f681d63acbdc2267a01123763", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33507, "upload_time": "2018-11-08T18:34:49", "url": "https://files.pythonhosted.org/packages/8f/ff/8802e58f2b62f957df57e3841bfe3563cf5d80b75cb42a260690cfd9996b/dfs_sdk-1.2.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "de50be20d58c8e33f8d5d954bf896f06", "sha256": "109f32fef18a410116cb88112f551a7ad5818d2902fd9074575952ea5f53d686" }, "downloads": -1, "filename": "dfs_sdk-1.2.16.tar.gz", "has_sig": false, "md5_digest": "de50be20d58c8e33f8d5d954bf896f06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34094, "upload_time": "2018-11-08T18:34:50", "url": "https://files.pythonhosted.org/packages/77/77/c0d2d54b823b226480b2354a5b2bc1fbf6a5e5c8094aa4aa50bbc7d5f63f/dfs_sdk-1.2.16.tar.gz" } ], "1.2.17": [ { "comment_text": "", "digests": { "md5": "7d6d305f04ed84d676af5a57814b4e31", "sha256": "0c4dcfdc03cf9329e3312aee221ef0cdfc76dea4f9007747bbbce5aa7d033a0a" }, "downloads": -1, "filename": "dfs_sdk-1.2.17-py3-none-any.whl", "has_sig": false, "md5_digest": "7d6d305f04ed84d676af5a57814b4e31", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33537, "upload_time": "2018-11-09T17:43:49", "url": "https://files.pythonhosted.org/packages/be/2b/d9c3c2319ef86a3932bde3da5766c3dc40f6fc661314c00b93f5eada2453/dfs_sdk-1.2.17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "204b64c914570d0baf63981e69ad545b", "sha256": "c520ad5702c6d237d2fa12502533bf848c5a805857c4b334e0041f9bf1c2375a" }, "downloads": -1, "filename": "dfs_sdk-1.2.17.tar.gz", "has_sig": false, "md5_digest": "204b64c914570d0baf63981e69ad545b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34121, "upload_time": "2018-11-09T17:43:51", "url": "https://files.pythonhosted.org/packages/05/9e/ca5b048d12a64b08f27dfa0533cd0f8b06a18cb3f63b54d1ab4c4ba84326/dfs_sdk-1.2.17.tar.gz" } ], "1.2.18": [ { "comment_text": "", "digests": { "md5": "c2eb6e68e81f9e6fff9be4bbc7e8ee2d", "sha256": "ed894c5eda9d13a5e1168c3801e411c037ba71d87b4f00f76fb6b8d75269dae7" }, "downloads": -1, "filename": "dfs_sdk-1.2.18-py3-none-any.whl", "has_sig": false, "md5_digest": "c2eb6e68e81f9e6fff9be4bbc7e8ee2d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33248, "upload_time": "2018-11-30T16:11:16", "url": "https://files.pythonhosted.org/packages/35/92/fb1ed8804e4505a71eb9109421a941cd9658b34c616d8733674dae90aff7/dfs_sdk-1.2.18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dddb800f91d3ef15756f0ac11207c61c", "sha256": "1b296da39bc2d88c9bb6b8112c9ff6d185c888be937f0609f7cf15158eb75858" }, "downloads": -1, "filename": "dfs_sdk-1.2.18.tar.gz", "has_sig": false, "md5_digest": "dddb800f91d3ef15756f0ac11207c61c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33792, "upload_time": "2018-11-30T16:11:18", "url": "https://files.pythonhosted.org/packages/7a/67/4b77edfa62e653c86cc95d32b453e1e0658988f55635dbb1e156daa89413/dfs_sdk-1.2.18.tar.gz" } ], "1.2.19": [ { "comment_text": "", "digests": { "md5": "6a22bec325a3b9adefb34e3d6d2eddaa", "sha256": "f5e79085b3d23df6961618ac7d66ed5e33ee715d1de06a148ce68bac16789f70" }, "downloads": -1, "filename": "dfs_sdk-1.2.19-py3-none-any.whl", "has_sig": false, "md5_digest": "6a22bec325a3b9adefb34e3d6d2eddaa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33263, "upload_time": "2018-12-03T18:07:27", "url": "https://files.pythonhosted.org/packages/26/60/228cdb39cc027dc4ddb2c4ea76860d98a0a2f4b0cd34329ed2588b2c3a9c/dfs_sdk-1.2.19-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e73a1ccb417d19b48e79fb020ec8aacb", "sha256": "1a615f82c38f9217d1e53afed8e74e74d1836ae0774d315de911bbe11eca757c" }, "downloads": -1, "filename": "dfs_sdk-1.2.19.tar.gz", "has_sig": false, "md5_digest": "e73a1ccb417d19b48e79fb020ec8aacb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33815, "upload_time": "2018-12-03T18:07:30", "url": "https://files.pythonhosted.org/packages/5f/f9/17817cf50c001ccf300e07b24d026f7070aac7785d2523e0d49519958a0a/dfs_sdk-1.2.19.tar.gz" } ], "1.2.20": [ { "comment_text": "", "digests": { "md5": "79294ff327292bed8ec4e15b7a6b48fb", "sha256": "e7855b0b46d92395405b64779ef337651978f80e5aaffb1fcffa4dcd0302ada0" }, "downloads": -1, "filename": "dfs_sdk-1.2.20-py3-none-any.whl", "has_sig": false, "md5_digest": "79294ff327292bed8ec4e15b7a6b48fb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33286, "upload_time": "2018-12-20T18:56:06", "url": "https://files.pythonhosted.org/packages/a3/cb/88b8709016c9e4c7f30d65553832eaa5885e1ec0ad2112d49bb6f0c93710/dfs_sdk-1.2.20-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7be119c877339b8be4ce0156c845d1c9", "sha256": "19947a1d042d06b52df101e4d2b02fe13fd244116d02af12f1fd4ccca2c1ca51" }, "downloads": -1, "filename": "dfs_sdk-1.2.20.tar.gz", "has_sig": false, "md5_digest": "7be119c877339b8be4ce0156c845d1c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33833, "upload_time": "2018-12-20T18:56:08", "url": "https://files.pythonhosted.org/packages/e5/2e/bc1be71d5827ce0bc1e9a340ff839f27ea8c65234551b99db1bb03c451a7/dfs_sdk-1.2.20.tar.gz" } ], "1.2.21": [ { "comment_text": "", "digests": { "md5": "5c1caa94a1db586c092e923e3e454bbd", "sha256": "30a8333c2706bd0eab5dc904a5daacd5fba0c88d49881b8146b725ce7b999690" }, "downloads": -1, "filename": "dfs_sdk-1.2.21-py3-none-any.whl", "has_sig": false, "md5_digest": "5c1caa94a1db586c092e923e3e454bbd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33671, "upload_time": "2019-02-07T17:57:44", "url": "https://files.pythonhosted.org/packages/b6/5b/70c9dd7c8d62ba97def4c1381395e4ca9302db36813c4b7942dda86ccdf8/dfs_sdk-1.2.21-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "119b4cf161cdae53dba2bac6e08a772a", "sha256": "9d91b5a03f161a00226dd2996f03a7128f95f9a02f23595118036ee69267ed6c" }, "downloads": -1, "filename": "dfs_sdk-1.2.21.tar.gz", "has_sig": false, "md5_digest": "119b4cf161cdae53dba2bac6e08a772a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34104, "upload_time": "2019-02-07T17:57:46", "url": "https://files.pythonhosted.org/packages/ec/bc/d8e28c811bdc2d5667d18e27406ac3862711de1b6d4f1da2f13fae2ca983/dfs_sdk-1.2.21.tar.gz" } ], "1.2.22": [ { "comment_text": "", "digests": { "md5": "f8793424dd72b47586f1fa29d1447409", "sha256": "d0fc6fb415296bb13207b65ee7899e38dea38132a16d1e7bf5a65e317fee989f" }, "downloads": -1, "filename": "dfs_sdk-1.2.22-py3-none-any.whl", "has_sig": false, "md5_digest": "f8793424dd72b47586f1fa29d1447409", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33951, "upload_time": "2019-03-27T19:12:30", "url": "https://files.pythonhosted.org/packages/7b/d7/42fe11c19215dfbc81527d0a3f759b4e1bb8d2e91a7f95718bc5cfa39721/dfs_sdk-1.2.22-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d63ab1ed1277c3d82722e285b613948a", "sha256": "023de2d42050f799024549d914d54780aea96c350e950163da40d115f9fffbce" }, "downloads": -1, "filename": "dfs_sdk-1.2.22.tar.gz", "has_sig": false, "md5_digest": "d63ab1ed1277c3d82722e285b613948a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34436, "upload_time": "2019-03-27T19:12:32", "url": "https://files.pythonhosted.org/packages/0d/e4/4c4afbc4f4f959edd41efe22d88ffc1152755c91aee5935ea670c63bc957/dfs_sdk-1.2.22.tar.gz" } ], "1.2.23": [ { "comment_text": "", "digests": { "md5": "1adeca89cdd1b0c82a6806e23701761f", "sha256": "2b2604a25c1283dca185a427f9b418559a6f6e0c67a39062b9821e736d7b8ada" }, "downloads": -1, "filename": "dfs_sdk-1.2.23-py3-none-any.whl", "has_sig": false, "md5_digest": "1adeca89cdd1b0c82a6806e23701761f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34794, "upload_time": "2019-06-05T17:05:36", "url": "https://files.pythonhosted.org/packages/d3/1f/17fb31731e08a956cebb1b19cf5e094747bdf2b4235ca3095b6d663a7265/dfs_sdk-1.2.23-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "57a7f074eeaba293ba210bda720167b9", "sha256": "e02b3391f0673d463f7ced2b22bc78830cb4ec78ad6738e5af21f7c9ed986d3d" }, "downloads": -1, "filename": "dfs_sdk-1.2.23.tar.gz", "has_sig": false, "md5_digest": "57a7f074eeaba293ba210bda720167b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35046, "upload_time": "2019-06-05T17:05:37", "url": "https://files.pythonhosted.org/packages/6a/d8/79a5e18d9a7daa2334e9267c680005dedb093f3e76325150357766ab45fe/dfs_sdk-1.2.23.tar.gz" } ], "1.2.24": [ { "comment_text": "", "digests": { "md5": "9dc65fadacee305be8f8c367020c5c05", "sha256": "233a7fd1460080cf80fbb17acedf71eaa821907b2714e70bb1471ff4e4bf179c" }, "downloads": -1, "filename": "dfs_sdk-1.2.24-py3-none-any.whl", "has_sig": false, "md5_digest": "9dc65fadacee305be8f8c367020c5c05", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35665, "upload_time": "2019-06-11T21:15:28", "url": "https://files.pythonhosted.org/packages/b6/dc/0a562755f8fc41fdb9f896c181471dfb677a7acf11802a83904cc2ef4878/dfs_sdk-1.2.24-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5447cfef1270166e5753b3f5fa6d6d1", "sha256": "8b73b62149f5a1924916c05a84fdafa85ebc3f497b047692adc75261fc7db55e" }, "downloads": -1, "filename": "dfs_sdk-1.2.24.tar.gz", "has_sig": false, "md5_digest": "d5447cfef1270166e5753b3f5fa6d6d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35886, "upload_time": "2019-06-11T21:15:30", "url": "https://files.pythonhosted.org/packages/bf/7a/18af8faddb02332fed3a7e5457cc7310491b50d1e21f8f73660371904716/dfs_sdk-1.2.24.tar.gz" } ], "1.2.25": [ { "comment_text": "", "digests": { "md5": "c321c5a0646fa4dd927ba9ed9419c3fb", "sha256": "129e622f257f6322783328e055787d9cb0cefd04c3bb5e88ff0b4e13872760cb" }, "downloads": -1, "filename": "dfs_sdk-1.2.25-py3-none-any.whl", "has_sig": false, "md5_digest": "c321c5a0646fa4dd927ba9ed9419c3fb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35904, "upload_time": "2019-06-27T18:22:50", "url": "https://files.pythonhosted.org/packages/e3/3f/e1b9738f50aae7aacdd0e5b4f4615883ca190587964188ac4e2a6dcbf4fa/dfs_sdk-1.2.25-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2973330776295490dd025bd8dd852e5b", "sha256": "4f32a3826e463ea8d82a6d14b5de0edb0b348e211df924b7972a91ac2f4897e6" }, "downloads": -1, "filename": "dfs_sdk-1.2.25.tar.gz", "has_sig": false, "md5_digest": "2973330776295490dd025bd8dd852e5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36294, "upload_time": "2019-06-27T18:22:51", "url": "https://files.pythonhosted.org/packages/72/e0/1711983498529762e213483b4211962ac06428441667b0be4bce9db716ce/dfs_sdk-1.2.25.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c321c5a0646fa4dd927ba9ed9419c3fb", "sha256": "129e622f257f6322783328e055787d9cb0cefd04c3bb5e88ff0b4e13872760cb" }, "downloads": -1, "filename": "dfs_sdk-1.2.25-py3-none-any.whl", "has_sig": false, "md5_digest": "c321c5a0646fa4dd927ba9ed9419c3fb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35904, "upload_time": "2019-06-27T18:22:50", "url": "https://files.pythonhosted.org/packages/e3/3f/e1b9738f50aae7aacdd0e5b4f4615883ca190587964188ac4e2a6dcbf4fa/dfs_sdk-1.2.25-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2973330776295490dd025bd8dd852e5b", "sha256": "4f32a3826e463ea8d82a6d14b5de0edb0b348e211df924b7972a91ac2f4897e6" }, "downloads": -1, "filename": "dfs_sdk-1.2.25.tar.gz", "has_sig": false, "md5_digest": "2973330776295490dd025bd8dd852e5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36294, "upload_time": "2019-06-27T18:22:51", "url": "https://files.pythonhosted.org/packages/72/e0/1711983498529762e213483b4211962ac06428441667b0be4bce9db716ce/dfs_sdk-1.2.25.tar.gz" } ] }