{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "PartD\n=====\n\n|Build Status| |Version Status|\n\nKey-value byte store with appendable values\n\n Partd stores key-value pairs.\n Values are raw bytes.\n We append on old values.\n\nPartd excels at shuffling operations.\n\nOperations\n----------\n\nPartD has two main operations, ``append`` and ``get``.\n\n\nExample\n-------\n\n1. Create a Partd backed by a directory::\n\n >>> import partd\n >>> p = partd.File('/path/to/new/dataset/')\n\n2. Append key-byte pairs to dataset::\n\n >>> p.append({'x': b'Hello ', 'y': b'123'})\n >>> p.append({'x': b'world!', 'y': b'456'})\n\n3. Get bytes associated to keys::\n\n >>> p.get('x') # One key\n b'Hello world!'\n\n >>> p.get(['y', 'x']) # List of keys\n [b'123456', b'Hello world!']\n\n4. Destroy partd dataset::\n\n >>> p.drop()\n\nThat's it.\n\n\nImplementations\n---------------\n\nWe can back a partd by an in-memory dictionary::\n\n >>> p = Dict()\n\nFor larger amounts of data or to share data between processes we back a partd\nby a directory of files. This uses file-based locks for consistency.::\n\n >>> p = File('/path/to/dataset/')\n\nHowever this can fail for many small writes. In these cases you may wish to buffer one partd with another, keeping a fixed maximum of data in the buffering partd. This writes the larger elements of the first partd to the second partd when space runs low::\n\n >>> p = Buffer(Dict(), File(), available_memory=2e9) # 2GB memory buffer\n\nYou might also want to have many distributed process write to a single partd\nconsistently. This can be done with a server\n\n* Server Process::\n\n >>> p = Buffer(Dict(), File(), available_memory=2e9) # 2GB memory buffer\n >>> s = Server(p, address='ipc://server')\n\n* Worker processes::\n\n >>> p = Client('ipc://server') # Client machine talks to remote server\n\n\nEncodings and Compression\n-------------------------\n\nOnce we can robustly and efficiently append bytes to a partd we consider\ncompression and encodings. This is generally available with the ``Encode``\npartd, which accepts three functions, one to apply on bytes as they are\nwritten, one to apply to bytes as they are read, and one to join bytestreams.\nCommon configurations already exist for common data and compression formats.\n\nWe may wish to compress and decompress data transparently as we interact with a\npartd. Objects like ``BZ2``, ``Blosc``, ``ZLib`` and ``Snappy`` exist and take\nanother partd as an argument.::\n\n >>> p = File(...)\n >>> p = ZLib(p)\n\nThese work exactly as before, the (de)compression happens automatically.\n\nCommon data formats like Python lists, numpy arrays, and pandas\ndataframes are also supported out of the box.::\n\n >>> p = File(...)\n >>> p = NumPy(p)\n >>> p.append({'x': np.array([...])})\n\nThis lets us forget about bytes and think instead in our normal data types.\n\nComposition\n-----------\n\nIn principle we want to compose all of these choices together\n\n1. Write policy: ``Dict``, ``File``, ``Buffer``, ``Client``\n2. Encoding: ``Pickle``, ``Numpy``, ``Pandas``, ...\n3. Compression: ``Blosc``, ``Snappy``, ...\n\nPartd objects compose by nesting. Here we make a partd that writes pickle\nencoded BZ2 compressed bytes directly to disk::\n\n >>> p = Pickle(BZ2(File('foo')))\n\nWe could construct more complex systems that include compression,\nserialization, buffering, and remote access.::\n\n >>> server = Server(Buffer(Dict(), File(), available_memory=2e0))\n\n >>> client = Pickle(Snappy(Client(server.address)))\n >>> client.append({'x': [1, 2, 3]})\n\n.. |Build Status| image:: https://travis-ci.org/dask/partd.png\n :target: https://travis-ci.org/dask/partd\n.. |Version Status| image:: https://img.shields.io/pypi/v/partd.svg\n :target: https://pypi.python.org/pypi/partd/\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/dask/partd/", "keywords": "", "license": "BSD", "maintainer": "Matthew Rocklin", "maintainer_email": "mrocklin@gmail.com", "name": "partd", "package_url": "https://pypi.org/project/partd/", "platform": "", "project_url": "https://pypi.org/project/partd/", "project_urls": { "Homepage": "http://github.com/dask/partd/" }, "release_url": "https://pypi.org/project/partd/1.0.0/", "requires_dist": [ "locket", "toolz", "numpy (>=1.9.0) ; extra == 'complete'", "pandas (>=0.19.0) ; extra == 'complete'", "pyzmq ; extra == 'complete'", "blosc ; extra == 'complete'" ], "requires_python": "", "summary": "Appendable key-value storage", "version": "1.0.0" }, "last_serial": 5444132, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "1a34ff0453e73c0775a3150990b2a141", "sha256": "295da6c94be50f60d9b0454a2e43142e242bb2031664f5fe4020e605547241e4" }, "downloads": -1, "filename": "partd-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1a34ff0453e73c0775a3150990b2a141", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5140, "upload_time": "2015-05-08T16:40:21", "url": "https://files.pythonhosted.org/packages/71/1a/fbde24a968980ad218a120e57ee665170345c23de30498183e73bfa8f4e4/partd-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "0e344d9094545aadae31c84f4f64d050", "sha256": "434d9a58e9e12572edef6dd5a1e23f8a6d415219534b8c88046abda27af70abe" }, "downloads": -1, "filename": "partd-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0e344d9094545aadae31c84f4f64d050", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11099, "upload_time": "2015-05-19T17:05:23", "url": "https://files.pythonhosted.org/packages/f3/99/576e2d560e053a069e91f313d2285a98f09eba17c3793892965a5a1aae24/partd-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "562a13a51f0a2c905d99834bb6057e61", "sha256": "7fe4e7563b7f9e35e39e9ce14a03b1eaa7adda4296208538572a1c67a45b2eca" }, "downloads": -1, "filename": "partd-0.2.1.tar.gz", "has_sig": false, "md5_digest": "562a13a51f0a2c905d99834bb6057e61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11194, "upload_time": "2015-05-20T14:50:00", "url": "https://files.pythonhosted.org/packages/14/90/60a8e78991d2cfb0322a09013bccc8c729cb28d97e629a174ec6288b99cb/partd-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "94f227253b5aa1064db363760f460e37", "sha256": "350a6ad36252d571e2aa3a116e4e365c14af9400f9c6a82428e34658ede779d5" }, "downloads": -1, "filename": "partd-0.2.2.tar.gz", "has_sig": false, "md5_digest": "94f227253b5aa1064db363760f460e37", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14262, "upload_time": "2015-05-22T19:37:00", "url": "https://files.pythonhosted.org/packages/1c/c2/0783c7b31eb0399ddbb94e74d39b6e8513e1e7c16f3937050c724720c2c2/partd-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "5812713026083aaa0150da5c21229c6a", "sha256": "41ab11dae0eec877864da36be1df8fc55966c9aadb508a83e229efae33f2b541" }, "downloads": -1, "filename": "partd-0.3.0.tar.gz", "has_sig": false, "md5_digest": "5812713026083aaa0150da5c21229c6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14766, "upload_time": "2015-06-12T12:08:31", "url": "https://files.pythonhosted.org/packages/b4/02/d409b2d98760951be548f785b9cacd827c635bddddc2b8df4b6e1aa8721b/partd-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "8456f2d06c94fb47f113f65a64688304", "sha256": "5af84bd0700a6dca7b4d5396a0997f65535d576defd8b97509498269d174b1c5" }, "downloads": -1, "filename": "partd-0.3.1.tar.gz", "has_sig": false, "md5_digest": "8456f2d06c94fb47f113f65a64688304", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16944, "upload_time": "2015-06-27T17:51:58", "url": "https://files.pythonhosted.org/packages/a4/50/9970337d5e1027ebd50d325c19e31adfe1d0a8b32b728d40f41ba06478f8/partd-0.3.1.tar.gz" } ], "0.3.10": [ { "comment_text": "", "digests": { "md5": "12c558192bcc6ff12884ffea65adb4ec", "sha256": "826e8034dc1503005f86b67c8542bc8c71cc35b33741b413e82d25a09cc26ad9" }, "downloads": -1, "filename": "partd-0.3.10-py3-none-any.whl", "has_sig": false, "md5_digest": "12c558192bcc6ff12884ffea65adb4ec", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18482, "upload_time": "2019-03-14T18:14:13", "url": "https://files.pythonhosted.org/packages/9e/f5/c02903ad5a444c9f80e4d1fe4d512afd76e3801de2fba80ea9ed28f9290c/partd-0.3.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1d4c9e626859068c417fbb680af8b9e", "sha256": "33722a228ebcd1fa6f44b1631bdd4cff056376f89eb826d7d880b35b637bcfba" }, "downloads": -1, "filename": "partd-0.3.10.tar.gz", "has_sig": false, "md5_digest": "b1d4c9e626859068c417fbb680af8b9e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19076, "upload_time": "2019-03-14T18:14:14", "url": "https://files.pythonhosted.org/packages/75/c5/8f152e9f40024c9018e160734cd147636e2babc1cb9f253f953c603b1cbc/partd-0.3.10.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "6d533e499c785b5e5790774a4974bee9", "sha256": "0b8a2f313d07548ab5fbca89fae27d63ce81709ee544609b9e515d9c604ca910" }, "downloads": -1, "filename": "partd-0.3.2.tar.gz", "has_sig": false, "md5_digest": "6d533e499c785b5e5790774a4974bee9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17097, "upload_time": "2015-06-30T18:26:32", "url": "https://files.pythonhosted.org/packages/37/9c/a57d3ad5a7f216ad308ecfdf3a90274307c2332c4715767c703fa01447b1/partd-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "04e52926b760bee12c1c8790bac0df34", "sha256": "cb3ec793e09e91d2646ed24e17799da1272def4bf492041427e22e5c2b205720" }, "downloads": -1, "filename": "partd-0.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "04e52926b760bee12c1c8790bac0df34", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19600, "upload_time": "2016-05-10T22:46:47", "url": "https://files.pythonhosted.org/packages/6c/64/ef880e1c4f970c92f49b4ab5f2cf13f03109f00510efbd36a3aea2605093/partd-0.3.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "175d738ebc5feaabd72e927eb632e817", "sha256": "1b7d37ec5c8eeac2659db0b00ae6db53689aeed96f73a35f7110d4fba09bf939" }, "downloads": -1, "filename": "partd-0.3.3.tar.gz", "has_sig": false, "md5_digest": "175d738ebc5feaabd72e927eb632e817", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17553, "upload_time": "2016-05-10T22:46:53", "url": "https://files.pythonhosted.org/packages/88/05/b11b71cfb41657c91f1c1f23a00a0c63d9eb7720ae664025a68bbbf0a21b/partd-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "342158a521c520641c5da0e94fe6c51f", "sha256": "aab32734ffd3c0e431cc251ddb66f853a100346eefeb64164dca695b8be0fb51" }, "downloads": -1, "filename": "partd-0.3.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "342158a521c520641c5da0e94fe6c51f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19621, "upload_time": "2016-06-11T00:40:24", "url": "https://files.pythonhosted.org/packages/fe/82/2c3da6299fcba5e2d1723663f78a7cd49dcaa8b3a4f2fea12bb3c1067744/partd-0.3.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6581f265299ceaf1df86422fc8c0a754", "sha256": "7dce2e5e95c48d8da1b0ea05efcfff1150731e3f4081aecf9d5e8337a30ad24e" }, "downloads": -1, "filename": "partd-0.3.4.tar.gz", "has_sig": false, "md5_digest": "6581f265299ceaf1df86422fc8c0a754", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15684, "upload_time": "2016-06-11T00:40:28", "url": "https://files.pythonhosted.org/packages/81/0b/e69d4e325a7b2d0cd5b6a7ff8f9c620c78c21d0f20d95718ff0caad71435/partd-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "413d0255aedf953feaa0bff2faf8a4b4", "sha256": "e07a00b221d469e6809e8eb57931d9fa9b6a6efa687aeb27704bc36bc03656fc" }, "downloads": -1, "filename": "partd-0.3.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "413d0255aedf953feaa0bff2faf8a4b4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19622, "upload_time": "2016-07-26T20:12:55", "url": "https://files.pythonhosted.org/packages/28/87/f021d5d1454ec6f61b4c29e7c0add130f899c46811ed193fb766e14b4e79/partd-0.3.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0adf919103e6cc8c7a6d72f3027cefb3", "sha256": "83f4bf4973e2e3ea1b15af344766d3b20184bf669777e8e37129fcb496a6d2df" }, "downloads": -1, "filename": "partd-0.3.5.tar.gz", "has_sig": false, "md5_digest": "0adf919103e6cc8c7a6d72f3027cefb3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15964, "upload_time": "2016-07-26T20:12:58", "url": "https://files.pythonhosted.org/packages/e0/12/6cbc058ce0e6d91def9786d4015289b7a59d6e670ebf27bb9e1268a0f484/partd-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "fd7f271489927041222a1383afbbf3a9", "sha256": "6395a2983dc767e01afc6ac2146c06000ebe3806e9f96b75cc659d376cffdae6" }, "downloads": -1, "filename": "partd-0.3.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fd7f271489927041222a1383afbbf3a9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19648, "upload_time": "2016-08-18T12:22:06", "url": "https://files.pythonhosted.org/packages/71/9a/307d8340ceb156f860a3d801ab4075a3d3870c7b8bb7a7da32d7b06879e5/partd-0.3.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4fe19796e22c85f7917e40f618f349fb", "sha256": "1522c30578fe6a84e0a9310d537f2fcc0d21135bab1e4dc15fd74ada5c9c88f2" }, "downloads": -1, "filename": "partd-0.3.6.tar.gz", "has_sig": false, "md5_digest": "4fe19796e22c85f7917e40f618f349fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17721, "upload_time": "2016-08-18T12:22:08", "url": "https://files.pythonhosted.org/packages/68/41/f28699a7b91aac85a1d0e013a97788175088fab936cd67f265edec92e853/partd-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "0bfeb05925b92bc42b9d0573ee3327d8", "sha256": "20060e65d2c1e07c0bd992e99af58597e61250f33868d2d6b6297817585e61b7" }, "downloads": -1, "filename": "partd-0.3.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0bfeb05925b92bc42b9d0573ee3327d8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19498, "upload_time": "2016-12-26T21:51:36", "url": "https://files.pythonhosted.org/packages/cc/1d/2aa06da86d78cc0e92bdf7c312480fa1ead5ab4f5e9468d9832d6c639cea/partd-0.3.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7065f9ba12ba67463d16b2fde753a702", "sha256": "fdc344bca07f3b10645cc380950a00bbfcdbf993f3396715eb0936d14811cd18" }, "downloads": -1, "filename": "partd-0.3.7.tar.gz", "has_sig": false, "md5_digest": "7065f9ba12ba67463d16b2fde753a702", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17530, "upload_time": "2016-12-26T21:51:39", "url": "https://files.pythonhosted.org/packages/1f/7e/43af21a5b399288946607ffecf412fd6fc7a354842b460eaefc28fd3f043/partd-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "468cfa06b51622488674473997f4dba0", "sha256": "041ef0bd589e2d803b6ff6ac2b559adadcaf40a161a8eeb5a367d5e0f399ac1e" }, "downloads": -1, "filename": "partd-0.3.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "468cfa06b51622488674473997f4dba0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19797, "upload_time": "2017-05-03T17:28:03", "url": "https://files.pythonhosted.org/packages/4a/ca/207a28fd81111f6a88e79a006745ff432b9cae850fbafa27486e98d459da/partd-0.3.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "554d0e6511c0df4c907f034858be847f", "sha256": "67291f1c4827cde3e0148b3be5d69af64b6d6169feb9ba88f0a6cfe77089400f" }, "downloads": -1, "filename": "partd-0.3.8.tar.gz", "has_sig": false, "md5_digest": "554d0e6511c0df4c907f034858be847f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19171, "upload_time": "2017-05-03T17:28:04", "url": "https://files.pythonhosted.org/packages/e7/0c/b257648852230acf169c60283e59475727b156ee1a0a3a6b5527af745f15/partd-0.3.8.tar.gz" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "2e4b9ed361fc9978d8f8f2a9639733b7", "sha256": "fb64ba53fdf8c65cfa8e3a797b7402afab48b14bf1a001d1a9c01291bba0b70c" }, "downloads": -1, "filename": "partd-0.3.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2e4b9ed361fc9978d8f8f2a9639733b7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19918, "upload_time": "2018-10-13T15:14:26", "url": "https://files.pythonhosted.org/packages/e2/bc/4dfd1e62e04a26d7ee56ade63af15e3249aeb3ed05d70ac590da2ca7c44d/partd-0.3.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d795ec221af698048709a8051746d907", "sha256": "1fd6d9c12f14ea180e659a9e4a686ff2816dd930e8fb0b84c0d8116a29cfe66b" }, "downloads": -1, "filename": "partd-0.3.9.tar.gz", "has_sig": false, "md5_digest": "d795ec221af698048709a8051746d907", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19312, "upload_time": "2018-10-13T15:14:28", "url": "https://files.pythonhosted.org/packages/d0/4e/e9ee7f4a010a177d3152fd9fe5677388e1be20c3728be6b40dfcd58e80ec/partd-0.3.9.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "d85b09f04d698a9e92e98dd117032423", "sha256": "f278ded3a62560db4a0d1529664fedc440585c520407a53b071fdbfb043187b9" }, "downloads": -1, "filename": "partd-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d85b09f04d698a9e92e98dd117032423", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18579, "upload_time": "2019-06-25T07:00:30", "url": "https://files.pythonhosted.org/packages/8b/17/09c352519da1db31634979c3aa9126078e9ece0f561c5f641e0649b78905/partd-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b492dfc8a2f372a177371b4938462464", "sha256": "54fd91bc3b9c38159c790cd16950dbca6b019a2ead4c51dee4f9efc884f8ce0e" }, "downloads": -1, "filename": "partd-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b492dfc8a2f372a177371b4938462464", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19185, "upload_time": "2019-06-25T07:00:31", "url": "https://files.pythonhosted.org/packages/87/d4/de6094b60d4714db31b47a2a2df3a6620a81645ca894bbeec028b4a5acf8/partd-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d85b09f04d698a9e92e98dd117032423", "sha256": "f278ded3a62560db4a0d1529664fedc440585c520407a53b071fdbfb043187b9" }, "downloads": -1, "filename": "partd-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d85b09f04d698a9e92e98dd117032423", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18579, "upload_time": "2019-06-25T07:00:30", "url": "https://files.pythonhosted.org/packages/8b/17/09c352519da1db31634979c3aa9126078e9ece0f561c5f641e0649b78905/partd-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b492dfc8a2f372a177371b4938462464", "sha256": "54fd91bc3b9c38159c790cd16950dbca6b019a2ead4c51dee4f9efc884f8ce0e" }, "downloads": -1, "filename": "partd-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b492dfc8a2f372a177371b4938462464", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19185, "upload_time": "2019-06-25T07:00:31", "url": "https://files.pythonhosted.org/packages/87/d4/de6094b60d4714db31b47a2a2df3a6620a81645ca894bbeec028b4a5acf8/partd-1.0.0.tar.gz" } ] }