{
"info": {
"author": "Leonides T. Saguisag Jr.",
"author_email": "leonidessaguisagjr@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Localization",
"Topic :: Text Processing",
"Topic :: Text Processing :: Linguistic"
],
"description": "``pseudol10nutil``\n==================\n\nPython module for performing pseudo-localization on strings. Tested against Python 2, Python3, PyPy and PyPy3.\n\n\nInstallation\n------------\n\nThe module is available on `PyPI `_ and is installable via ``pip``:\n\n``pip install pseudol10nutil``\n\n\nDependencies\n------------\n\nThis package has the following external dependencies:\n\n* `six `_ - for Python 2 to 3 compatibility\n\n\n``PseudoL10nUtil`` class\n------------------------\n\nClass for pseudo-localizing strings. The class currently has the following members:\n\n- ``transforms`` - field that contains the list of transforms to apply to the string. The transforms will be applied in order. Default is ``[transliterate_diacritic, pad_length, square_brackets]``\n- ``pseudolocalize(s)`` - method that returns a new string where the transforms to the input string ``s`` have been applied.\n\n\n``pseudol10nutil.transforms`` module\n------------------------------------\n\nThe following transforms are currently available:\n\n- ``transliterate_diacritic`` - Takes the input string and returns a copy with diacritics added e.g. ``Hello`` -> ``\u021e\u00ea\u013a\u013a\u00f8``.\n- ``transliterate_circled`` - Takes the input string and returns a copy with circled versions of the letters e.g. ``Hello`` -> ``\u24bd\u24d4\u24db\u24db\u24de``\n- ``transliterate_fullwidth`` - Takes the input string and returns a copy with the letters converted to their fullwidth counterparts e.g. ``Hello`` -> ``\uff28\uff45\uff4c\uff4c\uff4f``\n- ``pad_length`` - Appends a series of characters to the end of the input string to increase the string length per `IBM Globalization Design Guideline A3: UI Expansion `_.\n- ``angle_brackets`` - Surrounds the input string with '\u300a' and '\u300b' characters.\n- ``curly_brackets`` - Surrounds the input string with '\u2774' and '\u2775' characters.\n- ``square_brackets`` - Surrounds the input string with '\u27e6' and '\u27e7' characters.\n\n\nFormat string support\n---------------------\n\nWhen performing pseudo-localization on a string, the process will skip performing pseudo-localization on format strings. Python style format strings (e.g. ``{foo}``) and printf style format strings (e.g. ``%s``) are supported. For example::\n\n Input [1]: Source {source1} returned 0 rows.\n Output [1]: '\u27e6\u0218\u00f8\u00fc\u0213\u010b\u00ea {source1} \u0213\u00ea\u0165\u00fc\u0213\u00f1\u00ea\u0111 0 \u0213\u00f8\u1e81\u0161.\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\u27e7\n\n Input [2]: Source %(source2)s returned 1 row.\n Output [2]: \u27e6\u0218\u00f8\u00fc\u0213\u010b\u00ea %(source2)s \u0213\u00ea\u0165\u00fc\u0213\u00f1\u00ea\u0111 1 \u0213\u00f8\u1e81.\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\u27e7\n\n Input [3]: Source %s returned %d rows.\n Output [3]: \u27e6\u0218\u00f8\u00fc\u0213\u010b\u00ea %s \u0213\u00ea\u0165\u00fc\u0213\u00f1\u00ea\u0111 %d \u0213\u00f8\u1e81\u0161.\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\u27e7\n\n\nExample usage\n^^^^^^^^^^^^^\n\nPython 3 example::\n\n\n >>> from pseudol10nutil import PseudoL10nUtil\n >>> util = PseudoL10nUtil()\n >>> s = u\"The quick brown fox jumps over the lazy dog.\"\n >>> util.pseudolocalize(s)\n '\u27e6\u0164\u021f\u00ea \u02a0\u00fc\u0131\u010b\u01e9 \u0180\u0213\u00f8\u1e81\u00f1 \u0192\u00f8\u1e8b \u01f0\u00fc\u0271\u01a5\u0161 \u00f8\u1e7d\u00ea\u0213 \u0165\u021f\u00ea \u013a\u00e0\u017a\u00ff \u0111\u00f8\u011f.\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u27e7'\n >>> import pseudolocalize.transforms\n >>> util.transforms = [pseudol10nutil.transforms.transliterate_fullwidth, pseudol10nutil.transforms.curly_brackets]\n >>> util.pseudolocalize(s)\n '\u2774\uff34\uff48\uff45 \uff51\uff55\uff49\uff43\uff4b \uff42\uff52\uff4f\uff57\uff4e \uff46\uff4f\uff58 \uff4a\uff55\uff4d\uff50\uff53 \uff4f\uff56\uff45\uff52 \uff54\uff48\uff45 \uff4c\uff41\uff5a\uff59 \uff44\uff4f\uff47.\u2775'\n >>> util.transforms = [pseudol10nutil.transforms.transliterate_circled, pseudol10nutil.transforms.pad_length, pseudol10nutil.transforms.angle_brackets]\n >>> util.pseudolocalize(s)\n '\u300a\u24c9\u24d7\u24d4 \u24e0\u24e4\u24d8\u24d2\u24da \u24d1\u24e1\u24de\u24e6\u24dd \u24d5\u24de\u24e7 \u24d9\u24e4\u24dc\u24df\u24e2 \u24de\u24e5\u24d4\u24e1 \u24e3\u24d7\u24d4 \u24db\u24d0\u24e9\u24e8 \u24d3\u24de\u24d6.\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u300b'\n\n\nExample web app\n---------------\n\nThere is an example web app in the ``examples/webapp/`` directory that provides a web UI and a REST endpoint for pseudo-localizing strings. This example is also available on `Docker hub `_.\n\nOnce the docker container is running, the web UI could be accessed via the following URL:\n\n`http://localhost:8080/pseudol10nutil/ `_\n\nThe REST endpoint could be accessed as follows::\n\n >>> import pprint\n >>> import requests\n >>> strings = { \"s1\": \"The quick brown {0} jumps over the lazy {1}.\", }\n >>> data = { \"strings\": strings }\n >>> headers = { \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" }\n >>> api_url = \"http://localhost:8080/pseudol10nutil/api/v1.0/pseudo\"\n >>> resp = requests.post(api_url, headers=headers, json=data)\n >>> resp.status_code\n 200\n >>> pprint.pprint(resp.json())\n {'strings': {'s1': '\u27e6\u0164\u021f\u00ea \u02a0\u00fc\u0131\u010b\u01e9 \u0180\u0213\u00f8\u1e81\u00f1 {0} \u01f0\u00fc\u0271\u01a5\u0161 \u00f8\u1e7d\u00ea\u0213 \u0165\u021f\u00ea \u013a\u00e0\u017a\u00ff '\n '{1}.\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u27e7'}}\n\n\n``POFileUtil`` class\n--------------------\n\nClass for performing pseudo-localization on .po (Portable Object) message catalogs. Currently the class has a single method, ``pseudolocalizefile(input_file, output_file, input_encoding='UTF-8', output_encoding='UTF-8', overwrite_existing=True)``.\n\nThe default transforms will be applied to the strings in the input file. To override this behavior, create an instance of the ``PseudoL10nUtil`` class with the desired behavior and assign it to the ``l10nutil`` field prior to calling the ``pseudolocalizefile()`` method.\n\n\nExample usage\n^^^^^^^^^^^^^\n\nUsing pypy3::\n\n >>>> from pseudol10nutil import POFileUtil\n >>>> pofileutil = POFileUtil()\n >>>> input_file = \"./testdata/locales/helloworld.pot\"\n >>>> output_file = \"./testdata/locales/eo/LC_MESSAGES/helloworld_pseudo.po\"\n >>>> pofileutil.pseudolocalizefile(input_file, output_file)\n >>>> with open(input_file, mode=\"r\") as fileobj:\n .... for line in fileobj:\n .... if line.startswith(\"msgstr\"):\n .... print(line)\n ....\n msgstr \"\"\n\n msgstr \"\"\n\n msgstr \"\"\n\n >>>> with open(output_file, mode=\"r\") as fileobj:\n .... for line in fileobj:\n .... if line.startswith(\"msgstr\"):\n .... print(line)\n ....\n msgstr \"\"\n\n msgstr \"\u27e6\u1e82\u021f\u00e0\u0165 \u0131\u0161 \u00ff\u00f8\u00fc\u0213 \u00f1\u00e0\u0271\u00ea?: \ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\u27e7\"\n\n msgstr \"\u27e6\u021e\u00ea\u013a\u013a\u00f8 {0}!\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\u27e7\"\n\n >>>> from pseudol10nutil import PseudoL10nUtil\n >>>> util = PseudoL10nUtil()\n >>>> import pseudol10nutil.transforms\n >>>> util.transforms = [pseudol10nutil.transforms.transliterate_circled, pseudol10nutil.transforms.pad_length]\n >>>> pofileutil.l10nutil = util\n >>>> pofileutil.pseudolocalizefile(input_file, output_file)\n >>>> with open(output_file, mode=\"r\") as fileobj:\n .... for line in fileobj:\n .... if line.startswith(\"msgstr\"):\n .... print(line)\n ....\n msgstr \"\"\n\n msgstr \"\u24cc\u24d7\u24d0\u24e3 \u24d8\u24e2 \u24e8\u24de\u24e4\u24e1 \u24dd\u24d0\u24dc\u24d4?: \ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\"\n\n msgstr \"\u24bd\u24d4\u24db\u24db\u24de {0}!\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\ud4db\ufe8f\ud835\udfd8\ud83d\udea6\ufe4e\u040d\u05d0\u01c6\u1f8f\u2167\u3234\u32f9\"\n\n >>>>\n\nLicense\n-------\n\nThis is released under an MIT license. See the ``LICENSE`` file in this repository for more information.\n\n\n",
"description_content_type": "text/x-rst",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/leonidessaguisagjr/pseudol10nutil",
"keywords": "",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "pseudol10nutil",
"package_url": "https://pypi.org/project/pseudol10nutil/",
"platform": "",
"project_url": "https://pypi.org/project/pseudol10nutil/",
"project_urls": {
"Homepage": "https://github.com/leonidessaguisagjr/pseudol10nutil"
},
"release_url": "https://pypi.org/project/pseudol10nutil/0.1.dev5/",
"requires_dist": [
"six"
],
"requires_python": "",
"summary": "Classes and functions for performing pseudo-localization on strings and PO files.",
"version": "0.1.dev5"
},
"last_serial": 3919536,
"releases": {
"0.1.dev0": [
{
"comment_text": "",
"digests": {
"md5": "aa0e006224026cfb3523b487ca812cf0",
"sha256": "555fbbec5ef883d10a3e9f82720c0ccfbbb9490e44edc6e01d92df54d3f5bd1a"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "aa0e006224026cfb3523b487ca812cf0",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 8884,
"upload_time": "2018-05-12T20:38:21",
"url": "https://files.pythonhosted.org/packages/15/ca/bd3fb5176320c9578cc9982fea7f2202ca390095b4429dd4af0cc8d24783/pseudol10nutil-0.1.dev0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "37c4d2536df4144e133f8eacabc3f9d3",
"sha256": "949d8f82f94b707c77cfc6acac78977b8ef5e924e503957b5803c236ead4ade5"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev0.tar.gz",
"has_sig": false,
"md5_digest": "37c4d2536df4144e133f8eacabc3f9d3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7199,
"upload_time": "2018-05-12T20:38:22",
"url": "https://files.pythonhosted.org/packages/b0/8d/13f548f46897ba1ac6023917a21e01f53384bbcb77c4071aa373f73eb611/pseudol10nutil-0.1.dev0.tar.gz"
}
],
"0.1.dev1": [
{
"comment_text": "",
"digests": {
"md5": "0efb1cf81b3b9bdb64a306f8b0e3c84a",
"sha256": "46144c002480e10a5f206c7881983f6948fd34e214eb1a2cde40f40972a33147"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "0efb1cf81b3b9bdb64a306f8b0e3c84a",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 10539,
"upload_time": "2018-05-14T06:18:30",
"url": "https://files.pythonhosted.org/packages/c7/23/10fe346cc5f11b32dd3f8e891c6b61e83f0eebffc6ec99a651b35e35241f/pseudol10nutil-0.1.dev1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "173bde9cee11b09570f4ad61d92cf90b",
"sha256": "e06eeb501567ee610ef8a5fcf6b59112c9019667b64e6ffe0622ec3c442a1f36"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev1.tar.gz",
"has_sig": false,
"md5_digest": "173bde9cee11b09570f4ad61d92cf90b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9672,
"upload_time": "2018-05-14T06:18:31",
"url": "https://files.pythonhosted.org/packages/21/9f/1dd8b51d51f08d72f2294ba2ea531f51ea85d04319a505acf2919dc11af1/pseudol10nutil-0.1.dev1.tar.gz"
}
],
"0.1.dev2": [
{
"comment_text": "",
"digests": {
"md5": "a941d03a650e0bab762ba5e26e25e152",
"sha256": "56286dc5e8de9e92eb829f5f06574c681529c57e1c32693d97543ac0be94233f"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a941d03a650e0bab762ba5e26e25e152",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10587,
"upload_time": "2018-05-24T05:33:27",
"url": "https://files.pythonhosted.org/packages/73/3d/73e9bb8d44993d8d5dc82fab70523d518f6b4149f80692d5645bb0bc2034/pseudol10nutil-0.1.dev2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "04bc55cdf1dbdca5d7a87141d1984fc5",
"sha256": "e69301c55b1f83ae51c60ae2f6a2c8dddf67d242ce4224844ee55cc419ef1352"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev2.tar.gz",
"has_sig": false,
"md5_digest": "04bc55cdf1dbdca5d7a87141d1984fc5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9721,
"upload_time": "2018-05-24T05:33:28",
"url": "https://files.pythonhosted.org/packages/22/cc/49425bae6fc6dc0f781dd2bdd3792b795d29b76a9637cfdacae092454b48/pseudol10nutil-0.1.dev2.tar.gz"
}
],
"0.1.dev3": [
{
"comment_text": "",
"digests": {
"md5": "a808b2ea000477c1a789ab83ee2b85e7",
"sha256": "f645404e14deee4e011ed0ea215c141d3b59f92c2d78c076e6f6be0df3be4546"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "a808b2ea000477c1a789ab83ee2b85e7",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 9714,
"upload_time": "2018-06-01T05:03:07",
"url": "https://files.pythonhosted.org/packages/2e/32/843f50fc410c0b2c36963781c14336cda58e0e5c98cd84e5bbc1aac5554d/pseudol10nutil-0.1.dev3-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "fe7e615de9624d83a16ebf040b5e5cb1",
"sha256": "624e130a2dacd0ba7b370cf61493321311b1febbba575d15bf9a4b94d38d4e6d"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev3.tar.gz",
"has_sig": false,
"md5_digest": "fe7e615de9624d83a16ebf040b5e5cb1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12421,
"upload_time": "2018-06-01T05:03:08",
"url": "https://files.pythonhosted.org/packages/1a/06/f0fb0c96567a8071849faaebf5fdf537a81de7d91763936df838a546317e/pseudol10nutil-0.1.dev3.tar.gz"
}
],
"0.1.dev4": [
{
"comment_text": "",
"digests": {
"md5": "527e40ae7691c23952e6e8214566c53d",
"sha256": "cafbfb7b61193253a5acad1d4dc642a76ba9d7f9aaee95dee5fb4e4b43a59395"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev4-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "527e40ae7691c23952e6e8214566c53d",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 9709,
"upload_time": "2018-06-01T05:14:59",
"url": "https://files.pythonhosted.org/packages/9c/90/ff860ba41fba11d105e08399725510506a4527f54b6b4bd2d1f54b54a71b/pseudol10nutil-0.1.dev4-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "dad299b35c4e2716f628c58cc5f2ebc4",
"sha256": "01c533130d1a5e2316a1b0fb5d1e58693e2f0319d02dc8115375597911d6c9a8"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev4.tar.gz",
"has_sig": false,
"md5_digest": "dad299b35c4e2716f628c58cc5f2ebc4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12406,
"upload_time": "2018-06-01T05:15:00",
"url": "https://files.pythonhosted.org/packages/2f/0e/881b47e3b487596df24020f9a6c655aaa9f59725bec9c532f0b2dcbf2390/pseudol10nutil-0.1.dev4.tar.gz"
}
],
"0.1.dev5": [
{
"comment_text": "",
"digests": {
"md5": "16624dd968cd107aeea951765cd7992a",
"sha256": "626686f4e4000d7431e4e7d2e3d9b4df2f8ea81be0ee65a42541893bd4ebd8bf"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev5-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "16624dd968cd107aeea951765cd7992a",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 9714,
"upload_time": "2018-06-01T05:32:06",
"url": "https://files.pythonhosted.org/packages/ef/a2/89b14b337f3b6eba9447b1ea08bbcf65b91ebea7b4eb4ba73eac43de6468/pseudol10nutil-0.1.dev5-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "896dbf207ddbf34f06e6a4c8c17c4c66",
"sha256": "e34f89a79619c9480527791826bf5b402298629f5c70ea3fc07ecf42fea01f3a"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev5.tar.gz",
"has_sig": false,
"md5_digest": "896dbf207ddbf34f06e6a4c8c17c4c66",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12423,
"upload_time": "2018-06-01T05:32:07",
"url": "https://files.pythonhosted.org/packages/7a/3e/001be04b2d7f3d67f82ffde252735ee46a69bd724ff35bf34d86e538b9f5/pseudol10nutil-0.1.dev5.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "16624dd968cd107aeea951765cd7992a",
"sha256": "626686f4e4000d7431e4e7d2e3d9b4df2f8ea81be0ee65a42541893bd4ebd8bf"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev5-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "16624dd968cd107aeea951765cd7992a",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 9714,
"upload_time": "2018-06-01T05:32:06",
"url": "https://files.pythonhosted.org/packages/ef/a2/89b14b337f3b6eba9447b1ea08bbcf65b91ebea7b4eb4ba73eac43de6468/pseudol10nutil-0.1.dev5-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "896dbf207ddbf34f06e6a4c8c17c4c66",
"sha256": "e34f89a79619c9480527791826bf5b402298629f5c70ea3fc07ecf42fea01f3a"
},
"downloads": -1,
"filename": "pseudol10nutil-0.1.dev5.tar.gz",
"has_sig": false,
"md5_digest": "896dbf207ddbf34f06e6a4c8c17c4c66",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12423,
"upload_time": "2018-06-01T05:32:07",
"url": "https://files.pythonhosted.org/packages/7a/3e/001be04b2d7f3d67f82ffde252735ee46a69bd724ff35bf34d86e538b9f5/pseudol10nutil-0.1.dev5.tar.gz"
}
]
}