{ "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", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Internationalization", "Topic :: Software Development :: Libraries", "Topic :: Text Processing", "Topic :: Text Processing :: Linguistic" ], "description": "``unicodeutil``\n===============\n\nPython classes and functions for working with Unicode\u00ae data. This was initially built with Python 2 in mind but has also been tested with Python 3, PyPy and PyPy3.\n\n\nDependencies\n------------\n\nThis package has the following external dependencies:\n\n* `six `_ - for Python 2 to 3 compatibility\n\n\nCase folding function\n---------------------\n\n``casefold(s)`` is a function for performing case folding per section 3.13 of the `Unicode\u00ae Standard `_. Also see the `W3C page on case folding `_ for more information on what case folding is.\n\nPython 3.3 and newer has ``str.casefold()`` already built in. This is my attempt at building a case folding function to use with Python 2 and as such was initially only tested with Python 2.7.14. It essentially parses the ``CaseFolding.txt`` file that is included in the `Unicode\u00ae Character Database `_ to build a dictionary that is then used as a lookup table to create a copy of the input string that has been transformed to facilitate caseless comparisons.\n\nA bit more information about how I put this together on my `blog `_.\n\nBy default, the ``casefold(s)`` function performs full case folding. To use simple case folding, pass the parameter ``fullcasefold=False`` (the default is ``fullcasefold=True``). See the comments in ``CaseFolding.txt`` for an explanation of the difference between simple and full case folding.\n\nBy default, the ``casefold(s)`` function will not use the Turkic special case mappings for dotted and dotless 'i'. To use the Turkic mapping, pass the parameter ``useturkicmapping=True`` to the function. See the following web pages for more information on the dotted vs dotless 'i':\n\n* https://en.wikipedia.org/wiki/Dotted_and_dotless_I\n* http://www.i18nguy.com/unicode/turkish-i18n.html#problem\n\n\nExample usage\n^^^^^^^^^^^^^\n\nUsing Python 2::\n\n >>> from unicodeutil import casefold\n >>> s1 = u\"wei\u00df\"\n >>> s2 = u\"WEISS\"\n >>> casefold(s1) == casefold(s2)\n True\n >>> s1 = u\"L\u0130MANI\"\n >>> s2 = u\"liman\u0131\"\n >>> casefold(s1) == casefold(s2)\n False\n >>> casefold(s1, useturkicmapping=True) == casefold(s2, useturkicmapping=True)\n True\n\n\nSplitting a Python 2 string into chars, preserving surrogate pairs\n-------------------------------------------------------------------------\n\nThe ``preservesurrogates(s)`` function will split a string into a list of characters, preserving `surrogate pairs `_.\n\nExample usage\n^^^^^^^^^^^^^\n\nUsing Python 2::\n\n >>> from unicodeutil import preservesurrogates\n >>> s = u\"ABC\\U0001e900DeF\\U000118a0gH\u0131\u0130\"\n >>> list(s)\n [u'A', u'B', u'C', u'\\ud83a', u'\\udd00', u'D', u'e', u'F', u'\\ud806', u'\\udca0', u'g', u'H', u'\\u0131', u'\\u0130']\n >>> for c in s:\n ... print c\n ...\n A\n B\n C\n ???\n ???\n D\n e\n F\n ???\n ???\n g\n H\n \u0131\n \u0130\n >>> list(preservesurrogates(s))\n [u'A', u'B', u'C', u'\\U0001e900', u'D', u'e', u'F', u'\\U000118a0', u'g', u'H', u'\\u0131', u'\\u0130']\n >>> for c in preservesurrogates(s):\n ... print(c)\n ...\n A\n B\n C\n \ud83a\udd00\n D\n e\n F\n \ud806\udca0\n g\n H\n \u0131\n \u0130\n\nUsing the latest Unicode\u00ae Character Database (UCD)\n--------------------------------------------------\n\nAs of Python 2.7.15, the `unicodedata `_ module is still using data from version 5.2.0 of the UCD. The UCD is `currently up to version 12.0.0 `_.\n\nThe ``UnicodeCharacter`` namedtuple encapsulates the various properties associated with each Unicode\u00ae character, as explained in `Unicode Standard Annex #44, UnicodeData.txt `_.\n\nThe ``UnicodeData`` class represents the contents of the UCD as parsed from the `latest UnicodeData.txt `_ found on the Unicode Consortium FTP site. Once an instance of the ``UnicodeData`` class has been created, it is possible to do ``dict`` style lookups using the Unicode scalar value, lookup by Unicode character by using the ``lookup_by_char(c)`` method, or lookups by name using the ``lookup_by_name(name)`` and ``lookup_by_partial_name(partial_name)`` methods. The name lookup uses the `UAX44-LM2 `_ loose matching rule when doing lookups. Iterating through all of the data is also possible via ``items()``, ``keys()`` and ``values()`` methods.\n\nThe ``UnicodeBlocks`` class encapsulates the block information associated with a Unicode character. Once an instance of the ``UnicodeBlocks`` class has been created, it is possible to get the Block name associated with a particular Unicode character by either doing ``dict`` style lookups using the Unicode scalar value, or using the ``lookup_by_char(c)`` method to lookup by Unicode character. Iterating through all of the data is also possible via the ``items()``, ``keys()`` and ``values()`` methods.\n\nExample usage\n^^^^^^^^^^^^^\n\nUsing Python 2::\n\n >>> from unicodeutil import UnicodeBlocks, UnicodeData\n >>> ucd = UnicodeData()\n >>> ucd[0x00df]\n UnicodeCharacter(code=u'U+00DF', name='LATIN SMALL LETTER SHARP S', category='Ll', combining=0, bidi='L', decomposition='', decimal='', digit='', numeric='', mirrored='N', unicode_1_name='', iso_comment='', uppercase='', lowercase='', titlecase='')\n >>> ucd[0x0130].name\n 'LATIN CAPITAL LETTER I WITH DOT ABOVE'\n >>> ucd.lookup_by_char(u\"\u170a\")\n UnicodeCharacter(code=u'U+170A', name=u'TAGALOG LETTER BA', category=u'Lo', combining=0, bidi=u'L', decomposition=u'', decimal=u'', digit=u'', numeric=u'', mirrored=u'N', unicode_1_name=u'', iso_comment=u'', uppercase=u'', lowercase=u'', titlecase=u'')\n >>> ucd.lookup_by_name(\"latin small letter sharp_s\")\n UnicodeCharacter(code=u'U+00DF', name='LATIN SMALL LETTER SHARP S', category='Ll', combining=0, bidi='L', decomposition='', decimal='', digit='', numeric='', mirrored='N', unicode_1_name='', iso_comment='', uppercase='', lowercase='', titlecase='')\n >>> blocks = UnicodeBlocks()\n >>> blocks[0x00DF]\n u'Latin-1 Supplement'\n >>> blocks.lookup_by_char(u\"\u1e9e\")\n u'Latin Extended Additional'\n\n\nComposing and decomposing Hangul Syllables\n------------------------------------------\n\nThe function ``compose_hangul_syllable(jamo)`` takes a tuple or list of Unicode scalar values of Jamo and returns its equivalent precomposed Hangul syllable. The complementary function ``decompose_hangul_syllable(hangul_syllable, fully_decompose=False)`` takes the Unicode scalar value of a hangul syllable and will either do a canonical decomposition (default, fully_decompose=False) or a full canonical decomposition (fully_decompose=True) of a Hangul syllable. The return value will be a tuple of Unicode scalar values corresponding to the Jamo that the Hangul syllable has been decomposed into. For example (taken from the `Unicode Standard, ch. 03, section 3.12, Conjoing Jamo Behavior `_)::\n\n U+D4DB <-> # Canonical Decomposition (default)\n U+D4CC <-> \n U+D4DB <-> # Full Canonical Decomposition\n\nExample usage:\n^^^^^^^^^^^^^^\n\nThe following sample code snippet::\n\n import sys\n\n from unicodeutil import UnicodeData, compose_hangul_syllable, \\\n decompose_hangul_syllable\n\n ucd = None\n\n\n def pprint_composed(jamo):\n hangul = compose_hangul_syllable(jamo)\n hangul_data = ucd[hangul]\n print(\"<{0}> -> {1}\".format(\n \", \".join([\" \".join([jamo_data.code, jamo_data.name])\n for jamo_data in [ucd[j] for j in jamo]]),\n \" \".join([hangul_data.code, hangul_data.name])\n ))\n\n\n def pprint_decomposed(hangul, decomposition):\n hangul_data = ucd[hangul]\n print(\"{0} -> <{1}>\".format(\n \" \".join([hangul_data.code, hangul_data.name]),\n \", \".join([\" \".join([jamo_data.code, jamo_data.name])\n for jamo_data in [ucd[jamo]\n for jamo in decomposition if jamo]])\n ))\n\n\n def main():\n if len(sys.argv) not in {2, 3, 4}:\n print(\"Invalid number of arguments!\")\n sys.exit(1)\n global ucd\n ucd = UnicodeData()\n if len(sys.argv) == 2:\n hangul = int(sys.argv[1], 16)\n print(\"Canonical Decomposition:\")\n pprint_decomposed(hangul,\n decompose_hangul_syllable(hangul,\n fully_decompose=False))\n print(\"Full Canonical Decomposition:\")\n pprint_decomposed(hangul,\n decompose_hangul_syllable(hangul,\n fully_decompose=True))\n elif len(sys.argv) in {3, 4}:\n print(\"Composition:\")\n pprint_composed(tuple([int(arg, 16) for arg in sys.argv[1:]]))\n\n\n if __name__ == \"__main__\":\n main()\n\nWill produce the following (tested in Python 2 and Python 3)::\n\n $ python pprint_hangul.py 0xD4DB\n Canonical Decomposition:\n U+D4DB HANGUL SYLLABLE PWILH -> \n Full Canonical Decomposition:\n U+D4DB HANGUL SYLLABLE PWILH -> \n $ python3 pprint_hangul.py 0xD4CC 0x11B6\n Composition:\n -> U+D4DB HANGUL SYLLABLE PWILH\n $ pypy pprint_hangul.py 0x1111 0x1171 0x11b6\n Composition:\n -> U+D4DB HANGUL SYLLABLE PWILH\n\n\nLicense\n-------\n\nThis is released under an MIT license. See the ``LICENSE`` file in this repository for more information.\n\nThe included ``Blocks.txt``, ``CaseFolding.txt``, ``HangulSyllableType.txt``, ``Jamo.txt`` and ``UnicodeData.txt`` files are part of the Unicode\u00ae Character Database that is published by Unicode, Inc. Please consult the `Unicode\u00ae Terms of Use `_ prior to use.\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/unicodeutil", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "unicodeutil", "package_url": "https://pypi.org/project/unicodeutil/", "platform": "", "project_url": "https://pypi.org/project/unicodeutil/", "project_urls": { "Homepage": "https://github.com/leonidessaguisagjr/unicodeutil" }, "release_url": "https://pypi.org/project/unicodeutil/12.0.dev1/", "requires_dist": [ "six" ], "requires_python": "", "summary": "Classes and functions for working with Unicode data.", "version": "12.0.dev1" }, "last_serial": 4928431, "releases": { "0.1.dev1": [ { "comment_text": "", "digests": { "md5": "f1e6be078a3dd3711741da46ccc3e839", "sha256": "12842d9c89662b1c92b83d5051764b5710bfaf6b9224e76ad9da2bb1ab23572f" }, "downloads": -1, "filename": "unicodeutil-0.1.dev1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f1e6be078a3dd3711741da46ccc3e839", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 288211, "upload_time": "2018-04-29T09:34:06", "url": "https://files.pythonhosted.org/packages/40/3f/96b911d2f910b5ed50cd985648f265de41cc6b73c3dd098467c304b73cf9/unicodeutil-0.1.dev1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d8746b5fff1c4c37bf6cbf70e5bcaabf", "sha256": "0fe583b03143c6c9afe96ef955aa72919c9f3eb9d1209b763a6d598f7f3c1a58" }, "downloads": -1, "filename": "unicodeutil-0.1.dev1.tar.gz", "has_sig": false, "md5_digest": "d8746b5fff1c4c37bf6cbf70e5bcaabf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 275299, "upload_time": "2018-04-29T09:33:50", "url": "https://files.pythonhosted.org/packages/5a/f2/b15ee04e843f77bac69b582be562c29479c2acfed884a6f8ccb00ade8fd6/unicodeutil-0.1.dev1.tar.gz" } ], "0.1.dev10": [ { "comment_text": "", "digests": { "md5": "f937888199edf9357bd20e2e497c6161", "sha256": "13e90b1976b3b35c11754f491c7ffc4183fc5b8e47462ece754d74b8410994c5" }, "downloads": -1, "filename": "unicodeutil-0.1.dev10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f937888199edf9357bd20e2e497c6161", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 308428, "upload_time": "2018-06-07T01:28:21", "url": "https://files.pythonhosted.org/packages/17/d6/3944b23157f47403af204c7139c545f126878faa6bd1571829d75ccc22ba/unicodeutil-0.1.dev10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c10e5d74efeacfd3da5dd56bf9095b1", "sha256": "0ec2ba9e24291d7ea248ebb622a68667490e0d101037c9c3429a4cfe4a04483b" }, "downloads": -1, "filename": "unicodeutil-0.1.dev10.tar.gz", "has_sig": false, "md5_digest": "1c10e5d74efeacfd3da5dd56bf9095b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 300428, "upload_time": "2018-06-07T01:28:23", "url": "https://files.pythonhosted.org/packages/6a/08/e40bb52ccb1b30203ce9f4d4b43ea4149e81d27252115ee80a92dbacccc0/unicodeutil-0.1.dev10.tar.gz" } ], "0.1.dev2": [ { "comment_text": "", "digests": { "md5": "548356c5236125909e70f897914dc007", "sha256": "bd244d7152f2ac9e580b3f7fd960338259bea1e6a26f59d40443e346f37ad80b" }, "downloads": -1, "filename": "unicodeutil-0.1.dev2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "548356c5236125909e70f897914dc007", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 299286, "upload_time": "2018-05-01T06:13:17", "url": "https://files.pythonhosted.org/packages/66/60/1a34ff51b0c38d8328d3ae9b97aea2bc0bc2808df1f65c0f59f04d24bf15/unicodeutil-0.1.dev2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "54e028e1a7915644ea4104858d1dbb98", "sha256": "0cd7c9e2a81f0ecc4420bc7da5cf0cc04911a9dedc9f96f6a1d385808e5cf05f" }, "downloads": -1, "filename": "unicodeutil-0.1.dev2.tar.gz", "has_sig": false, "md5_digest": "54e028e1a7915644ea4104858d1dbb98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 287360, "upload_time": "2018-05-01T06:13:19", "url": "https://files.pythonhosted.org/packages/8c/f0/84d8f876a560838f7142b8833b1e23dc9e80e4c329ff5d0a554e6b80ff24/unicodeutil-0.1.dev2.tar.gz" } ], "0.1.dev3": [ { "comment_text": "", "digests": { "md5": "2e0d7589c99cb081909544e4b1272a0a", "sha256": "65cf6888224a67716f2001a4579fbce0c65c4d7f6e08f1ae22b33f944bbf39c4" }, "downloads": -1, "filename": "unicodeutil-0.1.dev3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2e0d7589c99cb081909544e4b1272a0a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 299846, "upload_time": "2018-05-01T08:17:08", "url": "https://files.pythonhosted.org/packages/8d/0b/c9d3ecb74def54f7c2468780f27239b991d2db08235331abb28b2e56c875/unicodeutil-0.1.dev3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53f613675d3afed5649a11d276111640", "sha256": "8dcbf6c1500344d1b4e033f5c4ccef531ce23c758430a00039606d98c7ab05e9" }, "downloads": -1, "filename": "unicodeutil-0.1.dev3.tar.gz", "has_sig": false, "md5_digest": "53f613675d3afed5649a11d276111640", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 288104, "upload_time": "2018-05-01T08:17:10", "url": "https://files.pythonhosted.org/packages/f1/2d/0e13273bf7602ed92689c88b85759d4370d699f5a5961a3985c03cdf20a7/unicodeutil-0.1.dev3.tar.gz" } ], "0.1.dev4": [ { "comment_text": "", "digests": { "md5": "b25a6bbe474cfe8169de4fd547d13b49", "sha256": "5cb2fdf4cde3bcb4fe2d0f450ecc02f0540ef01e27a303e0cfe4ce525ec49a14" }, "downloads": -1, "filename": "unicodeutil-0.1.dev4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b25a6bbe474cfe8169de4fd547d13b49", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 300100, "upload_time": "2018-05-03T01:49:20", "url": "https://files.pythonhosted.org/packages/53/9c/6bb17f9ef889b26330a22f7da55e2b90ccc0e1279c55d1a49a838e1fac7b/unicodeutil-0.1.dev4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "30ba9621bc7e7a30b191a520c5216ee1", "sha256": "f2ef8e6fd68f050ab2ebbaa4ed3324122d7370869389130aa532bd4b5bb8e9ab" }, "downloads": -1, "filename": "unicodeutil-0.1.dev4.tar.gz", "has_sig": false, "md5_digest": "30ba9621bc7e7a30b191a520c5216ee1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 288344, "upload_time": "2018-05-03T01:49:06", "url": "https://files.pythonhosted.org/packages/fe/a7/525004d375ed0f1f90cfbf6682ec65550cf305c8b6774f4e1ac5ceba9eb9/unicodeutil-0.1.dev4.tar.gz" } ], "0.1.dev5": [ { "comment_text": "", "digests": { "md5": "8754a7b082a1734bc90d1ac9e604ab20", "sha256": "5698adb575daa9c45bb47ef61721cb88fa67557e43f6d1ab977b3fcf6508256b" }, "downloads": -1, "filename": "unicodeutil-0.1.dev5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8754a7b082a1734bc90d1ac9e604ab20", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 301037, "upload_time": "2018-05-03T06:05:03", "url": "https://files.pythonhosted.org/packages/91/7c/bc07b72ef9eeefe2f62ba761ce0c4465925eeaa22cd170ab42f8790fe700/unicodeutil-0.1.dev5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6daff19374e29771ade7ba7ebfda93c3", "sha256": "c608c165d2c3624d4c7d114088da0109553a5e39c99021f823a6ba1fa3f1f174" }, "downloads": -1, "filename": "unicodeutil-0.1.dev5.tar.gz", "has_sig": false, "md5_digest": "6daff19374e29771ade7ba7ebfda93c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 289479, "upload_time": "2018-05-03T06:05:05", "url": "https://files.pythonhosted.org/packages/ce/23/0596b3b8bf9f78862a9173914ee3011e46bcca74a32317f01cfa4ae3a07c/unicodeutil-0.1.dev5.tar.gz" } ], "0.1.dev6": [ { "comment_text": "", "digests": { "md5": "6e0fd6b1529e6b8092804730df0a58b3", "sha256": "3ffeac43f463763deea8dac299ae96af432e093ed62e0dc92d14a4abdf046e5c" }, "downloads": -1, "filename": "unicodeutil-0.1.dev6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6e0fd6b1529e6b8092804730df0a58b3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 301418, "upload_time": "2018-05-10T05:00:34", "url": "https://files.pythonhosted.org/packages/03/d4/20f2a22531fa70cab33c40265723b38ee9152d3b1606158450daba6c6b85/unicodeutil-0.1.dev6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "466e44479ef827eb90148504d79098b7", "sha256": "40417af6750d048af800d209d293939a2eb3cc823a57804baffe61cbc58cc3bc" }, "downloads": -1, "filename": "unicodeutil-0.1.dev6.tar.gz", "has_sig": false, "md5_digest": "466e44479ef827eb90148504d79098b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 289998, "upload_time": "2018-05-10T05:00:35", "url": "https://files.pythonhosted.org/packages/c4/40/a7fbab79a6bc876623cbd5548099f1c4701ec053042cdb0fab65c1352979/unicodeutil-0.1.dev6.tar.gz" } ], "0.1.dev7": [ { "comment_text": "", "digests": { "md5": "5327f5f1c079d7a76c2f25b4909ffd80", "sha256": "88f6b23c10ecad31978e623d196cbc4137f08d36eb365a960d124af9cfe100dd" }, "downloads": -1, "filename": "unicodeutil-0.1.dev7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5327f5f1c079d7a76c2f25b4909ffd80", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 301409, "upload_time": "2018-05-12T04:26:42", "url": "https://files.pythonhosted.org/packages/3c/1f/5ac203f8c13e7b921be24cb3ce403534c671e1e98b82c83d128957af916e/unicodeutil-0.1.dev7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "869f5cd53f1ec7d0c82307cc9bdf2fad", "sha256": "357d256a8b55c440a8880dfff011655025fe6e5e5f0e01d4b342c035217030ed" }, "downloads": -1, "filename": "unicodeutil-0.1.dev7.tar.gz", "has_sig": false, "md5_digest": "869f5cd53f1ec7d0c82307cc9bdf2fad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 289988, "upload_time": "2018-05-12T04:26:43", "url": "https://files.pythonhosted.org/packages/fb/7b/5c99480a1cfb10597fa11ebf3acab54dce6f74536db656400b7433013195/unicodeutil-0.1.dev7.tar.gz" } ], "0.1.dev8": [ { "comment_text": "", "digests": { "md5": "494b006292f4bfa444b7f8aa9cb74bcc", "sha256": "99462102e186a065fee42e7b3fd73a23054bcae78ab8c6e8f2460dbf66b1e94f" }, "downloads": -1, "filename": "unicodeutil-0.1.dev8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "494b006292f4bfa444b7f8aa9cb74bcc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 306040, "upload_time": "2018-05-15T17:29:11", "url": "https://files.pythonhosted.org/packages/28/d1/7575ebbeab23d2a04cde832cab7683d0096c21595168aa3e806053fb342f/unicodeutil-0.1.dev8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2074e5d6db022e30492a01ae70aa64b5", "sha256": "5a84986ee5e89b2f4ad168ebc52261c40f7a84f13ea310797adcae4bfb6fd9b6" }, "downloads": -1, "filename": "unicodeutil-0.1.dev8.tar.gz", "has_sig": false, "md5_digest": "2074e5d6db022e30492a01ae70aa64b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 294336, "upload_time": "2018-05-15T17:29:12", "url": "https://files.pythonhosted.org/packages/c0/aa/fbdfc23bae8df03fbd948779ee5795a62f002f36497978083cf083c35c4c/unicodeutil-0.1.dev8.tar.gz" } ], "0.1.dev9": [ { "comment_text": "", "digests": { "md5": "30b5e28ffb32a299dfa3976c2cc11f16", "sha256": "58458b0ebb65846cc3ad06b1dcb7037dba310a9a41f9d8aa64a4a5e669fc0c36" }, "downloads": -1, "filename": "unicodeutil-0.1.dev9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "30b5e28ffb32a299dfa3976c2cc11f16", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 305984, "upload_time": "2018-05-22T08:14:14", "url": "https://files.pythonhosted.org/packages/94/02/68b2339bf9291dd8fc9ef8ae2496bf1a59ae257380453aba1687ef6b76d4/unicodeutil-0.1.dev9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c01d7ab5e208dbc975fb61b3b8d00e83", "sha256": "fdc1c3ec5dde1f2aef24c894771af25a4d0c4553dfa020b484e09d3a7bfa551d" }, "downloads": -1, "filename": "unicodeutil-0.1.dev9.tar.gz", "has_sig": false, "md5_digest": "c01d7ab5e208dbc975fb61b3b8d00e83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 294282, "upload_time": "2018-05-22T08:14:16", "url": "https://files.pythonhosted.org/packages/d4/a6/acd7e17e5aa88328dfbf825f7e930bf954b76e3f21c8e2674923a2d31457/unicodeutil-0.1.dev9.tar.gz" } ], "11.0.dev1": [ { "comment_text": "", "digests": { "md5": "92cd2190d29f07e2cffacc85eb89b6e0", "sha256": "a5b5a14276e767a54fa60cf49e32089b13c184c3c3e013dbf7c4653a06b9d45e" }, "downloads": -1, "filename": "unicodeutil-11.0.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "92cd2190d29f07e2cffacc85eb89b6e0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 309261, "upload_time": "2019-03-12T04:35:40", "url": "https://files.pythonhosted.org/packages/d0/12/0d13b7e538519c62eed74b1df24cabea30bcb237ab005c1c77ca4c91d5d9/unicodeutil-11.0.dev1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "414be4126a5e5175badea292a9640073", "sha256": "2c6f97c663a9601312bf40690d834496d832b0b9e4010f8ff94706ff32c5b531" }, "downloads": -1, "filename": "unicodeutil-11.0.dev1.tar.gz", "has_sig": false, "md5_digest": "414be4126a5e5175badea292a9640073", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 300373, "upload_time": "2019-03-12T04:35:42", "url": "https://files.pythonhosted.org/packages/a5/4a/85d57318f0c11ce526b4736ef9b6aeec4c17059bd6375a28b59185c6cf9d/unicodeutil-11.0.dev1.tar.gz" } ], "12.0.dev1": [ { "comment_text": "", "digests": { "md5": "3b6564bd21de9057a7c598947bb5e3da", "sha256": "b89406c979125c0c22589e7be31634ecdd7b07c969901a73d26c7b7b0cff454d" }, "downloads": -1, "filename": "unicodeutil-12.0.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "3b6564bd21de9057a7c598947bb5e3da", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 313216, "upload_time": "2019-03-12T05:13:28", "url": "https://files.pythonhosted.org/packages/3f/0f/a27dc0851fe5076fa0ac9738b27dbc3f1bf68e2768745ee1d8aea6ae9307/unicodeutil-12.0.dev1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7cf3dc34fdb093c2df51d4c3b6567538", "sha256": "37b1d998b8857f99c98938289b1284a3ab10998c25287cfb466ca2cdad3cb2c9" }, "downloads": -1, "filename": "unicodeutil-12.0.dev1.tar.gz", "has_sig": false, "md5_digest": "7cf3dc34fdb093c2df51d4c3b6567538", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 304644, "upload_time": "2019-03-12T05:13:29", "url": "https://files.pythonhosted.org/packages/0c/d9/48ad7f85c5cdb743054082a7d3baeac52a183aef0a1a2810990d2a668a8a/unicodeutil-12.0.dev1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3b6564bd21de9057a7c598947bb5e3da", "sha256": "b89406c979125c0c22589e7be31634ecdd7b07c969901a73d26c7b7b0cff454d" }, "downloads": -1, "filename": "unicodeutil-12.0.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "3b6564bd21de9057a7c598947bb5e3da", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 313216, "upload_time": "2019-03-12T05:13:28", "url": "https://files.pythonhosted.org/packages/3f/0f/a27dc0851fe5076fa0ac9738b27dbc3f1bf68e2768745ee1d8aea6ae9307/unicodeutil-12.0.dev1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7cf3dc34fdb093c2df51d4c3b6567538", "sha256": "37b1d998b8857f99c98938289b1284a3ab10998c25287cfb466ca2cdad3cb2c9" }, "downloads": -1, "filename": "unicodeutil-12.0.dev1.tar.gz", "has_sig": false, "md5_digest": "7cf3dc34fdb093c2df51d4c3b6567538", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 304644, "upload_time": "2019-03-12T05:13:29", "url": "https://files.pythonhosted.org/packages/0c/d9/48ad7f85c5cdb743054082a7d3baeac52a183aef0a1a2810990d2a668a8a/unicodeutil-12.0.dev1.tar.gz" } ] }