{ "info": { "author": "Jakob Stemberger", "author_email": "yaccob@gmx.net", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 2.7" ], "description": "ytools\n======\n\nCommand-line tool and ``python`` module for ...\n\n- validating ``json`` and ``yaml`` files against a ``json-schema`` in\n ``json`` or ``yaml`` format\n- selectively dumping nodes from ``yaml`` (or ``json``) documents in\n ``yaml`` or ``json`` format.\n\nFeatures\n\n\n- Output ``yaml`` as ``json`` or ``python``\n- Output ``json`` as ``yaml`` or ``python`` (provided that there are no\n duplicate mapping entry in the ``json`` source)\n- Extract particular nodes from ``yaml`` and ``json`` files.\n\n - If ``yaml`` is used as output format (default) the output is a\n valid ``yaml`` document.\n\n- Validate ``yaml`` and ``json`` documents.\n\n - The ``json-schema`` can be provided in ``yaml`` format as well,\n which improves readability and writability.\n\n- Preserve order of mapping-keys in ``yaml`` and ``json`` output.\n- Multi-document support\n\n - Multiple input files\n - ... as well as multiple ``yaml`` documents within a file\n - ... and a combination of both\n\nInstallation\n\n\n``pip install ytools``\n\nDescription\n\n\n| For selecting nodes, ``ytools`` uses ``jsonpath_ng.ext``.\n| The syntax is documented at\n https://pypi.python.org/pypi/jsonpath-ng/1.4.2.\n\n| By default (if no path is provided), complete input documents are\n dumped in ``yaml`` format (path defaults to ``'$'``).\n| This can be used to get ``yaml`` output for ``json`` documents or vice\n versa:\n\n- ``python ytools.py input.json``\n ... for converting json to yaml, or ...\n- ``python ytools.py input.yaml -f json``\n ... for the opposite direction.\n\n| Additionally, ``yaml`` and ``json`` documents can be validated against\n a ``json-schema`` which may be provided in ``yaml`` or ``json``\n format.\n| ``schema.yaml`` is a sample for ``json-schema`` in ``yaml`` format.\n\n``ytools -h``\n\n::\n\n $ ytools -h\n Usage: /usr/local/bin/ytools [OPTION] -p JSONPATH_EXPRESSION FILE...\n\n Dumps data from json (or yaml) documents in yaml format. Command line wrapper\n for jsonpath-ng.\n\n Options:\n -h, --help show this help message and exit\n -p PATH, --json-path=PATH\n Syntax for jsonpath expression:\n https://pypi.python.org/pypi/jsonpath-ng/1.4.2\n -f OUTPUTFORMAT, --output-format=OUTPUTFORMAT\n Output format. Can be \"yaml\", \"json\" or \"python\".\n [default: yaml]\n -y YAML_OPTIONS, --yaml-options=YAML_OPTIONS\n kwargs for yaml.dump (pyYaml) as yaml.mapping (for\n experts). [default: '{explicit_start: True,\n explicit_end: True, allow_unicode: True}']\n -j JSON_OPTIONS, --json-options=JSON_OPTIONS\n kwargs for json.dumps as yaml.mapping (for experts).\n [default: '{indent: 2, encoding: utf-8}']\n -v SCHEMA, --validate=SCHEMA\n Validate documents against json-schema\n --encoding=ENCODING Set encoding of input documents (if different from\n utf-8)\n\nCommand Line Samples\n--------------------\n\nThe samples are based on the following data.\n\nSample Data\n~~~~~~~~~~~\n\nInput Data\n^^^^^^^^^^\n\n``input.yaml``:\n\n.. code:: yaml\n\n documents:\n - title: Some document title\n sections:\n - title: Some section title\n description: Some section description\n text: Some text for some section\n chapters:\n - title: Some chapter title\n description: Some chapter description\n text: The text of some chapter\n - title: Some other chapter title\n description:\n - descriptionparagraph1: Some description for other chapter\n - descriptionparagraph2: Some description for other chapter\n text: The text of some other chapter\n - title: Some other section title\n description: Some other section description\n text: Some text for some other section\n chapters:\n - title: About encoding\n description: \"Some German: \u00e4\u00f6\u00fc,\u00c4\u00d6\u00dc,\u00df\"\n\nSchema for validating ``input.yaml``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n``schema.yaml``\n\n.. code:: yaml\n\n $schema: \"http://json-schema.org/schema#\"\n\n definitions:\n chapter:\n type: object\n properties:\n title: {type: string}\n description:\n oneOf: [{type: string}, {type: array}]\n text: {type: string}\n additionalProperties: false\n required: [title, description]\n chapters:\n type: array\n items: {$ref: \"#/definitions/chapter\"}\n additionalItems: false\n section:\n type: object\n properties:\n title: {type: string}\n description: {type: string}\n text: {type: string}\n chapters: {$ref: \"#/definitions/chapters\"}\n additionalProperties: false\n required: [title, description]\n sections:\n type: array\n items: {$ref: \"#/definitions/section\"}\n additionalItems: false\n document:\n type: object\n properties:\n title: {type: string}\n description: {type: string}\n sections: {$ref: \"#/definitions/sections\"}\n additionalProperties: false\n required: [title, description]\n documents:\n type: array\n items: {$ref: \"#/definitions/document\"}\n additionalItems: false\n type: object\n properties:\n documents: {$ref: \"#/definitions/documents\"}\n additionalProperties: false\n\nOutputs\n~~~~~~~\n\nWhen not providing a jsonpath expression\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIf you don't provide a jsonpath expression using the ``-p`` option\nytools uses ``'$'`` as default and therefore dumps the complete input:\n\n::\n\n \ud83c\udfbc ytools input.yaml\n ---\n documents:\n - title: Some document title\n description: The document's description\n sections:\n - title: Some section title\n description: Some section description\n text: Some text for some section\n chapters:\n - {title: Some chapter title, description: Some chapter description, text: The\n text of some chapter}\n - title: Some other chapter title\n description:\n - {descriptionparagraph1: Some description for other chapter}\n - {descriptionparagraph2: Some description for other chapter}\n text: The text of some other chapter\n - title: Some other section title\n description: Some other section description\n text: Some text for some other section\n chapters:\n - {title: About encoding, description: 'Some German: \u00e4\u00f6\u00fc,\u00c4\u00d6\u00dc,\u00df'}\n ...\n\nOutput format ``yaml`` (default)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWith the ``yaml`` output format by default, each match is output as a\nseparate ``yaml`` document. This way we achieve that the output is valid\n``yaml``.:\n\n::\n\n \ud83c\udfbc ytools -p '$..chapters[*].description' input.yaml\n --- Some chapter description\n ...\n\n ---\n - {descriptionparagraph1: Some description for other chapter}\n - {descriptionparagraph2: Some description for other chapter}\n ...\n\n --- 'Some German: \u00e4\u00f6\u00fc,\u00c4\u00d6\u00dc,\u00df'\n ...\n\nIf you want different behavior you can set ``explicit_start`` and/or\n``explicit_end`` to ``False``. In this case the output will no longer be\nguaranteed to be valid ``yaml``:\n\n::\n\n \ud83c\udfbc ytools -p '$..chapters[*].description' input.yaml --yaml-options='{explicit_start: False, explicit_end: False}'\n Some chapter description\n ...\n\n - {descriptionparagraph1: Some description for other chapter}\n - {descriptionparagraph2: Some description for other chapter}\n\n 'Some German: \u00e4\u00f6\u00fc,\u00c4\u00d6\u00dc,\u00df'\n\nOther output formats\n^^^^^^^^^^^^^^^^^^^^\n\nUnfortunately, when using the ``json`` or ``python`` output format the\nsame selection can't produce valid ``json`` or ``python`` output. That's\nbecause neither json nor python support the concept of (multiple)\ndocuments:\n\n::\n\n \ud83c\udfbc ytools -p '$..chapters[*].description' input.yaml -f json --json-options='{indent: 4}'\n \"Some chapter description\"\n [\n {\n \"descriptionparagraph1\": \"Some description for other chapter\"\n },\n {\n \"descriptionparagraph2\": \"Some description for other chapter\"\n }\n ]\n \"Some German: \\u00e4\\u00f6\\u00fc,\\u00c4\\u00d6Y,\\u00df\"\n\nThat's definitely not valid json.\n\nNeither is the following valid python:\n\n::\n\n \ud83c\udfbc ytools -p '$..chapters[*].description' input.yaml -f python\n Some chapter description\n [{'descriptionparagraph1': 'Some description for other chapter'}, {'descriptionparagraph2': 'Some description for other chapter'}]\n Some German: \u00e4\u00f6\u00fc,\u00c4\u00d6\u00dc,\u00df\n\nSo **if you ever want to process the output automatically please stick\nto ``yaml``**.\n\nPython Samples\n--------------\n\nSample Data\n~~~~~~~~~~~\n\nInput Data\n^^^^^^^^^^\n\n``test/sampledata.yaml``\n\n.. code:: yaml\n\n name: 'my_name'\n date: '2017-10-01T10:55:00Z'\n metrics:\n percentage:\n value: 87\n trend: stable\n\nSchema for Validating\n^^^^^^^^^^^^^^^^^^^^^\n\n``test/sampleschema.yaml``\n\n.. code:: yaml\n\n type: object\n properties:\n name: { type: string }\n date: { type: string, format: date-time }\n metrics:\n type: object\n properties:\n percentage:\n type: object\n properties:\n value:\n type: number\n minimum: 0\n maximum: 100\n trend: { type: string, enum: [down, stable, up] }\n additionalProperties: false\n required: [value, trend]\n additionalProperties: false\n required: [percentage]\n additionalProperties: false\n required: [name, date, metrics]\n\nValidation\n~~~~~~~~~~\n\n.. code:: python\n\n ytools.validate(\"test/sampleschema.yaml\", [\"test/sampledata.yaml\"])\n\n... will not output anything because of successful validation. Play\naround if you want to see failing validation - it's quite easy to make\nit fail ;-)\n\nDumping\n~~~~~~~\n\n.. code:: python\n\n ytools.dump(\"test/sampledata.yaml\", \"$.metrics\", yaml_options=\"default_flow_style: false\")\n\n... will output ...\n\n::\n\n ---\n percentage:\n value: 87\n trend: stable\n ...\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/yaccob/ytools/archive/1.0.0.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ytools/ynot", "keywords": "yaml,json,transform,xslt,jsonpath,json-path,dump,convert,validate,schema", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "ytools", "package_url": "https://pypi.org/project/ytools/", "platform": "", "project_url": "https://pypi.org/project/ytools/", "project_urls": { "Download": "https://github.com/yaccob/ytools/archive/1.0.0.tar.gz", "Homepage": "https://github.com/ytools/ynot" }, "release_url": "https://pypi.org/project/ytools/1.0.0/", "requires_dist": [ "PyYaml", "jsonpath-ng", "jsonschema", "strict-rfc3339" ], "requires_python": "", "summary": "Command-line tool for selectively dumping nodes from `yaml` (or `json`) documents in `yaml` or `json` format.", "version": "1.0.0" }, "last_serial": 5463869, "releases": { "0.9.0": [ { "comment_text": "", "digests": { "md5": "d17f447aaef14b4c63508fb044ce047d", "sha256": "c72c6eda0ff10c58b90e3795ef5298b5afb2410cc9c917564b51d0f08689b882" }, "downloads": -1, "filename": "ytools-0.9.0-py2-none-any.whl", "has_sig": false, "md5_digest": "d17f447aaef14b4c63508fb044ce047d", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9172, "upload_time": "2018-02-02T22:19:12", "url": "https://files.pythonhosted.org/packages/a7/df/0576a2e3d669cda8edcb43ebd3a6d905c53ff51108e3a2750de2accfd2da/ytools-0.9.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0bab9ccd3a4675a35c453bf805564e6a", "sha256": "5bbd040c1938d4b674b5733b65b15ef20f8884a0609b7b135ea09eadb06eba25" }, "downloads": -1, "filename": "ytools-0.9.0.tar.gz", "has_sig": false, "md5_digest": "0bab9ccd3a4675a35c453bf805564e6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10814, "upload_time": "2018-02-02T22:19:13", "url": "https://files.pythonhosted.org/packages/20/8a/37232a7e4b9ccd70878f890460b88ad3da0cb94e83ecccba5091c928de19/ytools-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "559faacbc25daf0c458a4ba8ea1769cb", "sha256": "7b7c341937721cf8546caf6b2991ff1e449da45b67835edd46c255d0e17c3f92" }, "downloads": -1, "filename": "ytools-0.9.1-py2-none-any.whl", "has_sig": false, "md5_digest": "559faacbc25daf0c458a4ba8ea1769cb", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9182, "upload_time": "2018-02-07T22:55:54", "url": "https://files.pythonhosted.org/packages/78/4b/eb2ed4946bb1eee56daa0e23ee71c07b07bfc4ee96d0fb166824b1a7fe2b/ytools-0.9.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9eb8ceaf9440bad4e49b3c4ebe032a86", "sha256": "80d4d812e111996c99fa579a77231a41c39796d80ace679332b89633bbafa513" }, "downloads": -1, "filename": "ytools-0.9.1.tar.gz", "has_sig": false, "md5_digest": "9eb8ceaf9440bad4e49b3c4ebe032a86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10795, "upload_time": "2018-02-07T22:55:56", "url": "https://files.pythonhosted.org/packages/87/75/0109a04fcab08c0ba7f0dee232d19a834e68c03e696f3bafb29de282d651/ytools-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "5cea28cb321d1c715df834351da14490", "sha256": "67a21c997626ad6b87aa9a4653339c9dbafc40b2fa753518f6016a726ff3c51b" }, "downloads": -1, "filename": "ytools-0.9.2-py2-none-any.whl", "has_sig": false, "md5_digest": "5cea28cb321d1c715df834351da14490", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9150, "upload_time": "2018-04-06T06:59:49", "url": "https://files.pythonhosted.org/packages/0b/be/c2df5d023cde787859d273fa45ebaa407bd0d4317590cb8c0084bcdcc17d/ytools-0.9.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2c2a3612629f02efdb721c528688d757", "sha256": "21064c82dfdd68a29a86abfe5c296b74fd88ad55e07fe20f50e7ba4bce3cf5ec" }, "downloads": -1, "filename": "ytools-0.9.2.tar.gz", "has_sig": false, "md5_digest": "2c2a3612629f02efdb721c528688d757", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10772, "upload_time": "2018-04-06T06:59:51", "url": "https://files.pythonhosted.org/packages/cd/89/c4a8223e654cebb2162c7977a1464caedc791d05a7fac3d2b8b7330ab4dc/ytools-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "b219d1250581027d878dab66adb61a15", "sha256": "bb42cabfffb5879e79ecaff247571ec08fee56891abe0f1e6130d289feafe905" }, "downloads": -1, "filename": "ytools-0.9.3-py2-none-any.whl", "has_sig": false, "md5_digest": "b219d1250581027d878dab66adb61a15", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9164, "upload_time": "2018-05-25T21:47:06", "url": "https://files.pythonhosted.org/packages/c0/8f/3d49eea8b03d0fb5dfd3b45446ab1b6b0a6d700f89a7f4e670b5b6f8ac88/ytools-0.9.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9fa1b3c6c0edc99a3ec701536c5f9121", "sha256": "2622b59a881606f282aa0d0f423022e8864f29010f54dd2bdd70ec7588e20218" }, "downloads": -1, "filename": "ytools-0.9.3.tar.gz", "has_sig": false, "md5_digest": "9fa1b3c6c0edc99a3ec701536c5f9121", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10796, "upload_time": "2018-05-25T21:47:08", "url": "https://files.pythonhosted.org/packages/5e/b2/257412e9d034000cc7da7bbfe64e944dfe6eefa3769c3d5086f02c4cc049/ytools-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "6f2198bd1be92bb2c48411b8fe95196a", "sha256": "9185f1295bfe05110c3e6d0f206c02663016be81be3ab0c0c6b7c4b1ed0bdc3b" }, "downloads": -1, "filename": "ytools-0.9.4-py2-none-any.whl", "has_sig": false, "md5_digest": "6f2198bd1be92bb2c48411b8fe95196a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9164, "upload_time": "2018-05-25T21:51:25", "url": "https://files.pythonhosted.org/packages/d2/ef/e8d373d4798951f10ad054c066e23941c30a8612997cb2a17917e6032544/ytools-0.9.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c55da5b3e6448d60312e5c5c6774f4ba", "sha256": "755119dc6f535ab66b07ebad367c572bce9752ffb62b4dfca9950f30c31cf650" }, "downloads": -1, "filename": "ytools-0.9.4.tar.gz", "has_sig": false, "md5_digest": "c55da5b3e6448d60312e5c5c6774f4ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10793, "upload_time": "2018-05-25T21:51:27", "url": "https://files.pythonhosted.org/packages/37/45/5d6ba1b184b0b2a7ba10051f239361b219bd3ae14d8804a57f2965ff859d/ytools-0.9.4.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "92b8f5d9ac9d197f1bee5adbf6163418", "sha256": "7014effeb04a7268d2acd04be5aa071e88d1f8638167ac36091c4db7df6ea709" }, "downloads": -1, "filename": "ytools-0.9.6-py2-none-any.whl", "has_sig": false, "md5_digest": "92b8f5d9ac9d197f1bee5adbf6163418", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9216, "upload_time": "2018-05-25T22:47:29", "url": "https://files.pythonhosted.org/packages/52/5d/88d6a65fd8d90318fe8ce5a359ae6f7bde2e1478f53b8a23f7580a3b4ae5/ytools-0.9.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f28773de84d5c12272399498ac49f512", "sha256": "f316e1b7e824834bb2005df59abe0e2c5ae9dd90c59dfc574c70f850abfcc411" }, "downloads": -1, "filename": "ytools-0.9.6.tar.gz", "has_sig": false, "md5_digest": "f28773de84d5c12272399498ac49f512", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10838, "upload_time": "2018-05-25T22:47:31", "url": "https://files.pythonhosted.org/packages/df/d9/703fba650f88f77313eb5dd5e66673e1d48d0c5f14c06218520a415469e3/ytools-0.9.6.tar.gz" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "6f4969c8f0045ad83acb4ba93eca0cb4", "sha256": "7f082b3fe6f2f88f5ab03f46a958dbeba6898126c8d621837606eaf6250a1701" }, "downloads": -1, "filename": "ytools-0.9.7-py2-none-any.whl", "has_sig": false, "md5_digest": "6f4969c8f0045ad83acb4ba93eca0cb4", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10138, "upload_time": "2018-05-25T23:19:44", "url": "https://files.pythonhosted.org/packages/5a/f5/61e5ba28f5165020c8db30bae006a1046f8bec0f4942877e3a79539bf1af/ytools-0.9.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "08ead69bb1fe03c4610609b5b660e932", "sha256": "2f9e5bc767ece82470fddb8b9c9d439f572cc9d561e3b7b15dc48cf58e171923" }, "downloads": -1, "filename": "ytools-0.9.7.tar.gz", "has_sig": false, "md5_digest": "08ead69bb1fe03c4610609b5b660e932", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11615, "upload_time": "2018-05-25T23:19:46", "url": "https://files.pythonhosted.org/packages/60/99/ea857d3613c0256911d6f10849a63676d5efe1be06ab1b39b501fca47e82/ytools-0.9.7.tar.gz" } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "db99db52dc2f23afcbc9ecf5156d5f3e", "sha256": "fa7bb6e210111f019ceabe20bfe4659cb3b3afc9e1daac6e2ac11eb6d0dc5ac1" }, "downloads": -1, "filename": "ytools-0.9.8-py2-none-any.whl", "has_sig": false, "md5_digest": "db99db52dc2f23afcbc9ecf5156d5f3e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10149, "upload_time": "2018-10-23T08:56:42", "url": "https://files.pythonhosted.org/packages/04/37/a5f5acf0eec91f4fb4d7533ea24edfb9ab8e6629116df486537757166002/ytools-0.9.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2cf39bc216f2e0847c2a69aa244383e7", "sha256": "90e2a8a37b9415a89f8545592fcb5d0917a472a8a9537f89042b144fb67d80e4" }, "downloads": -1, "filename": "ytools-0.9.8.tar.gz", "has_sig": false, "md5_digest": "2cf39bc216f2e0847c2a69aa244383e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11633, "upload_time": "2018-10-23T08:56:43", "url": "https://files.pythonhosted.org/packages/f0/38/739947d4e8253a289b99654a2bf86ba2dbfed186c235ee02f2d8cd4c5788/ytools-0.9.8.tar.gz" } ], "0.9.9": [ { "comment_text": "", "digests": { "md5": "a97289978b35257dced1954b651aa198", "sha256": "8251b9988dd66d9c69a7b752dd7f622a9fdeb4a5bb7be54e55848650dbd16220" }, "downloads": -1, "filename": "ytools-0.9.9-py2-none-any.whl", "has_sig": false, "md5_digest": "a97289978b35257dced1954b651aa198", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10139, "upload_time": "2019-06-28T22:22:26", "url": "https://files.pythonhosted.org/packages/e1/c1/8ecbace3275f0713c3b5589dfa7ea45e976674c703abe1e5ac315c91c868/ytools-0.9.9-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a17e82518cab2c65b7ee7b11ada15a61", "sha256": "381618f7c6c543e6a937807854a2f11beeb128ae0b139938e251df34f0695dc5" }, "downloads": -1, "filename": "ytools-0.9.9.tar.gz", "has_sig": false, "md5_digest": "a17e82518cab2c65b7ee7b11ada15a61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11613, "upload_time": "2019-06-28T22:22:28", "url": "https://files.pythonhosted.org/packages/a1/2b/240c32a3de00b8627a79428ce47b56f795362e6b947091320cd5f0d5ba88/ytools-0.9.9.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "5150c789eabf64b58c1761c6c1c3b246", "sha256": "9622f6436f3954d095019c6b7e9f2de05bf721b164a7233024ad22d6e3ef23ca" }, "downloads": -1, "filename": "ytools-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "5150c789eabf64b58c1761c6c1c3b246", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10166, "upload_time": "2019-06-28T23:16:24", "url": "https://files.pythonhosted.org/packages/c5/57/d4275620dc28546cb30a2622eaca6c56441aeeaf0790e9b84b4c69f974fe/ytools-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f5d711f58955a4165f108ccc36e42d72", "sha256": "722022c6b7aa7a7f7878918d802c45d7a3c569340c167eb54faae92cc1339c7f" }, "downloads": -1, "filename": "ytools-1.0.0.tar.gz", "has_sig": false, "md5_digest": "f5d711f58955a4165f108ccc36e42d72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11648, "upload_time": "2019-06-28T23:16:25", "url": "https://files.pythonhosted.org/packages/95/e2/569d41b33d614772556d61876a9bb7c4b7f5f49c64c420fc1574ddca2349/ytools-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5150c789eabf64b58c1761c6c1c3b246", "sha256": "9622f6436f3954d095019c6b7e9f2de05bf721b164a7233024ad22d6e3ef23ca" }, "downloads": -1, "filename": "ytools-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "5150c789eabf64b58c1761c6c1c3b246", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10166, "upload_time": "2019-06-28T23:16:24", "url": "https://files.pythonhosted.org/packages/c5/57/d4275620dc28546cb30a2622eaca6c56441aeeaf0790e9b84b4c69f974fe/ytools-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f5d711f58955a4165f108ccc36e42d72", "sha256": "722022c6b7aa7a7f7878918d802c45d7a3c569340c167eb54faae92cc1339c7f" }, "downloads": -1, "filename": "ytools-1.0.0.tar.gz", "has_sig": false, "md5_digest": "f5d711f58955a4165f108ccc36e42d72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11648, "upload_time": "2019-06-28T23:16:25", "url": "https://files.pythonhosted.org/packages/95/e2/569d41b33d614772556d61876a9bb7c4b7f5f49c64c420fc1574ddca2349/ytools-1.0.0.tar.gz" } ] }