{
"info": {
"author": "ZIJIAN JIANG",
"author_email": "jiangzijian77@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 1 - Planning",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Topic :: Utilities"
],
"description": "# xml-ormz\n\n**Authors:** ZIJIAN JIANG\n\n**29 Aug 2019**: Alpha version.\n\n\n\nxml-ormz is a orm(Object-relational mapping) library for mapping a collection of relational xml files into native python object. It is able to parse xml document tree into hierarchical class `model` objects. When parsing xml document tree into objects, it will check the attributes' `field` type; value content; amount of elements; numbers; `regular expressions`; etc. These validation rules can all be defined by user intuitively. As another important feature, `object relationships` can be built by using `finders` in xml-ormz, `finder` is a user customized callable object for recursively traverse the trees to build references between any of two or more objects. So in the end of it, you will get a validated mapped relational python objects model *(with no concern about invalid attribute type or values; missing attributes; wrong amount of elements; missing relationships; invalid schema...)*. In my philosophy of data processing (xml format is one kind of highly complex hierarchical data), all input data should be validated before any following processes, must not let the malignant propagate, and xml-orm do that properly.\n\n\n\n# 1. Installation\n\nCommand below will do the trick, if you want logging with color, it is optional to install `coloredlogs`.\n\n`pip install xml-ormz` \n\n\n\n# 2. Example\n\nIt always said one example is beyond any documentation, so let's take a look.\n\nHere is the project hierarchy:\n\n```python\n+ ProjectFolder/\n\tcontacts.xml\n\taddresses.xml\n\tmodel.py\n\tfinder.py\n\thello.py # main entry\n```\n\nLet's say we have two xml files.\n\n```xml\n\n\n \n 513754619@mail.com\n \t\n \n \n \n 645118456@gmail.com\n \t\n \n\n```\n\n```xml\n\n\n\t\n \n\n```\n\n\n\n1. We create `model.py` for class model definitions.\n\n```python\n# model.py\n\nfrom xo.orm import Model, Optional, StringField, FloatField, IntegerField, ForeignKeyField\n\nclass Contacts(Model):\n\n class Person(Model):\n name = StringField(re=r\"(Alice|Rabbit|John)\") # regular expression validation\n address = StringField()\n\n class Email(Model):\n __count__ = 1 # every person must have one and only one email\n pass\t\t\t# email address is in email.text and text is not a attribute\n\n class Phone(Model):\n __count__ = (1, ) # every person must have at least one phone\n number = IntegerField( primary_key=True )\n\n\nclass Addresses(Model):\n\n class Apartment(Model):\n location = StringField( primary_key=True )\n year = IntegerField()\n owner = Optional( StringField() ) # owner attribute can be none, not required (without it will raise an error)\n\t\t# forget to define `area` field here \n # when you run the program it will warn you that:\n # 2019-08-29 15:21:40 X root[7828] WARNING Try to assign extra attribute 'area' to undefined field of 'Addresses.Apartment', drop it.\n # So your `area` attribute in addresses.xml will never appear in this object.\n```\n\n\n\n3. Create main entry of program `hello.py`\n\n```python\n# hello.py\n\nfrom model import Contacts, Addresses\nfrom xo.crawler import XmlMapper\n\naddress_map = XmlMapper(\"./addresses.xml\", Addresses).parse()\ncontact_map = XmlMapper(\"./contacts.xml\", Contacts).parse()\n```\n\n\n\n```python\nResult:\naddress_map - \n + '/Addresses':\n - 'childApartment':[]\n - 'childHouse':[]\n - 'text':''\n + '/Addresses/Apartment[1]':\n - 'location':'Wonderland Street No.231'\n - 'owner':'Queen of Hearts'\n - 'parentAddresses':\n - 'year':1898\n + '/Addresses/Apartment[2]':\n - 'location':'Moon Street No.1'\n - 'parentAddresses':\n - 'year':2\n\n\ncontact_map - \n + '/Contacts': \n + '/Contacts/Person[1]': \n + '/Contacts/Person[1]/Email': \n - 'parentPerson':\n - 'text':'513754619@mail.com'\n + '/Contacts/Person[1]/Phone[1]': \n + '/Contacts/Person[1]/Phone[2]': \n + '/Contacts/Person[2]': \n + '/Contacts/Person[2]/Email': \n + '/Contacts/Person[2]/Phone': \n ...\n\n```\n\n\n\nIf you have noticed all our xml file has been parsed into python native objects with all attributes have been validated. Now its time to take our further trip to object relationships.\n\n1. We add additional field into our already defined `model.py`\n\n```python\n# model.py\n\n+ from xo.orm import ForeignKeyField\n...\n class Person(Model):\n name = StringField(re=r\"(Alice|Rabbit|John)\") # regular expression validation\n address = StringField()\n+ apartment = ForeignKeyField( 'Addresses.Apartment' )\n\t\t...\n\n```\n\n2. ~~Create finders in `finder.py`~~\n\n```python\n#finder.py\n\nfrom model import Addresses, Contacts\n\nclass Finder(object):\n def __init__(self, orm_list):\n # Here the parameter `orm_list` is assigned by xml-ormz, `orm_list = [ contact_map, addresses_map ]`\n self.addresses = [m for m in orm_list if \"/Addresses\" in m][0]\n\n def __call__(self, person):\n # Here we find `address` using `person` object passed to us\n try:\n found = next(apartment for apartment in self.addresses if apartment.location == person.address)\n except StopIteration:\n return None # if we not found\n\n\nContacts.Person.getField(\"apartment\").finder = Finder\n```\n\n\n\n3. ~~Modify `hello.py` and see the result.~~\n\n```python\n# hello.py\n\nfrom model import Contacts, Addresses\nfrom xo.crawler import XmlMapper, XmlLinker\n+ import finder # don't forget to import the finders we wrote !\n\naddress_map = XmlMapper(\"./addresses.xml\", Addresses).parse()\ncontact_map = XmlMapper(\"./contacts.xml\", Contacts).parse()\n\n+ linker = XmlLinker( [ address_map, contact_map ], [ Addresses, Contacts ] )\n+ linker.link()\n\n# let's see if Person's apartment is found?\n+ print(contact_map[\"/Contacts/Person[1]\"].apartment)\n\n#Result: : {'location': 'Wonderland Street No.231', 'year': 1898, 'owner': 'Queen of Hearts', 'parentAddresses': }\n```\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/CallmeNezha/xml-ormz",
"keywords": "xml orm database",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "xml-ormz",
"package_url": "https://pypi.org/project/xml-ormz/",
"platform": "",
"project_url": "https://pypi.org/project/xml-ormz/",
"project_urls": {
"Homepage": "https://github.com/CallmeNezha/xml-ormz"
},
"release_url": "https://pypi.org/project/xml-ormz/0.0.11/",
"requires_dist": [
"lxml",
"loguru",
"jinja2"
],
"requires_python": "",
"summary": "xml-ormz database library mapping collections of xml into python model objects",
"version": "0.0.11"
},
"last_serial": 5975138,
"releases": {
"0.0.1": [
{
"comment_text": "",
"digests": {
"md5": "5934b307a760a9bd6dc386e93c712813",
"sha256": "b037bba00ba3c9872b450b9933e5610e620de6ca996e9b795878a7c4ce048fad"
},
"downloads": -1,
"filename": "xml_ormz-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5934b307a760a9bd6dc386e93c712813",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 11051,
"upload_time": "2019-08-29T08:31:29",
"url": "https://files.pythonhosted.org/packages/68/48/0e37b48e3d0419912e9ad2b3242233975ad0d5912b243528e198359e7888/xml_ormz-0.0.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "0e35ae38e0758d1a75b13faa6b899655",
"sha256": "6ae3e9b337c8e2f512debf4e3486e0104badb8c176277a5fd705fb0d0c2b8de3"
},
"downloads": -1,
"filename": "xml-ormz-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "0e35ae38e0758d1a75b13faa6b899655",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9518,
"upload_time": "2019-08-29T08:31:31",
"url": "https://files.pythonhosted.org/packages/73/c1/8e3c1e8627d229dc33cbc88132cf1b544bb893426e0e62ad27a089692ee9/xml-ormz-0.0.1.tar.gz"
}
],
"0.0.10": [
{
"comment_text": "",
"digests": {
"md5": "5623d29411c8176872d9cfa499b7703c",
"sha256": "cd50b266d131cc1957452d9bcd9b1cc1585e5edc97cbaa9fbbdde92f18cce4ac"
},
"downloads": -1,
"filename": "xml_ormz-0.0.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5623d29411c8176872d9cfa499b7703c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 15842,
"upload_time": "2019-09-24T02:46:59",
"url": "https://files.pythonhosted.org/packages/a8/b1/4c1d0acf629f8a1307205a598a023b480da4b7c3452362226299ad405dd2/xml_ormz-0.0.10-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "5922eb0b0c642bdb245ca9f71067d093",
"sha256": "bb78751789769f4ada57908fdd80a9755eb9e2fe612019092485f3f95a9d1b0f"
},
"downloads": -1,
"filename": "xml-ormz-0.0.10.tar.gz",
"has_sig": false,
"md5_digest": "5922eb0b0c642bdb245ca9f71067d093",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13113,
"upload_time": "2019-09-24T02:47:01",
"url": "https://files.pythonhosted.org/packages/c1/7c/d5a13ff54230441204a03d9058f04580ce2fb1562c2673db04e8e6b0da89/xml-ormz-0.0.10.tar.gz"
}
],
"0.0.11": [
{
"comment_text": "",
"digests": {
"md5": "1409d62d73602ff8f01a1f4953410909",
"sha256": "23e2193aab6e20f32f07c80c9ee1d4dee4aae633231f0d95a4b1ccec7c43dcf8"
},
"downloads": -1,
"filename": "xml_ormz-0.0.11-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1409d62d73602ff8f01a1f4953410909",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 15890,
"upload_time": "2019-10-15T06:46:42",
"url": "https://files.pythonhosted.org/packages/cb/79/6c0b9077750fa62d4b86c7a7a1cc3de775cec4c1576fe0f8e4f6e1bcdd7e/xml_ormz-0.0.11-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "0016fab9bfcc4ebf45a4a70e1dea8282",
"sha256": "cdc0b0292656d3b706ee823e57975a779ea53c345a7b200edcd94dd646cec7a4"
},
"downloads": -1,
"filename": "xml-ormz-0.0.11.tar.gz",
"has_sig": false,
"md5_digest": "0016fab9bfcc4ebf45a4a70e1dea8282",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13157,
"upload_time": "2019-10-15T06:46:44",
"url": "https://files.pythonhosted.org/packages/63/47/630042457ef2068726d66db40a97102912e02e8decc5d059bd795f117e70/xml-ormz-0.0.11.tar.gz"
}
],
"0.0.2": [
{
"comment_text": "",
"digests": {
"md5": "14d99665e9d193e9d390144ad412d7fa",
"sha256": "1dd0f1ab25ae64371ca418c431f925712d51d23d6cdf1f9f39fa2548a20bb117"
},
"downloads": -1,
"filename": "xml_ormz-0.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "14d99665e9d193e9d390144ad412d7fa",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10984,
"upload_time": "2019-09-02T05:44:52",
"url": "https://files.pythonhosted.org/packages/42/55/d92716cd1d2550b7dfa67fbf255ef7a2185e42377ec24c747b357549c15d/xml_ormz-0.0.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "51133f55086b83b09d5178472784dbac",
"sha256": "d982548ce8bf0939351586bf917f6383fffb96f4301627d595fdb463f1034ae0"
},
"downloads": -1,
"filename": "xml-ormz-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "51133f55086b83b09d5178472784dbac",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9505,
"upload_time": "2019-09-02T05:44:56",
"url": "https://files.pythonhosted.org/packages/6c/f6/502b56bbe396fd7a1462f66f1e15899a4609ad22910c314748502f6fd842/xml-ormz-0.0.2.tar.gz"
}
],
"0.0.3": [
{
"comment_text": "",
"digests": {
"md5": "508833431a91dd1c4187d48d18dfe9f6",
"sha256": "e9f6cbaa273536857737c5d2331e9fb7774b0959d5ba4ab45463c1334123a9d1"
},
"downloads": -1,
"filename": "xml_ormz-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "508833431a91dd1c4187d48d18dfe9f6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 13184,
"upload_time": "2019-09-03T07:59:01",
"url": "https://files.pythonhosted.org/packages/48/bc/810466e9f59b3256a34731504c61897831d7b005f351dc19f66be213c72e/xml_ormz-0.0.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "ddc71fabe0a2db56bf2c24f68a3faaa9",
"sha256": "9e0e0c01d384665b0643f3587dc8242e2004e977224a4a38481f82444c5d8fb8"
},
"downloads": -1,
"filename": "xml-ormz-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "ddc71fabe0a2db56bf2c24f68a3faaa9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10912,
"upload_time": "2019-09-03T07:59:02",
"url": "https://files.pythonhosted.org/packages/3c/69/b29d58df2f4d32a4287bdc73daf261dff9d1912375521c6273a75c60af64/xml-ormz-0.0.3.tar.gz"
}
],
"0.0.4": [
{
"comment_text": "",
"digests": {
"md5": "7e27b7b815dca820ee7d9339b480bde6",
"sha256": "931311ba19b750d0d5e414bc81b8a83f140ef2d4e4bf7e84896ff6e4b6bfa4d9"
},
"downloads": -1,
"filename": "xml_ormz-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7e27b7b815dca820ee7d9339b480bde6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 13700,
"upload_time": "2019-09-03T08:23:17",
"url": "https://files.pythonhosted.org/packages/a0/a5/cbb4c885d5804029f553bbee7c135ba4c1fabb319803d7028e8be7916a28/xml_ormz-0.0.4-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a5be93035c0963f96078b8e0bfbc94ac",
"sha256": "5da1614de8553f76a1e249d4a51737672a51fb8030a3fea45567d878de3330d5"
},
"downloads": -1,
"filename": "xml-ormz-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "a5be93035c0963f96078b8e0bfbc94ac",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11263,
"upload_time": "2019-09-03T08:23:18",
"url": "https://files.pythonhosted.org/packages/5c/d6/479bedb0f98a3145fde9220daa95cb28860c0d7b4568e5ee6045e47ba3e9/xml-ormz-0.0.4.tar.gz"
}
],
"0.0.5": [
{
"comment_text": "",
"digests": {
"md5": "df0ebcdb54526b978d7649defcb96905",
"sha256": "f0fa0686d64753e575ae8668d46afc85dfb9e5dbc4b1fad57c6ec67fdb8d5e53"
},
"downloads": -1,
"filename": "xml_ormz-0.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "df0ebcdb54526b978d7649defcb96905",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 13716,
"upload_time": "2019-09-04T07:40:32",
"url": "https://files.pythonhosted.org/packages/8a/d1/219c7aea1f1ab039a31487d02c97b05213be6c8af4ad11286f0e1eef50b4/xml_ormz-0.0.5-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "be2a3114b1c2919d7b1fa75dfbe152e6",
"sha256": "e217e2a9a5331a6aba4aac8885f3143bb8b995a3a7bdd879388c49fd8adfefc6"
},
"downloads": -1,
"filename": "xml-ormz-0.0.5.tar.gz",
"has_sig": false,
"md5_digest": "be2a3114b1c2919d7b1fa75dfbe152e6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11284,
"upload_time": "2019-09-04T07:40:34",
"url": "https://files.pythonhosted.org/packages/67/eb/93a911b04b1ccfb1788e6ac0851accdd40d3171d4f20ed30b22f1b68c30f/xml-ormz-0.0.5.tar.gz"
}
],
"0.0.6": [
{
"comment_text": "",
"digests": {
"md5": "2ef5583a0dea161b6034a78c9067eaa5",
"sha256": "a015dc6858d44f6dc0ef829526b3e83044a2d64926393c6bc7da571fc969bc81"
},
"downloads": -1,
"filename": "xml_ormz-0.0.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2ef5583a0dea161b6034a78c9067eaa5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 14794,
"upload_time": "2019-09-09T08:17:47",
"url": "https://files.pythonhosted.org/packages/13/b0/9b4b3136ae30f4a36980ce00055d8e335652785cea649fdc78a43fd63869/xml_ormz-0.0.6-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "25983f539894d556942a32362443dc7d",
"sha256": "3e4ee582e1eed55f8942945fce368d6fe92e05fcc8bc50f8146136de5bf50e2c"
},
"downloads": -1,
"filename": "xml-ormz-0.0.6.tar.gz",
"has_sig": false,
"md5_digest": "25983f539894d556942a32362443dc7d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12020,
"upload_time": "2019-09-09T08:17:57",
"url": "https://files.pythonhosted.org/packages/ca/ad/a095a3f27c20e283d9acfbd814b0675f90be6c1091314edd267107fdfc0d/xml-ormz-0.0.6.tar.gz"
}
],
"0.0.7": [
{
"comment_text": "",
"digests": {
"md5": "1bc6d49bd0678dc402901a7592a5c753",
"sha256": "dad52ad85be08778f750c1c5c3be10fd4135e53e0fc3f157fbd2cc3542f63fac"
},
"downloads": -1,
"filename": "xml_ormz-0.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1bc6d49bd0678dc402901a7592a5c753",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 14805,
"upload_time": "2019-09-09T09:48:02",
"url": "https://files.pythonhosted.org/packages/c1/68/fc75c3cec6cd41aabfcd777f03846d9e5d47f7495bc1e15a1428b54bf440/xml_ormz-0.0.7-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3f6c6043c34ee6eb77fbadcd3bc08be2",
"sha256": "e359a20fa4677dce30e482e5315a8647287c7995ba802bc746c20fa0af58cf4b"
},
"downloads": -1,
"filename": "xml-ormz-0.0.7.tar.gz",
"has_sig": false,
"md5_digest": "3f6c6043c34ee6eb77fbadcd3bc08be2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12027,
"upload_time": "2019-09-09T09:48:04",
"url": "https://files.pythonhosted.org/packages/29/28/a4b3b368aacfc490ef93e670c9639285d1fa6fe65291f1d637afa76f76e5/xml-ormz-0.0.7.tar.gz"
}
],
"0.0.8": [
{
"comment_text": "",
"digests": {
"md5": "bd987c459a341d85d64c2b03617942fb",
"sha256": "7c22cecc40e89ca13aa76ec2ebe0d1c00c521e16d90a5841b1710c577e144bc0"
},
"downloads": -1,
"filename": "xml_ormz-0.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bd987c459a341d85d64c2b03617942fb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 15700,
"upload_time": "2019-09-10T16:47:44",
"url": "https://files.pythonhosted.org/packages/bd/7d/67d89a352c45eba46dc09c7aa28650677533736f175f0bc69e2d1b008f1b/xml_ormz-0.0.8-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "4706e63f3a409dad9eb3dd98d46fafc6",
"sha256": "54962b6ce455a6f51f8f2c66c54733eef56f74fbe6c83ce91541ac7206d9b3ed"
},
"downloads": -1,
"filename": "xml-ormz-0.0.8.tar.gz",
"has_sig": false,
"md5_digest": "4706e63f3a409dad9eb3dd98d46fafc6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12992,
"upload_time": "2019-09-10T16:47:47",
"url": "https://files.pythonhosted.org/packages/d9/a6/02c12b85f22f0e78f7be27ac737392995197b754618cf7b00eb0bdf221b9/xml-ormz-0.0.8.tar.gz"
}
],
"0.0.9": [
{
"comment_text": "",
"digests": {
"md5": "9a7051f8820121610d1cf5e9c53d887e",
"sha256": "378e511bed374b24cd4838d3804ad13558a3c440ed61b25a422c25672bc35695"
},
"downloads": -1,
"filename": "xml_ormz-0.0.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9a7051f8820121610d1cf5e9c53d887e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 15706,
"upload_time": "2019-09-10T17:26:40",
"url": "https://files.pythonhosted.org/packages/72/0f/a61f188218c5a356d1fa4df26e3da1ff483fc9f2d997f2fd1a54bea90a4d/xml_ormz-0.0.9-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "b0568eb0f6fe271eab833d4c55770f80",
"sha256": "9e8b79dd890224628b16586d36753acef33aaaf4b1dda5a232a8e3cd0dfc73dd"
},
"downloads": -1,
"filename": "xml-ormz-0.0.9.tar.gz",
"has_sig": false,
"md5_digest": "b0568eb0f6fe271eab833d4c55770f80",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12979,
"upload_time": "2019-09-10T17:26:42",
"url": "https://files.pythonhosted.org/packages/35/f3/08c91265d21514c17ad92cb90f45b16e0d8e935f8d67e973cf5cd62bb2e8/xml-ormz-0.0.9.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "1409d62d73602ff8f01a1f4953410909",
"sha256": "23e2193aab6e20f32f07c80c9ee1d4dee4aae633231f0d95a4b1ccec7c43dcf8"
},
"downloads": -1,
"filename": "xml_ormz-0.0.11-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1409d62d73602ff8f01a1f4953410909",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 15890,
"upload_time": "2019-10-15T06:46:42",
"url": "https://files.pythonhosted.org/packages/cb/79/6c0b9077750fa62d4b86c7a7a1cc3de775cec4c1576fe0f8e4f6e1bcdd7e/xml_ormz-0.0.11-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "0016fab9bfcc4ebf45a4a70e1dea8282",
"sha256": "cdc0b0292656d3b706ee823e57975a779ea53c345a7b200edcd94dd646cec7a4"
},
"downloads": -1,
"filename": "xml-ormz-0.0.11.tar.gz",
"has_sig": false,
"md5_digest": "0016fab9bfcc4ebf45a4a70e1dea8282",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13157,
"upload_time": "2019-10-15T06:46:44",
"url": "https://files.pythonhosted.org/packages/63/47/630042457ef2068726d66db40a97102912e02e8decc5d059bd795f117e70/xml-ormz-0.0.11.tar.gz"
}
]
}