{ "info": { "author": "Amanjeev Sethi", "author_email": "aj@amanjeev.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.4" ], "description": "ulit - You Lost In Translations\n===============================\n\nEver wondered what happens when you try to translate some text of a language, stepwise into various intermediate langauges and back into the original langauge? When you start with a language and text of your choice (generally in the smae language) and translate the text into a series of languages, feeding previous result to the next one, you end up with something that generally does not look like the original text.\n\nIf that makes little sense but here is an example.\n\nExample (using Yandex's API)\n----------------------------\n\nGiven the steps to be followed : ['fr', 'uk', 'it', 'ru', 'pl', 'be', 'de', 'es'] and language of interest is 'en'.\n\nStarting text in 'en': \"Language is a process of free creation; its laws and principles are fixed, but the manner in which the principles of generation are used is free and infinitely varied. Even the interpretation and use of words involves a process of free creation.\"\n\n'en' to 'fr': \"La langue est un processus de cr\u00e9ation libre; ses lois et ses principes sont fixes, mais la mani\u00e8re dont les principes de g\u00e9n\u00e9ration sont utilis\u00e9s est gratuit et infiniment vari\u00e9s. M\u00eame l'interpr\u00e9tation et de l'utilisation de mots implique un processus de cr\u00e9ation libre.\"\n\n'fr' to 'uk': \"\u041c\u043e\u0432\u0430-\u0446\u0435 \u043f\u0440\u043e\u0446\u0435\u0441 \u0432\u0456\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0432\u043e\u0440\u0447\u043e\u0441\u0442\u0456; \u0439\u043e\u0433\u043e \u0437\u0430\u043a\u043e\u043d\u0438 \u0456 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438 \u0454 \u0444\u0456\u043a\u0441\u043e\u0432\u0430\u043d\u0438\u043c\u0438, \u0430\u043b\u0435 \u0456 \u044f\u043a \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438 \u043f\u043e\u0431\u0443\u0434\u043e\u0432\u0438, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c\u0441\u044f \u0431\u0435\u0437\u043a\u043e\u0448\u0442\u043e\u0432\u043d\u043e, \u0456 \u043d\u0435\u0441\u043a\u0456\u043d\u0447\u0435\u043d\u043d\u043e \u0440\u0456\u0437\u043d\u043e\u043c\u0430\u043d\u0456\u0442\u043d\u0456. \u041d\u0430\u0432\u0456\u0442\u044c \u0456\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0456\u044f \u0456 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f \u0441\u043b\u043e\u0432\u0430 \u043f\u0435\u0440\u0435\u0434\u0431\u0430\u0447\u0430\u0454 \u043f\u0440\u043e\u0446\u0435\u0441 \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0431\u0435\u0437\u043a\u043e\u0448\u0442\u043e\u0432\u043d\u043e.\"\n\n. . . .\n\nFinally, 'es' to 'en': \"It is the Process, of free Creativity; its Laws and Principles do not change, but, as the Rules Of Construction, which is free, and is infinitely diverse. The Interpretation and Use of the Word means that the Process of Creating free of charge.\"\n\nSee usage section for more details.\n\n\nUsage\n-----\n\nUse pip to install\n\n.. code-block:: bash\n\n $ pip install ulit\n ...\n\nYou can use ulit with Google translate API or Yandex translate API\n\n.. code-block:: python\n\n translate = ulit.Ulit(\"yandex\", \"YOUR YANDEX TRANSLATE API KEY HERE\", loglevel=\"DEBUG\")\n ...\n\n.. code-block:: python\n\n translate = ulit.Ulit(\"yandex\", \"YOUR YANDEX TRANSLATE API KEY HERE\", loglevel=\"DEBUG\")\n ...\n\nYandex\n\n.. code-block:: python\n\n import ulit\n\n cascade_steps = ['fr', 'uk', 'it', 'ru', 'pl', 'be', 'de', 'es']\n initial_language = \"en\"\n text = \"Language is a process of free creation; its laws and principles are fixed, but the manner in which the principles of generation are used is free and infinitely varied. Even the interpretation and use of words involves a process of free creation.\"\n translate = ulit.Ulit(\"yandex\", \"YOUR YANDEX TRANSLATE API KEY HERE\", loglevel=\"DEBUG\")\n\n all_translations_steps, final_translation = translate.service.translate_cascade(initial_language=initial_language,\n cascade_steps=cascade_steps,\n text=text)\n\n\n\n # Output: all_translations_steps\n\n {\n 'pl': 'Mowa jest procesem wolnego kreatywno\u015bci; jego prawa i zasady s\u0105 niezmienne, ale, jak i zasady budowy, s\u0105 za darmo, i niesko\u0144czenie zr\u00f3\u017cnicowana. R\u00f3wnie\u017c interpretacja i wykorzystanie s\u0142owa oznacza proces tworzenia za darmo.',\n 'it': \"Il discorso \u00e8 un processo di libera creativit\u00e0; le sue leggi e i principi sono fissi, ma come principi di costruzione, sono utilizzati gratuitamente, e infinitamente vario. Anche l'interpretazione e l'uso della parola implica il processo di creazione di gratis.\",\n 'ru': '\u0420\u0435\u0447\u044c-\u044d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u0430; \u0435\u0433\u043e \u0437\u0430\u043a\u043e\u043d\u044b \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b, \u043d\u043e, \u043a\u0430\u043a \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0435\u043d. \u0422\u0430\u043a\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u043e\u0432\u0430 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e.',\n 'de': 'Es ist der Prozess, der freien Kreativit\u00e4t; seine Gesetze und Prinzipien nicht \u00e4ndern, aber, wie die Regeln der Bau -, Sie sind kostenlos, und es ist unendlich vielf\u00e4ltig. Auch die Interpretation und die Verwendung des Wortes bedeutet, den Prozess der Erstellung kostenlos.',\n 'fr': \"La langue est un processus de cr\u00e9ation libre; ses lois et ses principes sont fixes, mais la mani\u00e8re dont les principes de g\u00e9n\u00e9ration sont utilis\u00e9s est gratuit et infiniment vari\u00e9s. M\u00eame l'interpr\u00e9tation et de l'utilisation de mots implique un processus de cr\u00e9ation libre.\",\n 'uk': '\u041c\u043e\u0432\u0430-\u0446\u0435 \u043f\u0440\u043e\u0446\u0435\u0441 \u0432\u0456\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0432\u043e\u0440\u0447\u043e\u0441\u0442\u0456; \u0439\u043e\u0433\u043e \u0437\u0430\u043a\u043e\u043d\u0438 \u0456 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438 \u0454 \u0444\u0456\u043a\u0441\u043e\u0432\u0430\u043d\u0438\u043c\u0438, \u0430\u043b\u0435 \u0456 \u044f\u043a \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438 \u043f\u043e\u0431\u0443\u0434\u043e\u0432\u0438, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c\u0441\u044f \u0431\u0435\u0437\u043a\u043e\u0448\u0442\u043e\u0432\u043d\u043e, \u0456 \u043d\u0435\u0441\u043a\u0456\u043d\u0447\u0435\u043d\u043d\u043e \u0440\u0456\u0437\u043d\u043e\u043c\u0430\u043d\u0456\u0442\u043d\u0456. \u041d\u0430\u0432\u0456\u0442\u044c \u0456\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0456\u044f \u0456 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f \u0441\u043b\u043e\u0432\u0430 \u043f\u0435\u0440\u0435\u0434\u0431\u0430\u0447\u0430\u0454 \u043f\u0440\u043e\u0446\u0435\u0441 \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0431\u0435\u0437\u043a\u043e\u0448\u0442\u043e\u0432\u043d\u043e.',\n 'es': 'Es el Proceso, de la libre Creatividad; sus Leyes y Principios no cambian, pero, como las Reglas De la Construcci\u00f3n, que es gratuita, y es infinitamente diversa. La Interpretaci\u00f3n y el Uso de la Palabra significa que el Proceso de Creaci\u00f3n de forma gratuita.',\n 'be': '\u0413\u0430\u0432\u043e\u0440\u043a\u0430-\u0433\u044d\u0442\u0430 \u043f\u0440\u0430\u0446\u044d\u0441 \u0441\u0432\u0430\u0431\u043e\u0434\u043d\u0430\u0433\u0430 \u0442\u0432\u043e\u0440\u0447\u0430\u0441\u0446\u0456; \u044f\u0433\u043e \u0437\u0430\u043a\u043e\u043d\u044b \u0456 \u043f\u0440\u044b\u043d\u0446\u044b\u043f\u044b \u043d\u044f\u0437\u043c\u0435\u043d\u043d\u044b\u044f, \u0430\u043b\u0435, \u044f\u043a \u0456 \u043f\u0440\u0430\u0432\u0456\u043b\u044b \u0431\u0443\u0434\u0430\u045e\u043d\u0456\u0446\u0442\u0432\u0430, \u044f\u043d\u044b \u0431\u044f\u0441\u043f\u043b\u0430\u0442\u043d\u0430, \u0456 \u0431\u044f\u0441\u043a\u043e\u043d\u0446\u0430 \u0440\u0430\u0437\u043d\u0430\u0441\u0442\u0430\u0439\u043d\u044b. \u0422\u0430\u043a\u0441\u0430\u043c\u0430 \u0456\u043d\u0442\u044d\u0440\u043f\u0440\u044d\u0442\u0430\u0446\u044b\u044f \u0456 \u0432\u044b\u043a\u0430\u0440\u044b\u0441\u0442\u0430\u043d\u043d\u0435 \u0441\u043b\u043e\u0432\u0430 \u0430\u0437\u043d\u0430\u0447\u0430\u0435 \u043f\u0440\u0430\u0446\u044d\u0441 \u0441\u0442\u0432\u0430\u0440\u044d\u043d\u043d\u044f \u0431\u044f\u0441\u043f\u043b\u0430\u0442\u043d\u0430.',\n 'en': 'It is the Process, of free Creativity; its Laws and Principles do not change, but, as the Rules Of Construction, which is free, and is infinitely diverse. The Interpretation and Use of the Word means that the Process of Creating free of charge.'\n }\n\n\n # Output: final_translation\n\n It is the Process, of free Creativity; its Laws and Principles do not change, but, as the Rules Of Construction, which is free, and is infinitely diverse. The Interpretation and Use of the Word means that the Process of Creating free of charge.\n\n ...\n\n\nGoogle\n\n.. code-block:: python\n\n import ulit\n\n cascade_steps = ['fr', 'uk', 'it', 'ru', 'pl', 'be', 'de', 'es']\n initial_language = \"en\"\n text = \"Language is a process of free creation; its laws and principles are fixed, but the manner in which the principles of generation are used is free and infinitely varied. Even the interpretation and use of words involves a process of free creation.\"\n translate = ulit.Ulit(\"google\", \"YOUR YANDEX TRANSLATE API KEY HERE\", loglevel=\"DEBUG\")\n\n all_translations_steps, final_translation = translate.service.translate_cascade(initial_language=initial_language,\n cascade_steps=cascade_steps,\n text=text)\n\n\n\n # Output: all_translations_steps\n\n {\n 'de': 'Sprache des Prozesses der freien Sch\u00f6pfung; ihre Gesetze und Grunds\u00e4tze festgelegt sind, aber das Prinzip der Produktionsweise frei. Auch die Interpretation und Verwendung von W\u00f6rtern findet ein Prozess der freien Sch\u00f6pfung.',\n 'en': 'Language of the process of free creation; its laws and principles are fixed, but the principle of free production. The interpretation and use of words involves a process of free creation.',\n 'fr': 'La langue est un processus de cr\u00e9ation libre; ses lois et ses principes sont fix\u00e9s, mais la mani\u00e8re dont les principes de la production sont utilis\u00e9es est libre et infiniment vari\u00e9. M\u00eame l'interpr\u00e9tation et de l'utilisation de mots implique un processus de cr\u00e9ation libre.',\n 'es': 'Idioma del proceso de creaci\u00f3n libre; sus leyes y principios son fijos, pero el principio de producci\u00f3n libre. La interpretaci\u00f3n y el uso de las palabras implica un proceso de creaci\u00f3n libre.',\n 'ru': '\u042f\u0437\u044b\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f; \u0435\u0433\u043e \u0437\u0430\u043a\u043e\u043d\u044b \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u044b, \u043d\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b. \u0414\u0430\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u043e\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f.',\n 'uk': '\u041c\u043e\u0432\u0430 \u043f\u0440\u043e\u0446\u0435\u0441 \u0432\u0456\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f; \u0439\u043e\u0433\u043e \u0437\u0430\u043a\u043e\u043d\u0438 \u0456 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438 \u0437\u0430\u043a\u0440\u0456\u043f\u043b\u0435\u043d\u0456, \u0430\u043b\u0435 \u0441\u043f\u043e\u0441\u0456\u0431 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438 \u0432\u0438\u0440\u043e\u0431\u043d\u0438\u0446\u0442\u0432\u0430 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c\u0441\u044f \u0432\u0456\u043b\u044c\u043d\u043e \u0456 \u043d\u0435\u0441\u043a\u0456\u043d\u0447\u0435\u043d\u043d\u043e \u0440\u0456\u0437\u043d\u043e\u043c\u0430\u043d\u0456\u0442\u043d\u0456. \u041d\u0430\u0432\u0456\u0442\u044c \u0456\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0456\u044f \u0456 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f \u0441\u043b\u0456\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u0454 \u0432 \u0441\u0435\u0431\u0435 \u043f\u0440\u043e\u0446\u0435\u0441 \u0432\u0456\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f.',\n 'it': 'Processo Lingua di libera creazione; le sue leggi e principi sono fissi, ma i principi del metodo di produzione utilizzati liberamente e infinitamente vario. Anche l'interpretazione e l'uso delle parole comporta un processo di creazione libera.',\n 'be': '\u041c\u043e\u0432\u0430 \u043f\u0440\u0430\u0446\u044d\u0441 \u0441\u0432\u0430\u0431\u043e\u0434\u043d\u0430\u0433\u0430 \u0441\u0442\u0432\u0430\u0440\u044d\u043d\u043d\u044f; \u044f\u0433\u043e \u0437\u0430\u043a\u043e\u043d\u044b \u0456 \u043f\u0440\u044b\u043d\u0446\u044b\u043f\u044b \u0437\u0430\u043c\u0430\u0446\u0430\u0432\u0430\u043d\u044b\u044f, \u0430\u043b\u0435 \u043f\u0440\u044b\u043d\u0446\u044b\u043f \u0441\u043f\u043e\u0441\u0430\u0431\u0443 \u0432\u044b\u0442\u0432\u043e\u0440\u0447\u0430\u0441\u0446\u0456 \u0441\u0432\u0430\u0431\u043e\u0434\u043d\u0430 \u0456 \u043f\u043b\u0430\u045e\u043d\u0430. \u041d\u0430\u0432\u0430\u0442 \u0456\u043d\u0442\u044d\u0440\u043f\u0440\u044d\u0442\u0430\u0446\u044b\u044f \u0456 \u0432\u044b\u043a\u0430\u0440\u044b\u0441\u0442\u0430\u043d\u043d\u0435 \u0441\u043b\u043e\u045e \u045e\u043a\u043b\u044e\u0447\u0430\u0435 \u045e \u0441\u044f\u0431\u0435 \u043f\u0440\u0430\u0446\u044d\u0441 \u0441\u0432\u0430\u0431\u043e\u0434\u043d\u0430\u0433\u0430 \u0441\u0442\u0432\u0430\u0440\u044d\u043d\u043d\u044f.',\n 'pl': 'J\u0119zyk procesie utworzenia wolnego; jej prawa i zasady s\u0105 sta\u0142e, ale zasady metody produkcji jest darmowy i p\u0142ynnie. Nawet interpretacja i stosowanie s\u0142\u00f3w obejmuje proces swobodnego tworzenia.'\n }\n\n\n \\# Output: final_translation\n\n Language of the process of free creation; its laws and principles are fixed, but the principle of free production. The interpretation and use of words involves a process of free creation.\n\n\n\n ...\n\n\nRunning tests\n-------------\n\nMost of it is usual but you will need to set environment variable YANDEX_API_KEY with your API key.\n\n.. code-block:: bash\n\n $ export YANDEX_API_KEY=\n\n $ export GOOGLE_API_KEY=\n\n $ python setup.py test\n ...", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/amanjeev/ulit", "keywords": "translate,cascade,repeated translations,lost in translation,translations,languages", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "ulit", "package_url": "https://pypi.org/project/ulit/", "platform": "All", "project_url": "https://pypi.org/project/ulit/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/amanjeev/ulit" }, "release_url": "https://pypi.org/project/ulit/0.2.2/", "requires_dist": null, "requires_python": null, "summary": "Start with some text in a langauge. Translate it stepwise using a number of intermediate langauges, and back to the one you started with. See how the original text changes.", "version": "0.2.2" }, "last_serial": 1661012, "releases": { "0.1.14": [ { "comment_text": "", "digests": { "md5": "eed33eeab9df8a26a28b3b81f97a0bf4", "sha256": "93e8a3cc4fea42322294ce96b88b5b411e510b92e03a38d99929c795f02763be" }, "downloads": -1, "filename": "ulit-0.1.14.tar.gz", "has_sig": false, "md5_digest": "eed33eeab9df8a26a28b3b81f97a0bf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7109, "upload_time": "2015-07-27T02:50:49", "url": "https://files.pythonhosted.org/packages/f8/5c/3ed205c4eab48def0151c2158f03c3fcf137ee38a2b54b3a89c52c6d6595/ulit-0.1.14.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "a3aab81d26976056eb66d166902ce034", "sha256": "54d81116f58dae7468a918447969c7a5fa9f4d715bf48034dbc95c8b1e738d0e" }, "downloads": -1, "filename": "ulit-0.2.0.tar.gz", "has_sig": false, "md5_digest": "a3aab81d26976056eb66d166902ce034", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8843, "upload_time": "2015-08-02T19:20:02", "url": "https://files.pythonhosted.org/packages/d1/85/177007c57fa9500b4e89009f40aafa88a223954c0a3f763df199a28c176e/ulit-0.2.0.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "8e816fe8d73831d9831dd3ddb34ed2cb", "sha256": "f710eab75ad7e8ace61d7413871a7a59cbee6fb050715ad4325f44097b2e006f" }, "downloads": -1, "filename": "ulit-0.2.2.tar.gz", "has_sig": false, "md5_digest": "8e816fe8d73831d9831dd3ddb34ed2cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11243, "upload_time": "2015-08-02T20:03:34", "url": "https://files.pythonhosted.org/packages/c5/b5/ec930e108041279173ea72a74d228fad6dc0fc30a751bbcc390e03fe6b1d/ulit-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8e816fe8d73831d9831dd3ddb34ed2cb", "sha256": "f710eab75ad7e8ace61d7413871a7a59cbee6fb050715ad4325f44097b2e006f" }, "downloads": -1, "filename": "ulit-0.2.2.tar.gz", "has_sig": false, "md5_digest": "8e816fe8d73831d9831dd3ddb34ed2cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11243, "upload_time": "2015-08-02T20:03:34", "url": "https://files.pythonhosted.org/packages/c5/b5/ec930e108041279173ea72a74d228fad6dc0fc30a751bbcc390e03fe6b1d/ulit-0.2.2.tar.gz" } ] }