{ "info": { "author": "Christophe Guillon", "author_email": "christophe.guillon.perso@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: Public Domain", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Text Processing :: Markup :: XML" ], "description": "# xmlplain\n\nXML as plain object utility module\n\n[![Build Status](https://secure.travis-ci.org/guillon/xmlplain.svg)](http://travis-ci.org/guillon/xmlplain)\n\n## Synopsys\n\nThis module is a set of utility functions for parsing self-contained\nXML input into plain list/dict/string types and emitting to/reading\nfrom XML or YAML formats.\n\nThe motivating usage was to dump XML to YAML, manually edit\nfiles as YAML, and emit XML output back.\n\nThough this module can be used more simply to dump compatible plain\nlist/dict/string objects into XML or YAML for textual storage.\n\nAn XML file content when read to object and written back to XML has\nall it's document strcuture and content preserved w.r.t. to\nelements start/end and text content.\nThough XML comments, document type specifications, external\nentity definitions are discarded if present on input. External system\nentities (i.e. inclusion of external files) are not supported\nand generate an input error.\n\nThe input XML is just syntactically validated and does not validate\nagainst any DTD or schema specification as the underlying backend\nis the core xml.sax module.\n\nThe only and optional destructive transformation on the document\ncontent is a `strip_space` option on reading (resp. `pretty` option\non writing) which can affect non-leaf text content (stripping\nleading and trailing spaces).\n\nThe XML namespaces are ignored as there is no actual schema validation,\nhence element, attribute names and namespaces URIs attributes\nare passed and preserved as-is.\n\nNote that there are alternative modules with nearly the same\nfunctionality, but none of them provide all of:\n\n- simple plain objects (dict, list, strings) dumped to/reloaded from XML\n- preservation of semi-structured XML documents (tags duplicates,\n mixed text and tags) on input\n- management of human-editable form through YAML bridge\n\n\n## Usage\n\nIn order to convert a XML file to a YAML representation, for instance given\nthe `tests/example-1.xml` file:\n\n```xml\n\n This is an example for xmlobj documentation. \n \n document\n example\n \n \n Elt 1\n Elt 2\n Elt 3\n Elt 4\n \n \n\n```\n\nExecute the following python code:\n\n```python\nimport xmlplain\n\n# Read to plain object\nwith open(\"tests/example-1.xml\") as inf:\n root = xmlplain.xml_to_obj(inf, strip_space=True, fold_dict=True)\n\n# Output plain YAML\nwith open(\"example-1.yml\", \"w\") as outf:\n xmlplain.obj_to_yaml(root, outf)\n```\n\nThis will output the YAML representation in `example-1.yml`:\n\n```yaml\nexample:\n doc: 'This is an example for xmlobj documentation. '\n content:\n '@version': beta\n kind: document\n class: example\n structured: ''\n elements:\n - item: Elt 1\n - doc: Elt 2\n - item: Elt 3\n - doc: Elt 4\n```\n\nOne can then read the emitted YAML representation and generate\nagain an XML output with:\n\n```python\nimport xmlplain\n\n# Read the YAML file\nwith open(\"example-1.yml\") as inf:\n root = xmlplain.obj_from_yaml(inf)\n\n# Output back XML\nwith open(\"example-1.new.xml\", \"w\") as outf:\n xmlplain.xml_from_obj(root, outf, pretty=True)\n```\n\nThis will output back the following XML (there may be some\nindentation and/or short empty elements differences w.r.t. the\noriginal):\n\n```xml\n\n\n This is an example for xmlobj documentation. \n \n document\n example\n \n \n Elt 1\n Elt 2\n Elt 3\n Elt 4\n \n \n\n```\n\nFor a detailled usage, read the API documentation with:\n\n pydoc xmlplain\n\nOr get to the online documentation at: https://guillon.github.io/xmlplain\n\n\n## Install\n\nThe module is compatible with `python 2.6/2.7` and `python 3.x`.\n\nFor a local installation (installs to `$HOME/.local`) do:\n\n pip install --user xmlplain\n\nThis will install the last release and its dependencies in your user environment.\n\nOptionally install at system level with:\n\n sudo pip install xlmplain\n\n\n## Sources\n\nDownload this module archives from the releases at: https://github.com/guillon/xmlplain/releases\n\nOr clone the source git repository at: https://github.com/guillon/xmlplain\n\n\n## Installation from sources\n\nInstall first modules dependencies with:\n\n pip install --user setuptools PyYAML ordereddict\n\n\nEither copy the `xmlplain.py` file somewhere or install it\nwith `setup.py`.\n\nFor a user local installation (installs to `$HOME/.local`) do:\n\n ./setup.py install --user\n\n\n## Development\n\nThis module is delivered as part of a source tree with tests, in order\nto run tests, do for instance:\n\n make -j16 check\n\nWith python coverage installed, one may check coverage of changes with:\n\n make -j16 coverage\n\tfirefox tests/coverage/html/index.html\n\nWhen check target pass and newly added code is covered,\nplease submit a pull request to https://github.com/guillon/xmlplain\n\n\n## Documentation\n\nThe documentation is generated with `sphinx` as is:\n\n\tmake doc\n firefox html/index.html\n\nThe online documentation is hosted at: https://guillon.github.io/xmlplain\n\n\n## Release\n\nThe release process relies on the virtualenv tool, python2 and python3\nbeing installed on the release host.\n\nThe release builds, tests, do coverage checks on both python2 and python3\nthen generates documentation and uploadable archives for PyPi.\n\nBefore Bumping a release be sure to update the `__version__` string\nin `xmlplain.py` and commit it (no check is done against the version\nin the release target).\n\nThen Proceed as follow to prepare the release:\n\n make -j16 release\n\nWhen all this passes locally, commit all and push to github\n`next/master` branch in order to have travis checks running.\nVerify travis status before proceeding further, for instance\nfrom the travis command line with:\n\n travis branches\n\nOnce all is passed, and the `make -j16 release` target has been re-executed,\nupload doc to github and packages to PyPI with:\n\n make release-upload\n\nAt this point the package version should be available on https://pypi.org/project/xmlplain\nand the doc updated on https://guillon.github.io/xmlplain\n\nOne should check the proper installation on PyPi with:\n\n make -j16 release-check\n\nWhich will restart a release check, this time downloading from PyPI instead of using\nthe local sources.\n\nAfter all is done, one should manually update the github with:\n\n- Apply a tag `vx.y.z` matching the new release version and push it to github\n- Go to github and finalize the tag promotion into a release with and at least upload\n also on in the github release the source archive `xmlplain-x.y.x.tar.gz` available\n on the just uploaded PyPi files: https://pypi.org/project/xmlplain/#files\n- Optionally add some information and publish the release\n\n\n## License\n\nThis is free and unencumbered software released into the public domain.\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/guillon/xmlplain", "keywords": "", "license": "unlicense", "maintainer": "", "maintainer_email": "", "name": "xmlplain", "package_url": "https://pypi.org/project/xmlplain/", "platform": "", "project_url": "https://pypi.org/project/xmlplain/", "project_urls": { "Homepage": "https://github.com/guillon/xmlplain" }, "release_url": "https://pypi.org/project/xmlplain/1.6.0/", "requires_dist": [ "ordereddict", "PyYAML" ], "requires_python": "", "summary": "XML as plain object module", "version": "1.6.0" }, "last_serial": 4218799, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "5b66e6e1f0bf908bff11afddaf4a0cf9", "sha256": "a1e719348fb7e85b44373a92dd7fe757cb77e50c1ce8aacfff6c88c977ec8aeb" }, "downloads": -1, "filename": "xmlplain-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "5b66e6e1f0bf908bff11afddaf4a0cf9", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9963, "upload_time": "2018-08-21T14:13:27", "url": "https://files.pythonhosted.org/packages/9d/f5/92c1fddb51a387148277a7e8b0e8360d7fbd749241332e42c3f296825b02/xmlplain-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ccd69f5d2c2eddb4bb6e1b1e7500dd1d", "sha256": "daf38489d3575fbd1099581d32c5fcb63377af11c46a636e0f1de1c98953e83b" }, "downloads": -1, "filename": "xmlplain-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ccd69f5d2c2eddb4bb6e1b1e7500dd1d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9962, "upload_time": "2018-08-21T14:05:42", "url": "https://files.pythonhosted.org/packages/ed/a8/4ac27115bc33d43c21a03f81bc2482161769bbe7d59a5ea475c497b7c8db/xmlplain-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e2c3f5fd30889dbd2ebea75ca8d22c36", "sha256": "9e5a5ef63b5c16c0e0424456aa0a820a36e4b29fee8b23780e4247b14bb6e1fe" }, "downloads": -1, "filename": "xmlplain-1.0.2.tar.gz", "has_sig": false, "md5_digest": "e2c3f5fd30889dbd2ebea75ca8d22c36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26777, "upload_time": "2018-08-21T14:05:43", "url": "https://files.pythonhosted.org/packages/8e/cf/e19e3ee6265b15e17b501593acbcb3cdf1de543accd2a80af9bd1a0d6ef9/xmlplain-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "3a0e7f1ea79e4194379bdf2dd6ac58cf", "sha256": "bdc04235e11124489adb2facc260f448aab6aa106b10bdd478cf4d7c58d0a939" }, "downloads": -1, "filename": "xmlplain-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "3a0e7f1ea79e4194379bdf2dd6ac58cf", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10273, "upload_time": "2018-08-23T12:37:39", "url": "https://files.pythonhosted.org/packages/40/33/9b1af880c95f3aa2c1b46a17f8a0149fbdf83fa0521aba6ff6f6183e9872/xmlplain-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9596048b0fca2373e51081fa4ca863a8", "sha256": "a07a1aac2c5afbb018751d02c58c1901b92aa4daab0c4a5342bf562642077c23" }, "downloads": -1, "filename": "xmlplain-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9596048b0fca2373e51081fa4ca863a8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10273, "upload_time": "2018-08-23T12:37:40", "url": "https://files.pythonhosted.org/packages/a8/30/fb0fb9003c082271a3309a1994233c7ce1ffa1d836984564cef3ff7fcbbd/xmlplain-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "004040c622f575d75c6a4fec103f3ecb", "sha256": "21101ae61e28d33110874aecf72a127b5430c8cb3a4ffbb039ce58ac4e6a2de5" }, "downloads": -1, "filename": "xmlplain-1.1.0.tar.gz", "has_sig": false, "md5_digest": "004040c622f575d75c6a4fec103f3ecb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85546, "upload_time": "2018-08-23T12:37:42", "url": "https://files.pythonhosted.org/packages/c5/5f/c460aea3899fcf1ebbe0bf4bc34b9707f88350ff2858129eee6316a1aadd/xmlplain-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "40d4ee1c842c0236ad7b531894af4c83", "sha256": "c6316577eb75fa4da61bcc1f495b3d40b53e923b51b0868631aaafdfccbd92e3" }, "downloads": -1, "filename": "xmlplain-1.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "40d4ee1c842c0236ad7b531894af4c83", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10244, "upload_time": "2018-08-23T16:56:10", "url": "https://files.pythonhosted.org/packages/c0/97/61923e3587560e9afb6e7ea83ed0e1e0bb75ade642bf62a1559c694a7612/xmlplain-1.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e3756f78082382daad030d0e9d96e39", "sha256": "ff7ace68059f222074386a084abc9063168e75206e05a8e0655cf879ae3e74fe" }, "downloads": -1, "filename": "xmlplain-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2e3756f78082382daad030d0e9d96e39", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10243, "upload_time": "2018-08-23T16:56:12", "url": "https://files.pythonhosted.org/packages/80/c8/e8551336f2bb60674901e0e600c18992fca78572a5bb64c3ea0590faa878/xmlplain-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5aad4202eaf067e963d786536f8f19c8", "sha256": "934c4dcd42424055599f9447a5958ddd8e696dfa05b3e9c22c0091b6fb5459d1" }, "downloads": -1, "filename": "xmlplain-1.2.0.tar.gz", "has_sig": false, "md5_digest": "5aad4202eaf067e963d786536f8f19c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85418, "upload_time": "2018-08-23T16:56:13", "url": "https://files.pythonhosted.org/packages/64/f6/b3e5c9b9735d8543bc7b5f881e89b652eb08a579c0e50a0c6a3740e2912a/xmlplain-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "983d10760d67d3de0752a96a526a960f", "sha256": "8b66f3c6eeb51bc088c78129ae4298f44771f560285ba60b35fd134e6f279193" }, "downloads": -1, "filename": "xmlplain-1.3.0-py2-none-any.whl", "has_sig": false, "md5_digest": "983d10760d67d3de0752a96a526a960f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10561, "upload_time": "2018-08-25T06:01:17", "url": "https://files.pythonhosted.org/packages/b7/18/fe771aec3899e625d71fc94af2b09221c2a69a2744a4e4397f123da7c005/xmlplain-1.3.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8fe77615559e8fc06fc84bf40064f1ce", "sha256": "70942ad4fca882cf0b8c48f6ec531423a1e213b202b6aa3926f3b33f331a6dfa" }, "downloads": -1, "filename": "xmlplain-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8fe77615559e8fc06fc84bf40064f1ce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10561, "upload_time": "2018-08-25T06:01:18", "url": "https://files.pythonhosted.org/packages/4b/a5/d81e565a5ea8e70a6e2c40ae97bbda7aeedf454f0dda9886354a79cf21d1/xmlplain-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17bb60bb1c944672033965489a3ce50d", "sha256": "3d300dd26ec3f869bdab84acf9f1fcae21735a1b7bc90022fe1a6a82ae880d87" }, "downloads": -1, "filename": "xmlplain-1.3.0.tar.gz", "has_sig": false, "md5_digest": "17bb60bb1c944672033965489a3ce50d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 86241, "upload_time": "2018-08-25T06:01:20", "url": "https://files.pythonhosted.org/packages/aa/c6/fba9677dfd0d4e06d14cf649088ecc3ad118f033e14412ded6b68be03012/xmlplain-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "c2a787011802c94cd794344e003c3f6e", "sha256": "6b43ca550aad94531c3509ed74d6340ac79e81a56129f14558230f3043dea4db" }, "downloads": -1, "filename": "xmlplain-1.4.0-py2-none-any.whl", "has_sig": false, "md5_digest": "c2a787011802c94cd794344e003c3f6e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10869, "upload_time": "2018-08-27T12:01:10", "url": "https://files.pythonhosted.org/packages/a8/ff/11b667ad9ce7d9cce66dacca2c2c58446c7ae8fde95a036fb6a799f5e671/xmlplain-1.4.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8066ab34917b73c1562538233ec359a0", "sha256": "8f0b3f1d62d2422511a430df0ae303deef4e621687e9b229c71d58608f11b951" }, "downloads": -1, "filename": "xmlplain-1.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8066ab34917b73c1562538233ec359a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10868, "upload_time": "2018-08-27T12:01:12", "url": "https://files.pythonhosted.org/packages/ae/48/04170a80b8b34ae454a95231d5a727dd0811e03e62725bee346ac3cc7810/xmlplain-1.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce15cf89e0b3fbf205eee1f0e42c784d", "sha256": "d3399f190c2aaa6a3251ef7b48b3ebb4bb968f904161e2b8ff01dcb5d1c26ecd" }, "downloads": -1, "filename": "xmlplain-1.4.0.tar.gz", "has_sig": false, "md5_digest": "ce15cf89e0b3fbf205eee1f0e42c784d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 86574, "upload_time": "2018-08-27T12:01:13", "url": "https://files.pythonhosted.org/packages/0a/02/6d663c50fa97162e8955dca1d08c5b0de3581b61fc47739fa7cb61a1c85d/xmlplain-1.4.0.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "f1aeab6f90bbf8544af781cebd1d1976", "sha256": "c3cbe21108a2586495b107ef3cedc2803b0d90c2ed0ef86d4bd6f56712d58841" }, "downloads": -1, "filename": "xmlplain-1.5.0-py2-none-any.whl", "has_sig": false, "md5_digest": "f1aeab6f90bbf8544af781cebd1d1976", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 12061, "upload_time": "2018-08-28T18:03:52", "url": "https://files.pythonhosted.org/packages/38/ba/15acbbe21b60895c6b9a15de710f260f71adc729b620f9928cc3827afb1e/xmlplain-1.5.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4960efae1c12e71981ec4be4b08b08e6", "sha256": "84c87e37f607de7f04554d07fc89821fefb16dffe4d12c9809c3e2e783aaeb55" }, "downloads": -1, "filename": "xmlplain-1.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4960efae1c12e71981ec4be4b08b08e6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12060, "upload_time": "2018-08-28T18:03:53", "url": "https://files.pythonhosted.org/packages/d0/60/ade95f27cd3294d3e88b2bb480900fbb5abb990b53b284f47cc8ab94568f/xmlplain-1.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "56592f5ea6270a72d326d4f46318c67d", "sha256": "6499fb48c9715049a2716086e575a57d87bf59507111544a7ca9fcaa2d8d8921" }, "downloads": -1, "filename": "xmlplain-1.5.0.tar.gz", "has_sig": false, "md5_digest": "56592f5ea6270a72d326d4f46318c67d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89799, "upload_time": "2018-08-28T18:03:55", "url": "https://files.pythonhosted.org/packages/94/35/f798f6fdb038542dcf518a36dca943f059b15d4e9af799c530ac201d2ccf/xmlplain-1.5.0.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "4b270e4b34022cbd74a391adc4f39710", "sha256": "c8e4c2b4ebf473be2fe149f8eb4b2d4cefa1407c318da8c7f8463ea8f7cdd9d6" }, "downloads": -1, "filename": "xmlplain-1.6.0-py2-none-any.whl", "has_sig": false, "md5_digest": "4b270e4b34022cbd74a391adc4f39710", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 12239, "upload_time": "2018-08-29T12:45:12", "url": "https://files.pythonhosted.org/packages/0c/fb/20f2adf8f76948ae9e6ee42eaf4223f72eda5ed358633cfbf82babdf84f8/xmlplain-1.6.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "88552d17fddba5e5531ca573b216ddc5", "sha256": "243c2b64febf7a13716987a4476e34833faf3f037e2533a5b94a2c19ff555c65" }, "downloads": -1, "filename": "xmlplain-1.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "88552d17fddba5e5531ca573b216ddc5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12237, "upload_time": "2018-08-29T12:45:13", "url": "https://files.pythonhosted.org/packages/9b/4f/0c7ef1c5cb5358577c81599a1779590741ad0e828a52087ca1dd40792b9f/xmlplain-1.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f572267a063f7fddf3ccdc6ebc5d0428", "sha256": "a9ccfa8ab36e4df1b0580458312501b7ae7625bad3c4fcc1b8c124aad775d8e3" }, "downloads": -1, "filename": "xmlplain-1.6.0.tar.gz", "has_sig": false, "md5_digest": "f572267a063f7fddf3ccdc6ebc5d0428", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90015, "upload_time": "2018-08-29T12:45:14", "url": "https://files.pythonhosted.org/packages/2d/a7/56c2d1145b71b4dff6ffa63616760b21f5c25ac4e0d053be5e065c9a938d/xmlplain-1.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4b270e4b34022cbd74a391adc4f39710", "sha256": "c8e4c2b4ebf473be2fe149f8eb4b2d4cefa1407c318da8c7f8463ea8f7cdd9d6" }, "downloads": -1, "filename": "xmlplain-1.6.0-py2-none-any.whl", "has_sig": false, "md5_digest": "4b270e4b34022cbd74a391adc4f39710", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 12239, "upload_time": "2018-08-29T12:45:12", "url": "https://files.pythonhosted.org/packages/0c/fb/20f2adf8f76948ae9e6ee42eaf4223f72eda5ed358633cfbf82babdf84f8/xmlplain-1.6.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "88552d17fddba5e5531ca573b216ddc5", "sha256": "243c2b64febf7a13716987a4476e34833faf3f037e2533a5b94a2c19ff555c65" }, "downloads": -1, "filename": "xmlplain-1.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "88552d17fddba5e5531ca573b216ddc5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12237, "upload_time": "2018-08-29T12:45:13", "url": "https://files.pythonhosted.org/packages/9b/4f/0c7ef1c5cb5358577c81599a1779590741ad0e828a52087ca1dd40792b9f/xmlplain-1.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f572267a063f7fddf3ccdc6ebc5d0428", "sha256": "a9ccfa8ab36e4df1b0580458312501b7ae7625bad3c4fcc1b8c124aad775d8e3" }, "downloads": -1, "filename": "xmlplain-1.6.0.tar.gz", "has_sig": false, "md5_digest": "f572267a063f7fddf3ccdc6ebc5d0428", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90015, "upload_time": "2018-08-29T12:45:14", "url": "https://files.pythonhosted.org/packages/2d/a7/56c2d1145b71b4dff6ffa63616760b21f5c25ac4e0d053be5e065c9a938d/xmlplain-1.6.0.tar.gz" } ] }