{ "info": { "author": "Alberto Pettarin", "author_email": "alberto@albertopettarin.it", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Documentation", "Topic :: Education", "Topic :: Education :: Computer Aided Instruction (CAI)", "Topic :: Multimedia :: Sound/Audio :: Analysis", "Topic :: Multimedia :: Sound/Audio :: Sound Synthesis", "Topic :: Multimedia :: Sound/Audio :: Speech", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Human Machine Interfaces", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: Software Development :: Internationalization", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Localization", "Topic :: Text Processing", "Topic :: Text Processing :: Linguistic", "Topic :: Text Processing :: Markup", "Topic :: Utilities" ], "description": "ipapy\n=====\n\n**ipapy** is a Python module to work with International Phonetic\nAlphabet (IPA) strings.\n\n- Version: 0.0.9\n- Date: 2019-05-05\n- Developer: `Alberto Pettarin `__\n- License: the MIT License (MIT)\n- Contact: `click here `__\n- Links: `GitHub `__ -\n `PyPI `__\n\nInstallation\n------------\n\n.. code:: bash\n\n $ pip install ipapy\n\nor\n\n.. code:: bash\n\n $ git clone https://github.com/pettarin/ipapy.git\n $ cd ipapy\n\nUsage\n-----\n\nAs A Python Module\n~~~~~~~~~~~~~~~~~~\n\n.. code:: python\n\n ###########\n # IMPORTS #\n ###########\n from ipapy import UNICODE_TO_IPA\n from ipapy import is_valid_ipa\n from ipapy.ipachar import IPAConsonant\n from ipapy.ipachar import IPAVowel\n from ipapy.ipastring import IPAString\n\n\n ###########\n # IPAChar #\n ###########\n\n # Def.: an IPAChar is an IPA letter or diacritic/suprasegmental/tone mark\n\n # create IPAChar from its Unicode representation\n c1 = UNICODE_TO_IPA[u\"a\"] # vowel open front unrounded\n c2 = UNICODE_TO_IPA[u\"e\"] # vowel close-mid front unrounded\n c3 = UNICODE_TO_IPA[u\"\\u03B2\"] # consonant voiced bilabial non-sibilant-fricative\n tS1 = UNICODE_TO_IPA[u\"t\u0361\u0283\"] # consonant voiceless palato-alveolar sibilant-affricate\n tS2 = UNICODE_TO_IPA[u\"t\u035c\u0283\"] # consonant voiceless palato-alveolar sibilant-affricate\n tS3 = UNICODE_TO_IPA[u\"t\u0283\"] # consonant voiceless palato-alveolar sibilant-affricate\n tS4 = UNICODE_TO_IPA[u\"\u02a7\"] # consonant voiceless palato-alveolar sibilant-affricate\n tS5 = UNICODE_TO_IPA[u\"\\u0074\\u0361\\u0283\"] # consonant voiceless palato-alveolar sibilant-affricate\n tS6 = UNICODE_TO_IPA[u\"\\u0074\\u035C\\u0283\"] # consonant voiceless palato-alveolar sibilant-affricate\n tS7 = UNICODE_TO_IPA[u\"\\u0074\\u0283\"] # consonant voiceless palato-alveolar sibilant-affricate\n tS8 = UNICODE_TO_IPA[u\"\\u02A7\"] # consonant voiceless palato-alveolar sibilant-affricate\n c1 == c2 # False\n c1 == c3 # False\n c1 == tS1 # False\n tS1 == tS2 # True (they both point to the same IPAChar object)\n tS1 == tS3 # True (idem)\n tS1 == tS4 # True (idem)\n tS1 == tS5 # True (idem)\n tS1 == tS6 # True (idem)\n tS1 == tS7 # True (idem)\n tS1 == tS8 # True (idem)\n\n # create custom IPAChars\n my_a1 = IPAVowel(name=\"my_a_1\", descriptors=u\"open front unrounded\", unicode_repr=u\"a\")\n my_a2 = IPAVowel(name=\"my_a_2\", descriptors=[u\"open\", \"front\", \"unrounded\"], unicode_repr=u\"a\")\n my_a3 = IPAVowel(name=\"my_a_3\", height=u\"open\", backness=u\"front\", roundness=u\"unrounded\", unicode_repr=u\"a\")\n my_a4 = IPAVowel(name=\"my_a_4\", descriptors=[u\"low\", u\"fnt\", \"unr\"], unicode_repr=u\"a\")\n my_ee = IPAVowel(name=\"my_e_1\", descriptors=u\"close-mid front unrounded\", unicode_repr=u\"e\")\n my_b1 = IPAConsonant(name=\"bilabial fricative\", descriptors=u\"voiced bilabial non-sibilant-fricative\", unicode_repr=u\"\\u03B2\")\n my_b2 = IPAConsonant(name=\"bf\", voicing=u\"voiced\", place=u\"bilabial\", manner=u\"non-sibilant-fricative\", unicode_repr=u\"\\u03B2\")\n my_tS = IPAConsonant(name=\"tS\", voicing=u\"voiceless\", place=u\"palato-alveolar\", manner=u\"sibilant-affricate\", unicode_repr=u\"t\u0361\u0283\")\n my_a1 == my_a2 # False (two different objects)\n my_a1 == c1 # False (two different objects)\n my_a1 == UNICODE_TO_IPA[\"a\"] # False (two different objects)\n\n # associate non-standard Unicode representation\n my_aa = IPAVowel(name=\"a special\", descriptors=[u\"low\", u\"fnt\", u\"unr\"], unicode_repr=u\"a{*}\")\n print(my_aa) # \"a{*}\"\n\n # equality vs. equivalence\n my_tS == tS1 # False (my_tS is a different object than tS1)\n my_tS.is_equivalent(tS1) # True (my_tS is equivalent to tS1...)\n tS1.is_equivalent(my_tS) # True (... and vice versa)\n\n # compare IPAChar objects\n my_a1.is_equivalent(my_a2) # True\n my_a1.is_equivalent(my_a3) # True\n my_a1.is_equivalent(my_a4) # True\n my_a1.is_equivalent(my_ee) # False\n my_a1.is_equivalent(my_b1) # False\n my_b1.is_equivalent(my_b2) # True\n my_b1.is_equivalent(my_tS) # False\n\n # compare IPAChar and a Unicode string\n my_b1.is_equivalent(u\"\\u03B2\") # True\n my_b1.is_equivalent(u\"\u03b2\") # True\n my_b1.is_equivalent(u\"b\") # False\n my_tS.is_equivalent(u\"tS\") # False\n my_tS.is_equivalent(u\"t\u0283\") # False (missing the combining diacritic)\n my_tS.is_equivalent(u\"t\u0361\u0283\") # True (has combining diacritic)\n\n # compare IPAChar and a string listing descriptors\n my_a1.is_equivalent(u\"open front unrounded\") # False (missing 'vowel')\n my_a1.is_equivalent(u\"open front unrounded vowel\") # True\n my_a1.is_equivalent(u\"low fnt unr vwl\") # True (known abbreviations are good as well)\n my_ee.is_equivalent(u\"open front unrounded vowel\") # False\n my_b1.is_equivalent(u\"voiced bilabial non-sibilant-fricative\") # False (missing 'consonant')\n my_b1.is_equivalent(u\"voiced bilabial non-sibilant-fricative consonant\") # True\n my_b1.is_equivalent(u\"consonant non-sibilant-fricative bilabial voiced\") # True (the order does not matter)\n my_b1.is_equivalent(u\"consonant non-sibilant-fricative bilabial voiceless\") # False\n\n # compare IPAChar and list of descriptors\n my_a1.is_equivalent([u\"open\", u\"front\", u\"unrounded\"]) # False\n my_a1.is_equivalent([u\"vowel\", u\"open\", u\"front\", u\"unrounded\"]) # True\n my_a1.is_equivalent([u\"open\", u\"unrounded\", u\"vowel\", u\"front\"]) # True\n my_a1.is_equivalent([u\"low\", u\"fnt\", u\"unr\", u\"vwl\"]) # True\n\n\n #############\n # IPAString #\n #############\n\n # Def.: an IPAString is a list of IPAChar objects\n\n # check if Unicode string contains only IPA valid characters\n s_uni = u\"\u0259\u02c8ki\u02d0n \u00e6\u02cck\u00e6n\u02c8\u03b8\u0251.l\u0259.d\u0361\u0292i\" # Unicode string of the IPA pronunciation for \"achene acanthology\"\n is_valid_ipa(s_uni) # True\n is_valid_ipa(u\"LoL\") # False (uppercase letter L is not IPA valid)\n\n # create IPAString from list of IPAChar objects\n new_s_ipa = IPAString(ipa_chars=[c3, c2, tS1, c1])\n\n # create IPAString from Unicode string\n s_ipa = IPAString(unicode_string=s_uni)\n\n # IPAString is similar to regular Python string object\n print(s_ipa) # \"\u0259\u02c8ki\u02d0n \u00e6\u02cck\u00e6n\u02c8\u03b8\u0251.l\u0259.d\u0361\u0292i\"\n len(s_ipa) # 21\n s_ipa[0] # (first IPA char)\n s_ipa[5:8] # (6th, 7th, 8th IPA chars)\n s_ipa[19:] # (IPA chars from the 20th)\n s_ipa[-1] # (last IPA char)\n len(new_s_ipa) # 4\n new_s_ipa.append(UNICODE_TO_IPA[u\"a\"]) # (append IPA char \"a\")\n len(new_s_ipa) # 5\n new_s_ipa.append(UNICODE_TO_IPA[u\"t\u0361\u0283\"]) # (append IPA char \"t\u0361\u0283\")\n len(new_s_ipa) # 6\n new_s_ipa.extend(s_ipa) # (append s_ipa to new_s_ipa)\n len(new_s_ipa) # 27\n double = s_ipa + new_s_ipa # (concatenate s_ipa and new_s_ipa)\n len(double) # 48\n\n # new IPAString objects containing only...\n print(s_ipa.consonants) # \"knkn\u03b8ld\u0361\u0292\" (consonants)\n print(s_ipa.vowels) # \"\u0259i\u00e6\u00e6\u0251\u0259i\" (vowels)\n print(s_ipa.letters) # \"\u0259kin\u00e6k\u00e6n\u03b8\u0251l\u0259d\u0361\u0292i\" (vowels and consonants)\n print(s_ipa.cns_vwl) # \"\u0259kin\u00e6k\u00e6n\u03b8\u0251l\u0259d\u0361\u0292i\" (vowels and consonants)\n print(s_ipa.cns_vwl_pstr) # \"\u0259\u02c8kin\u00e6k\u00e6n\u02c8\u03b8\u0251l\u0259d\u0361\u0292i\" ( + primary stress marks)\n print(s_ipa.cns_vwl_pstr_long) # \"\u0259\u02c8ki\u02d0n\u00e6k\u00e6n\u02c8\u03b8\u0251l\u0259d\u0361\u0292i\" ( + long marks)\n print(s_ipa.cns_vwl_str) # \"\u0259\u02c8kin\u00e6\u02cck\u00e6n\u02c8\u03b8\u0251l\u0259d\u0361\u0292i\" ( + stress marks)\n print(s_ipa.cns_vwl_str_len) # \"\u0259\u02c8ki\u02d0n\u00e6\u02cck\u00e6n\u02c8\u03b8\u0251l\u0259d\u0361\u0292i\" ( + length marks)\n print(s_ipa.cns_vwl_str_len_wb) # \"\u0259\u02c8ki\u02d0n \u00e6\u02cck\u00e6n\u02c8\u03b8\u0251l\u0259d\u0361\u0292i\" ( + word breaks)\n print(s_ipa.cns_vwl_str_len_wb_sb) # \"\u0259\u02c8ki\u02d0n \u00e6\u02cck\u00e6n\u02c8\u03b8\u0251.l\u0259.d\u0361\u0292i\" ( + syllable breaks)\n cns = s_ipa.consonants # (store new IPA string)\n cns == s_ipa.consonants # False (two different objects)\n cns.is_equivalent(s_ipa.consonants) # True\n cns.is_equivalent(s_ipa) # False\n\n # print representation and name of all IPAChar objects in IPAString\n for c in s_ipa:\n print(u\"%s\\t%s\" % (c, c.name))\n # \u0259 vowel mid central unrounded\n # \u02c8 suprasegmental primary-stress\n # k consonant voiceless velar plosive\n # i vowel close front unrounded\n # \u02d0 suprasegmental long\n # n consonant voiced alveolar nasal\n # suprasegmental word-break\n # \u00e6 vowel near-open front unrounded\n # \u02cc suprasegmental secondary-stress\n # k consonant voiceless velar plosive\n # \u00e6 vowel near-open front unrounded\n # n consonant voiced alveolar nasal\n # \u02c8 suprasegmental primary-stress\n # \u03b8 consonant voiceless dental non-sibilant-fricative\n # \u0251 vowel open back unrounded\n # . suprasegmental syllable-break\n # l consonant voiced alveolar lateral-approximant\n # \u0259 vowel mid central unrounded\n # . suprasegmental syllable-break\n # d\u0361\u0292 consonant voiced palato-alveolar sibilant-affricate\n # i vowel close front unrounded\n\n # compare IPAString objects\n s_ipa_d = IPAString(unicode_string=u\"diff\")\n s_ipa_1 = IPAString(unicode_string=u\"at\u0361\u0283e\")\n s_ipa_2 = IPAString(unicode_string=u\"a\u02a7e\")\n s_ipa_3 = IPAString(unicode_string=u\"at\u0361\u0283e\", single_char_parsing=True)\n s_ipa_d == s_ipa_1 # False\n s_ipa_1 == s_ipa_2 # False (different objects)\n s_ipa_1 == s_ipa_3 # False (different objects)\n s_ipa_2 == s_ipa_3 # False (different objects)\n s_ipa_d.is_equivalent(s_ipa_1) # False\n s_ipa_1.is_equivalent(s_ipa_2) # True\n s_ipa_2.is_equivalent(s_ipa_1) # True\n s_ipa_1.is_equivalent(s_ipa_3) # True\n s_ipa_2.is_equivalent(s_ipa_3) # True\n\n # compare IPAString and list of IPAChar objects\n s_ipa_1.is_equivalent([my_a1, my_tS, my_ee]) # True\n\n # compare IPAString and Unicode string\n s_ipa_d.is_equivalent(u\"diff\") # True\n s_ipa_1.is_equivalent(u\"atse\") # False\n s_ipa_1.is_equivalent(u\"atSe\") # False\n s_ipa_1.is_equivalent(u\"at\u0361\u0283e\") # True\n s_ipa_1.is_equivalent(u\"at\u035c\u0283e\") # True\n s_ipa_1.is_equivalent(u\"a\u02a7e\") # True\n s_ipa_1.is_equivalent(u\"at\u0361\u0283eLOL\", ignore=True) # True (ignore chars non IPA valid)\n s_ipa_1.is_equivalent(u\"at\u0361\u0283eLoL\", ignore=True) # False (ignore chars non IPA valid, note extra \"o\")\n\n\n ########################\n # CONVERSION FUNCTIONS #\n ########################\n from ipapy.kirshenbaummapper import KirshenbaumMapper\n kmapper = KirshenbaumMapper() # mapper to Kirshenbaum ASCII IPA\n s_k_ipa = kmapper.map_ipa_string(s_ipa) # u\"@'ki:n#&,k&n'TA#l@#dZi\"\n s_k_uni = kmapper.map_unicode_string(s_uni) # u\"@'ki:n#&,k&n'TA#l@#dZi\"\n s_k_ipa == s_k_uni # True\n s_k_lis = kmapper.map_unicode_string(s_uni, return_as_list=True) # [u'@', u\"'\", u'k', u'i', u':', u'n', u'#', u'&', u',', u'k', u'&', u'n', u\"'\", u'T', u'A', u'#', u'l', u'@', u'#', u'dZ', u'i']\n\n from ipapy.arpabetmapper import ARPABETMapper\n amapper = ARPABETMapper() # mapper to ARPABET ASCII IPA (stress marks not supported yet)\n s_a = amapper.map_unicode_string(u\"p\u0279u\u02d0f\") # error: long suprasegmental not mapped\n s_a = amapper.map_unicode_string(u\"p\u0279u\u02d0f\", ignore=True) # u\"PRUWF\"\n s_a = amapper.map_unicode_string(u\"p\u0279u\u02d0f\", ignore=True, return_as_list=True) # [u'P', u'R', u'UW', u'F']\n\nAs A Command Line Tool\n~~~~~~~~~~~~~~~~~~~~~~\n\n**ipapy** comes with a command line tool to perform operations on a\ngiven Unicode UTF-8 encoded string, representing an IPA string.\nTherefore, it is recommended to run it on a shell supporting UTF-8.\n\nCurrently, the supported operations are:\n\n- ``canonize``: canonize the Unicode representation of the IPA string\n- ``chars``: list all IPA characters appearing in the IPA string\n- ``check``: check if the given Unicode string is IPA valid\n- ``clean``: remove characters that are not IPA valid\n- ``u2a``: print the corresponding ARPABET (ASCII IPA) string\n- ``u2k``: print the corresponding Kirshenbaum (ASCII IPA) string\n\nRun with the ``--help`` parameter to list all the available options:\n\n.. code:: bash\n\n $ python -m ipapy --help\n\n usage: __main__.py [-h] [-i] [-p] [--separator [SEPARATOR]] [-s] [-u]\n command string\n\n ipapy perform a command on the given IPA/Unicode string\n\n positional arguments:\n command [canonize|chars|check|clean|u2a|u2k]\n string String to canonize, check, clean, or convert\n\n optional arguments:\n -h, --help show this help message and exit\n -i, --ignore Ignore Unicode characters that are not IPA valid\n -p, --print-invalid Print Unicode characters that are not IPA valid\n --separator [SEPARATOR]\n Print IPA chars separated by this character (default:\n '')\n -s, --single-char-parsing\n Perform single character parsing instead of maximal\n parsing\n -u, --unicode Print each Unicode character that is not IPA valid\n with its Unicode codepoint and name\n\nExamples:\n\n.. code:: bash\n\n $ python -m ipapy canonize \"e\u02a7iu\"\n et\u0361\u0283iu\n\n $ python -m ipapy canonize \"e\u02a7iu\" --separator \" \"\n e t\u0361\u0283 i u\n\n $ python -m ipapy chars \"e\u02a7iu\"\n 'e' vowel close-mid front unrounded (U+0065)\n 't\u0361\u0283' consonant voiceless palato-alveolar sibilant-affricate (U+0074 U+0361 U+0283)\n 'i' vowel close front unrounded (U+0069)\n 'u' vowel close back rounded (U+0075)\n\n $ python -m ipapy chars \"et\u0361\u0283iu\"\n 'e' vowel close-mid front unrounded (U+0065)\n 't\u0361\u0283' consonant voiceless palato-alveolar sibilant-affricate (U+0074 U+0361 U+0283)\n 'i' vowel close front unrounded (U+0069)\n 'u' vowel close back rounded (U+0075)\n\n $ python -m ipapy chars \"et\u0361\u0283iu\" -s\n 'e' vowel close-mid front unrounded (U+0065)\n 't' consonant voiceless alveolar plosive (U+0074)\n '\u0361' diacritic tie-bar-above (U+0361)\n '\u0283' consonant voiceless palato-alveolar sibilant-fricative (U+0283)\n 'i' vowel close front unrounded (U+0069)\n 'u' vowel close back rounded (U+0075)\n\n $ python -m ipapy check \"e\u02a7iu\"\n True\n\n $ python -m ipapy check \"LoL\"\n False\n\n $ python -m ipapy check \"LoL\" -p\n False\n LL\n\n $ python -m ipapy check \"LoLOL\" -p -u\n False\n LLOL\n 'L' 0x4c LATIN CAPITAL LETTER L\n 'O' 0x4f LATIN CAPITAL LETTER O\n\n $ python -m ipapy clean \"/e\u02a7iu/\"\n e\u02a7iu\n\n $ python -m ipapy u2k \"e\u02a7iu\"\n etSiu\n\n $ python -m ipapy u2k \"eTa\"\n The given string contains characters not IPA valid. Use the 'ignore' option to ignore them.\n\n $ python -m ipapy u2k \"eTa\" -i\n ea\n\n $ python -m ipapy u2a \"e\u02a7iu\" --separator \" \"\n EH CH IH UW\n\nUnit Testing\n------------\n\n.. code:: bash\n\n $ python run_all_unit_tests.py\n\nLicense\n-------\n\n**ipapy** is released under the MIT License.\n\nAcknowledgments\n---------------\n\n- Bram Vanroy provided a fix to ``setup.py`` for Windows users\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pettarin/ipapy", "keywords": "ipapy,International Phonetic Alphabet,IPA,ASCII IPA,ASCIIIPA,ASCII-IPA,Kirshenbaum,Kirshenbaum IPA,Unicode", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "ipapy", "package_url": "https://pypi.org/project/ipapy/", "platform": "", "project_url": "https://pypi.org/project/ipapy/", "project_urls": { "Homepage": "https://github.com/pettarin/ipapy" }, "release_url": "https://pypi.org/project/ipapy/0.0.9.0/", "requires_dist": null, "requires_python": "", "summary": "ipapy is a Python module to work with IPA strings", "version": "0.0.9.0" }, "last_serial": 5229870, "releases": { "0.0.1.0": [ { "comment_text": "", "digests": { "md5": "3aaae9f4d55d1140496add8bf63e1d42", "sha256": "fdb7f47be21f99a31767c7c02b5666442b492e2c145c29d642a5f822d864f6ca" }, "downloads": -1, "filename": "ipapy-0.0.1.0.tar.gz", "has_sig": false, "md5_digest": "3aaae9f4d55d1140496add8bf63e1d42", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32436, "upload_time": "2016-05-19T15:33:04", "url": "https://files.pythonhosted.org/packages/fc/45/2851945ee8f9c86b16c5be1bc12375d6f3c8a4607baec00e75bf096c5615/ipapy-0.0.1.0.tar.gz" } ], "0.0.1.1": [ { "comment_text": "", "digests": { "md5": "4d13ad0b2fc933817e0c76d19728e9a4", "sha256": "e0529c637802721d15c6c442dbcb9e2200668b8abcd86b6679355d10e2c3a613" }, "downloads": -1, "filename": "ipapy-0.0.1.1.tar.gz", "has_sig": false, "md5_digest": "4d13ad0b2fc933817e0c76d19728e9a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32438, "upload_time": "2016-05-19T15:35:29", "url": "https://files.pythonhosted.org/packages/53/55/a835b18a1a47eb488af94e9f50d4bbb3f7483bf2f2bcb2d308beb0487782/ipapy-0.0.1.1.tar.gz" } ], "0.0.2.0": [ { "comment_text": "", "digests": { "md5": "b9eee120780db3bc2d684f3e46e0705a", "sha256": "be2c920be452ede6b7a246e6278cfe847a28f5156787fcd76941383baa3a25ee" }, "downloads": -1, "filename": "ipapy-0.0.2.0.tar.gz", "has_sig": false, "md5_digest": "b9eee120780db3bc2d684f3e46e0705a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32586, "upload_time": "2016-05-21T12:08:35", "url": "https://files.pythonhosted.org/packages/84/98/6071e4729cfa8576dc789a5f02fc16fafb0affdaa4c320cecc77086d1d54/ipapy-0.0.2.0.tar.gz" } ], "0.0.3.0": [ { "comment_text": "", "digests": { "md5": "d9f6b1f362461faad50bf5587c19ea88", "sha256": "7ff9cc2ce65e068748e32d62d24688d84f51dc68c8ba7258fc94dddea75500c8" }, "downloads": -1, "filename": "ipapy-0.0.3.0.tar.gz", "has_sig": false, "md5_digest": "d9f6b1f362461faad50bf5587c19ea88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34037, "upload_time": "2016-05-23T08:56:51", "url": "https://files.pythonhosted.org/packages/36/66/78279c0cd6adf1e9ea07102639e958aae32f6371071e9f116a223ddaccd9/ipapy-0.0.3.0.tar.gz" } ], "0.0.4.0": [ { "comment_text": "", "digests": { "md5": "7b496f20ae67fba4cfa463a5a069ec90", "sha256": "cc554e94ec5518ac409bcea641ac7e91171bead8c67d2ffa7e46b8e39e4fee19" }, "downloads": -1, "filename": "ipapy-0.0.4.0.tar.gz", "has_sig": false, "md5_digest": "7b496f20ae67fba4cfa463a5a069ec90", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34108, "upload_time": "2016-05-24T15:21:02", "url": "https://files.pythonhosted.org/packages/f4/c4/52fc7e6e0749c44a7176f1a69dd57ab93f72c08478bdd395b5d3d3400d49/ipapy-0.0.4.0.tar.gz" } ], "0.0.5.0": [ { "comment_text": "", "digests": { "md5": "06d03259df205bd3ad8547fd9cfda40b", "sha256": "2201400180d425ccd6ec66ca5cc81d853e0fafcf76fd271b6faff31342fd1020" }, "downloads": -1, "filename": "ipapy-0.0.5.0.tar.gz", "has_sig": false, "md5_digest": "06d03259df205bd3ad8547fd9cfda40b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34382, "upload_time": "2016-05-26T11:56:42", "url": "https://files.pythonhosted.org/packages/8d/14/e239613573951c2ddab6366046f93570e0129a26ea161ff491302a387200/ipapy-0.0.5.0.tar.gz" } ], "0.0.6.0": [ { "comment_text": "", "digests": { "md5": "243845174543610a40b6b9cdfa16e5a0", "sha256": "64b0de60f6d1347aa7d5581697b79edf93638838756a6d98b1586d5df8459dc9" }, "downloads": -1, "filename": "ipapy-0.0.6.0.tar.gz", "has_sig": false, "md5_digest": "243845174543610a40b6b9cdfa16e5a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40034, "upload_time": "2016-05-28T09:46:45", "url": "https://files.pythonhosted.org/packages/e3/06/a9bacba9b9ca7041a2531889c412bba9bd5cbef8e8af481dd608a400ee81/ipapy-0.0.6.0.tar.gz" } ], "0.0.7.0": [ { "comment_text": "", "digests": { "md5": "e9e78b8f8cc4fb0d657136048d92a3e4", "sha256": "7c32b1597481b433b23ff5c1e71d7164bfbcb6d2a01d6d4f4f9b2666706ec581" }, "downloads": -1, "filename": "ipapy-0.0.7.0.tar.gz", "has_sig": false, "md5_digest": "e9e78b8f8cc4fb0d657136048d92a3e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40224, "upload_time": "2016-06-04T12:11:44", "url": "https://files.pythonhosted.org/packages/9d/24/a6816c505199f8f62e7df16dee206040d7d6e4b6a0b12a4a31c727c8f94e/ipapy-0.0.7.0.tar.gz" } ], "0.0.8.0": [ { "comment_text": "", "digests": { "md5": "b56f5ba2abf945cf01d7252e6b462e9e", "sha256": "b843a2404194392ca5b1cca72103acf8c69b6f4609e99817a2e934ed7ba70cf8" }, "downloads": -1, "filename": "ipapy-0.0.8.0.tar.gz", "has_sig": false, "md5_digest": "b56f5ba2abf945cf01d7252e6b462e9e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40478, "upload_time": "2016-06-07T09:29:27", "url": "https://files.pythonhosted.org/packages/ae/d2/1af2bf40023d0cbc5d5cb9477938b923b8dc2eae479e5f0d1b4350db72be/ipapy-0.0.8.0.tar.gz" } ], "0.0.9.0": [ { "comment_text": "", "digests": { "md5": "6d88c2fcc87174fc67a6b829f0bf2565", "sha256": "b96d0435282103c7d893c8226a458b70a810d130ce65fabe127c8a7490d1f82b" }, "downloads": -1, "filename": "ipapy-0.0.9.0-py2-none-any.whl", "has_sig": false, "md5_digest": "6d88c2fcc87174fc67a6b829f0bf2565", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 38724, "upload_time": "2019-05-05T22:27:35", "url": "https://files.pythonhosted.org/packages/5d/b6/c170e49cd5d3aaa8cbbe3c836d2fe09c72f08cf3b8ea1e4b4f81fed7881b/ipapy-0.0.9.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4c87b745b63f5a69571815a979af9cc6", "sha256": "e1bc73f6a4861b9a0ff562b70b87dab8acf7a63badd98caabd6e248b3839f1c9" }, "downloads": -1, "filename": "ipapy-0.0.9.0.tar.gz", "has_sig": false, "md5_digest": "4c87b745b63f5a69571815a979af9cc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37415, "upload_time": "2019-05-05T22:27:37", "url": "https://files.pythonhosted.org/packages/41/0d/7e8652df6af20a61bb3315f5c9d99fb9ea8f3779ff80fca9d71001230f90/ipapy-0.0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6d88c2fcc87174fc67a6b829f0bf2565", "sha256": "b96d0435282103c7d893c8226a458b70a810d130ce65fabe127c8a7490d1f82b" }, "downloads": -1, "filename": "ipapy-0.0.9.0-py2-none-any.whl", "has_sig": false, "md5_digest": "6d88c2fcc87174fc67a6b829f0bf2565", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 38724, "upload_time": "2019-05-05T22:27:35", "url": "https://files.pythonhosted.org/packages/5d/b6/c170e49cd5d3aaa8cbbe3c836d2fe09c72f08cf3b8ea1e4b4f81fed7881b/ipapy-0.0.9.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4c87b745b63f5a69571815a979af9cc6", "sha256": "e1bc73f6a4861b9a0ff562b70b87dab8acf7a63badd98caabd6e248b3839f1c9" }, "downloads": -1, "filename": "ipapy-0.0.9.0.tar.gz", "has_sig": false, "md5_digest": "4c87b745b63f5a69571815a979af9cc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37415, "upload_time": "2019-05-05T22:27:37", "url": "https://files.pythonhosted.org/packages/41/0d/7e8652df6af20a61bb3315f5c9d99fb9ea8f3779ff80fca9d71001230f90/ipapy-0.0.9.0.tar.gz" } ] }