{ "info": { "author": "Mats Blomdahl", "author_email": "mats.blomdahl@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved", "Natural Language :: English", "Operating System :: POSIX", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Quality Assurance" ], "description": "\nqsck\n====\n\nPython library for serializing and deserializing a wonky format referred to\nas \".qs\" files. For full format specification, please read through\n[tests.test_serialize](https://github.com/mblomdahl/qsck/blob/master/tests/test_serialize.py)\nand\n[tests.test_deserialize](https://github.com/mblomdahl/qsck/blob/master/tests/test_deserialize.py)\ntest suites and extrapolate.\n\n\nQuick Start\n-----------\n\n**Use Python \u2265 3.6 only.** To install it, simply:\n\n pip3 install qsck\n\n\n### Serializing Data\n\nVia Python:\n\n python3 -c \"import qsck; print(qsck.serialize('LOG', '1553302923', [\n ('first_key', 'some value'),\n ('2nd_key', [('attr1', 'foo'), ('attr2', 'bar')]),\n ('3rd_key', {'subKey1': '-3', 'subKey2': None}),\n ('4th_key', None)\n ]))\"\n\n\nOut comes a \".qs\" record, like so:\n\n LOG,1553302923,first_key=some value,2nd_key={attr1=foo, attr2=bar},3rd_key={\"subKey1\":\"-3\",\"subKey2\":null},4th_key=(null)\n\n\nThe library also supports serializing data by passing in a JSON file via\nthe command-line tool `qs-format`, one record per line:\n\n qs-format my-records.json > my-records.qs\n\n\n## Deserializing Data\n\nVia Python:\n\n python3 -c \"import pprint, qsck; pprint.pprint(qsck.deserialize(\n 'LOG,1553302923,first_key=some value,2nd_key={attr1=foo, \\\n attr2=bar},3rd_key={\\\"subKey1\\\":\\\"-3\\\",\\\"subKey2\\\":null},4th_key=(null)'))\"\n\n\nOut comes a friendly Python collection:\n\n ('LOG',\n '1553302923',\n [('first_key', 'some value'),\n ('2nd_key', [('attr1', 'foo'), ('attr2', 'bar')]),\n ('3rd_key', {'subKey1': '-3', 'subKey2': None}),\n ('4th_key', None)])\n\n\nThe library-provided `qs-parse` command-line tool supports deserializing a whole\n\".qs\" log file, emitting one JSON record per input line to stdout:\n\n qs-parse my-records.qs > my-records.json \n\n\nContributing\n------------\n\nReally? Very welcome. Do the usual fork-and-submit-PR thingy.\n\nRunning the tests:\n\n python setup.py test\n\n\nDistributing:\n\n pip3 install --upgrade twine wheel setuptools\n python setup.py sdist bdist_wheel\n twine upload dist/*\n\n\nChangelog\n---------\n\n### `0.3` - Better Deserialization\n\n- Adds support for funky \"nested-nested lists\" in .qs records\n- Squashing complex comma (`,`) values\n\n\n### `0.2` \u2013 Deserialize Added\n\nAdds support for de-serializing \".qs\" records.\n\n\n### `0.1` \u2013 Initial Release\n\nSupports serializing \".qs\" records.\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/mblomdahl/qsck", "keywords": "", "license": "The Unlicense", "maintainer": "", "maintainer_email": "", "name": "qsck", "package_url": "https://pypi.org/project/qsck/", "platform": "", "project_url": "https://pypi.org/project/qsck/", "project_urls": { "Homepage": "https://github.com/mblomdahl/qsck" }, "release_url": "https://pypi.org/project/qsck/0.3/", "requires_dist": [ "Click", "ujson" ], "requires_python": ">=3.6", "summary": "The shitty \".qs\" file (de-)serializer", "version": "0.3" }, "last_serial": 5138862, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "ec95f293250ebc7c16e2fc545872cd45", "sha256": "75fc3c6d9826f76855a84de3781509514190f927e3066eb241dfafa8523fa209" }, "downloads": -1, "filename": "qsck-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ec95f293250ebc7c16e2fc545872cd45", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5132, "upload_time": "2019-03-24T13:11:01", "url": "https://files.pythonhosted.org/packages/0d/ad/206f436365826483e5ab111d319901db17b9bb58c731ae5ff5cbb0e5c759/qsck-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11fa247e19584d7e701fe754c20f6fff", "sha256": "2f4623045903929f084d12a6a1ff34a9a1b1cbe682063c2bfa3d162ca5bb1779" }, "downloads": -1, "filename": "qsck-0.1.tar.gz", "has_sig": false, "md5_digest": "11fa247e19584d7e701fe754c20f6fff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3643, "upload_time": "2019-03-24T13:11:03", "url": "https://files.pythonhosted.org/packages/ce/d2/6bef95e8c046389b50e32faa802a53b71cb94579daa554c570eebcbe8cc1/qsck-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "0950dc56340805042d1700b7f8985e8f", "sha256": "ed582110ac96e51ab2b05593a42a4de6b22e509bbd1a7553e7d46d04ed3a3790" }, "downloads": -1, "filename": "qsck-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "0950dc56340805042d1700b7f8985e8f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6570, "upload_time": "2019-03-24T20:06:36", "url": "https://files.pythonhosted.org/packages/31/a2/fa7c61d832ee61d20341b81d4e3a45723b0a5465196a729dd28331b2bfab/qsck-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf5189a5bca19d3ed22252d98af4d5af", "sha256": "2d9875c38f78cbe62da6a5bbc1703cf4d405b04c912029a742c87bbdb80ef5ae" }, "downloads": -1, "filename": "qsck-0.2.tar.gz", "has_sig": false, "md5_digest": "cf5189a5bca19d3ed22252d98af4d5af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4935, "upload_time": "2019-03-24T20:06:39", "url": "https://files.pythonhosted.org/packages/ef/b7/47ff51369e36555df2c2e020e487c54a0b28576c1a8d61605e0e97a185fa/qsck-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "996015d1195efd15da313f998f219f2d", "sha256": "5af31d9cee01e0090eb140b9fc893588e53f8a777f7069cd25e10595b7b04532" }, "downloads": -1, "filename": "qsck-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "996015d1195efd15da313f998f219f2d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8172, "upload_time": "2019-04-13T18:31:08", "url": "https://files.pythonhosted.org/packages/52/05/b143f38b5bdcee8cc5b40971a44ef99b905865ca43f2892a8086f3f32097/qsck-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0667a90a856db21061c0442fc125ac55", "sha256": "79c37a151155833a4a59687758bd005cb667fb3ef084e2cd1eab4f10b0fe8df2" }, "downloads": -1, "filename": "qsck-0.3.tar.gz", "has_sig": false, "md5_digest": "0667a90a856db21061c0442fc125ac55", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6331, "upload_time": "2019-04-13T18:31:11", "url": "https://files.pythonhosted.org/packages/b5/6e/59dd93d9f7deb8ed93927d0fcf7e0c83f60dafd6998fed0da3f3566b48b3/qsck-0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "996015d1195efd15da313f998f219f2d", "sha256": "5af31d9cee01e0090eb140b9fc893588e53f8a777f7069cd25e10595b7b04532" }, "downloads": -1, "filename": "qsck-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "996015d1195efd15da313f998f219f2d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8172, "upload_time": "2019-04-13T18:31:08", "url": "https://files.pythonhosted.org/packages/52/05/b143f38b5bdcee8cc5b40971a44ef99b905865ca43f2892a8086f3f32097/qsck-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0667a90a856db21061c0442fc125ac55", "sha256": "79c37a151155833a4a59687758bd005cb667fb3ef084e2cd1eab4f10b0fe8df2" }, "downloads": -1, "filename": "qsck-0.3.tar.gz", "has_sig": false, "md5_digest": "0667a90a856db21061c0442fc125ac55", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6331, "upload_time": "2019-04-13T18:31:11", "url": "https://files.pythonhosted.org/packages/b5/6e/59dd93d9f7deb8ed93927d0fcf7e0c83f60dafd6998fed0da3f3566b48b3/qsck-0.3.tar.gz" } ] }