{ "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 :: Desktop Environment", "Topic :: Documentation", "Topic :: Office/Business", "Topic :: Software Development :: Internationalization", "Topic :: Software Development :: Localization", "Topic :: Text Editors", "Topic :: Text Editors :: Text Processing", "Topic :: Text Processing", "Topic :: Text Processing :: General", "Topic :: Text Processing :: Indexing", "Topic :: Text Processing :: Linguistic", "Topic :: Text Processing :: Markup", "Topic :: Text Processing :: Markup :: HTML", "Topic :: Text Processing :: Markup :: XML", "Topic :: Utilities" ], "description": "Penelope\n========\n\n**Penelope** is a multi-tool for creating, editing and converting\ndictionaries, especially for eReader devices.\n\n- Version: 3.1.3\n- Date: 2016-09-23\n- Developer: `Alberto Pettarin `__\n- License: the MIT License (MIT)\n- Contact: `click here `__\n\nWith the current version you can:\n\n- convert a dictionary from/to the following formats:\n\n - Bookeen Cybook Odyssey (R/W)\n - CSV (R/W)\n - EPUB (W only)\n - MOBI (Kindle, W only)\n - Kobo (R index only, W unencrypted/unobfuscated only)\n - StarDict (R/W)\n - XML (R/W)\n\n- merge several dictionaries of the same type into a single dictionary\n- merge several definitions for the same headword\n- sort by headword and/or by definition\n- define your own input parser to merge/sort/edit definitions\n- define your own collation function (``bookeen`` output format only)\n- output an EPUB file containing the dictionary (e.g., to cope with the\n lack of a search function of your eReader)\n- output a MOBI (Kindle) dictionary\n\nImportant Update\n~~~~~~~~~~~~~~~~\n\n- 2016-04-17 Sadly, I can no longer afford to spend time working on\n Penelope, as my other FLOSS projects take 100% of my FLOSS time, and\n I still need to pay rent and bills, spend time with family and\n friends, etc., as anyone else. Therefore, I will not work on issues\n or pull requests, **please do not expect they will be dealt with at\n all**. I am actively **looking for other developers to take this\n project over**. (This notice should be removed when the changeover\n happens.) If you need to convert a dictionary and the current version\n of Penelope does not work for you, you might want to have a look at\n `**PyGlossary** `__. My most\n sincere apologies for the inconvenience.\n\nInstallation\n------------\n\nUsing pip\n~~~~~~~~~\n\n1. Open a console and type:\n\n .. code:: bash\n\n $ [sudo] pip install penelope\n\n2. That's it! Just run without arguments (or with ``-h`` or ``--help``)\n to get the manual:\n\n .. code:: bash\n\n $ penelope\n\nThis procedure will install ``lxml`` and ``marisa-trie``. You might need\nto install ``dictzip`` (StarDict output) and ``kindlegen`` (MOBI output)\nseparately, see below.\n\nFrom source code\n~~~~~~~~~~~~~~~~\n\n1. Get the source code:\n\n - clone this repo with ``git``:\n\n .. code:: bash\n\n $ git clone https://github.com/pettarin/penelope.git\n\n - or download the `latest\n release `__ and\n uncompress it somewhere,\n - or download the `current master\n ZIP `__\n and uncompress it somewhere.\n\n2. Open a console and enter the ``penelope`` (cloned) directory:\n\n .. code:: bash\n\n $ cd /path/to/penelope\n\n3. That's it! Just run without arguments (or with ``-h`` or ``--help``)\n to get the manual:\n\n .. code:: bash\n\n $ python -m penelope\n\nThis procedure will not install any dependencies: you will need to do\nthat manually, see below.\n\nDependencies\n~~~~~~~~~~~~\n\n- Python, version 2.7.x or 3.4.x (or above)\n\n- to write StarDict dictionaries: the ``dictzip`` executable, available\n in your ``$PATH`` or specified with ``--dictzip-path``:\n\n .. code:: bash\n\n $ [sudo] apt-get install dictzip\n\n- to read/write Kobo dictionaries: the Python module ``marisa-trie``:\n\n .. code:: bash\n\n $ [sudo] pip install marisa-trie\n\nor `MARISA `__ executables\navailable in your ``$PATH`` or specified with ``--marisa-bin-path``\n\n- to write MOBI Kindle dictionaries: the\n `kindlegen `__\n executable, available in your ``$PATH`` or specified with\n ``--kindlegen-path``\n\n- to read/write XML dictionaries: the Python module ``lxml``:\n\n .. code:: bash\n\n $ [sudo] pip install lxml\n\nUsage\n-----\n\n::\n\n usage: \n $ penelope -h\n $ penelope -i INPUT_FILE -j INPUT_FORMAT -f LANGUAGE_FROM -t LANGUAGE_TO -p OUTPUT_FORMAT -o OUTPUT_FILE [OPTIONS]\n $ penelope -i IN1,IN2[,IN3...] -j INPUT_FORMAT -f LANGUAGE_FROM -t LANGUAGE_TO -p OUTPUT_FORMAT -o OUTPUT_FILE [OPTIONS]\n\n description:\n Convert dictionary file(s) with file name prefix INPUT_FILE from format INPUT_FORMAT to format OUTPUT_FORMAT, saving it as OUTPUT_FILE.\n The dictionary is from LANGUAGE_FROM to LANGUAGE_TO, possibly the same.\n You can merge several dictionaries (with the same format), by providing a list of comma-separated prefixes, as shown by the third synopsis above.\n\n optional arguments:\n -h, --help show this help message and exit\n -d, --debug enable debug mode (default: False)\n -f LANGUAGE_FROM, --language-from LANGUAGE_FROM\n from language (ISO 639-1 code)\n -i INPUT_FILE, --input-file INPUT_FILE\n input file name prefix(es). Multiple prefixes must be\n comma-separated.\n -j INPUT_FORMAT, --input-format INPUT_FORMAT\n from format (values: bookeen|csv|kobo|stardict|xml)\n -k, --keep keep temporary files (default: False)\n -o OUTPUT_FILE, --output-file OUTPUT_FILE\n output file name\n -p OUTPUT_FORMAT, --output-format OUTPUT_FORMAT\n to format (values:\n bookeen|csv|epub|kobo|mobi|stardict|xml)\n -t LANGUAGE_TO, --language-to LANGUAGE_TO\n to language (ISO 639-1 code)\n -v, --version print version and exit\n --author AUTHOR author string\n --copyright COPYRIGHT\n copyright string\n --cover-path COVER_PATH\n path of the cover image file\n --description DESCRIPTION\n description string\n --email EMAIL email string\n --identifier IDENTIFIER\n identifier string\n --license LICENSE license string\n --title TITLE title string\n --website WEBSITE website string\n --year YEAR year string\n --apply-css APPLY_CSS\n apply the given CSS file (epub and mobi output only)\n --bookeen-collation-function BOOKEEN_COLLATION_FUNCTION\n use the specified collation function\n --bookeen-install-file\n create *.install file (default: False)\n --csv-fs CSV_FS CSV field separator (default: ',')\n --csv-ignore-first-line\n ignore the first line of the input CSV file(s)\n (default: False)\n --csv-ls CSV_LS CSV line separator (default: '\\n')\n --dictzip-path DICTZIP_PATH\n path to dictzip executable\n --epub-no-compress do not create the compressed container (epub output\n only, default: False)\n --escape-strings escape HTML strings (default: False)\n --flatten-synonyms flatten synonyms, creating a new entry with\n headword=synonym and using the definition of the\n original headword (default: False)\n --group-by-prefix-function GROUP_BY_PREFIX_FUNCTION\n compute the prefix of headwords using the given prefix\n function file\n --group-by-prefix-length GROUP_BY_PREFIX_LENGTH\n group headwords by prefix of given length (default: 2)\n --group-by-prefix-merge-across-first\n merge headword groups even when the first character\n changes (default: False)\n --group-by-prefix-merge-min-size GROUP_BY_PREFIX_MERGE_MIN_SIZE\n merge headword groups until the given minimum number\n of headwords is reached (default: 0, meaning no merge\n will take place)\n --ignore-case ignore headword case, all headwords will be lowercased\n (default: False)\n --ignore-synonyms ignore synonyms, not reading/writing them if present\n (default: False)\n --include-index-page include an index page (epub and mobi output only,\n default: False)\n --input-file-encoding INPUT_FILE_ENCODING\n use the specified encoding for reading the raw\n contents of input file(s) (default: 'utf-8')\n --input-parser INPUT_PARSER\n use the specified parser function after reading the\n raw contents of input file(s)\n --kindlegen-path KINDLEGEN_PATH\n path to kindlegen executable\n --marisa-bin-path MARISA_BIN_PATH\n path to MARISA bin directory\n --marisa-index-size MARISA_INDEX_SIZE\n maximum size of the MARISA index (default: 1000000)\n --merge-definitions merge definitions for the same headword (default:\n False)\n --merge-separator MERGE_SEPARATOR\n add this string between merged definitions (default: '\n | ')\n --mobi-no-kindlegen do not run kindlegen, keep .opf and .html files\n (default: False)\n --no-definitions do not output definitions for EPUB and MOBI formats\n (default: False)\n --sd-ignore-sametypesequence\n ignore the value of sametypesequence in StarDict .ifo\n files (default: False)\n --sd-no-dictzip do not compress the .dict file in StarDict files\n (default: False)\n --sort-after sort after merging/flattening (default: False)\n --sort-before sort before merging/flattening (default: False)\n --sort-by-definition sort by definition (default: False)\n --sort-by-headword sort by headword (default: False)\n --sort-ignore-case ignore case when sorting (default: False)\n --sort-reverse reverse the sort order (default: False)\n\n examples:\n\n $ penelope -i dict.csv -j csv -f en -t it -p stardict -o output.zip\n Convert en->it dictionary dict.csv (in CSV format) into output.zip (in StarDict format)\n\n $ penelope -i dict.csv -j csv -f en -t it -p stardict -o output.zip --merge-definitions\n As above, but also merge definitions\n\n $ penelope -i d1,d2,d3 -j csv -f en -t it -p csv -o output.csv --sort-after --sort-by-headword\n Merge CSV dictionaries d1, d2, and d3 into output.csv, sorting by headword\n\n $ penelope -i d1,d2,d3 -j csv -f en -t it -p csv -o output.csv --sort-after --sort-by-headword --sort-ignore-case\n As above, but ignore case for sorting\n\n $ penelope -i d1,d2,d3 -j csv -f en -t it -p csv -o output.csv --sort-after --sort-by-headword --sort-reverse\n As above, but reverse the order\n\n $ penelope -i dict.zip -j stardict -f en -t it -p csv -o output.csv\n Convert en->it dictionary dict.zip (in StarDict format) into output.csv (in CSV format)\n\n $ penelope -i dict.zip -j stardict -f en -t it -p csv -o output.csv --ignore-synonyms\n As above, but do not read the .syn synonym file if present\n\n $ penelope -i dict.zip -j stardict -f en -t it -p csv -o output.csv --flatten-synonyms\n As above, but flatten synonyms\n\n $ penelope -i dict.zip -j stardict -f en -t it -p bookeen -o output\n Convert dict.zip into output.dict.idx and output.dict for Bookeen devices\n\n $ penelope -i dict.zip -j stardict -f en -t it -p kobo -o dicthtml-en-it\n Convert dict.zip into dicthtml-en-it.zip for Kobo devices\n\n $ penelope -i dict.csv -j csv -f en -t it -p mobi -o output.mobi --cover-path mycover.png --title \"My English->Italian Dictionary\"\n Convert dict.csv into a MOBI (Kindle) dictionary, using the specified cover image and title\n\n $ penelope -i dict.xml -j xml -f en -t it -p mobi -o output.epub\n Convert dict.xml into an EPUB dictionary\n\n $ penelope -i dict.xml -j xml -f en -t it -p mobi -o output.epub --epub-output-definitions\n As above, but also output definitions\n\nYou can find ISO 639-1 language codes\n`here `__.\n\nInstalling the Dictionaries\n---------------------------\n\nBookeen Odyssey Devices\n~~~~~~~~~~~~~~~~~~~~~~~\n\nFor example, suppose you want to use an IT -> EN dictionary.\n\n1. On your PC, produce/download the IT -> EN dictionary files\n ``it-en.dict`` and ``it-en.dict.idx``.\n2. Connect your Odyssey device to your PC via the USB cable.\n3. Using your file manager, copy the two files ``it-en.dict`` and\n ``it-en.dict.idx`` from your PC into the ``Dictionaries/`` directory\n on your Odyssey device.\n4. Reboot your Odyssey, open a book in Italian and select a word: the\n definition in English should appear. (For this test, select a common\n word so you are sure it is present in the dictionary!)\n\nNote that the Bookeen dictionary software will select the dictionary to\nuse by reading the ``dc:language`` metadata of your eBook. Make sure\nyour eBooks have the proper ``dc:language`` metadata, otherwise the\ncorrect dictionary might not be loaded.\n\nKobo Devices\n~~~~~~~~~~~~\n\nAt the time of this writing (2016-02-16), Kobo devices will load\ndictionaries only if the files have a file name of an official Kobo\ndictionaries, which are:\n\n- ``dicthtml.zip`` (EN)\n- ``dicthtml-de.zip`` (DE), ``dicthtml-de-en.zip`` (DE -> EN),\n ``dicthtml-en-de.zip`` (EN -> DE),\n- ``dicthtml-es.zip`` (ES), ``dicthtml-es-en.zip`` (ES -> EN),\n ``dicthtml-en-es.zip`` (EN -> ES),\n- ``dicthtml-fr.zip`` (FR), ``dicthtml-fr-en.zip`` (FR -> EN),\n ``dicthtml-en-fr.zip`` (EN -> FR),\n- ``dicthtml-it.zip`` (IT), ``dicthtml-it-en.zip`` (IT -> EN),\n ``dicthtml-en-it.zip`` (EN -> IT),\n- ``dicthtml-nl.zip`` (NL)\n- ``dicthtml-ja.zip`` (JA), ``dicthtml-en-ja.zip`` (EN -> JA),\n- ``dicthtml-pt.zip`` (PT), ``dicthtml-pt-en.zip`` (PT -> EN),\n ``dicthtml-en-pt.zip`` (EN -> PT)\n\n(see `this MobileRead\nthread `__)\n\nHence, if you want to install a custom dictionary produced with\nPenelope, you must choose to overwrite one of the official Kobo\ndictionaries, effectively loosing the possibility of using the latter.\n\nFor example, suppose you want to use a Polish dictionary\n(``dicthtml-pl.zip``), while you are not interested in using the\nofficial Portuguese one (``dicthtml-pt.zip``).\n\n1. On your PC, produce/download the Polish dictionary\n ``dicthtml-pl.zip``.\n2. In your Kobo device, go to the settings and activate the Portuguese\n dictionary.\n3. Connect your Kobo device to your PC via the USB cable.\n4. Using your file manager, copy ``dicthtml-pl.zip`` from your PC into\n the ``.kobo/dict/`` directory on your Kobo device. (Note that\n ``.kobo`` is a hidden directory: you might need to enable the \"show\n hidden files/directories\" setting of your file manager.)\n5. Rename ``dicthtml-pl.zip`` into ``dicthtml-pt.zip``.\n6. Reboot your Kobo, open a book in Polish and select a word: the\n definition should appear. (For this test, select a common word so you\n are sure it is present in the dictionary!)\n\nNote that if you update the firmware of your Kobo, the custom\ndictionaries might be overwritten with the official ones. Hence, keep a\nbackup copy of your custom dictionaries in a safe place, e.g. your PC or\na SD card.\n\nYou can find a list of custom dictionaries, mostly done with Penelope,\nin `this MobileRead\nthread `__.\n\nLicense\n-------\n\n**Penelope** is released under the MIT License since version 2.0.0\n(2014-06-30).\n\nPrevious versions, hosted by `Google\nCode `__, were\nreleased under the GNU GPL 3 License.\n\nLimitations and Missing Features\n--------------------------------\n\n- Bookeen has no official documentation for its dictionary format (it\n has been reverse-engineered), YMMV\n- Kobo has no official documentation for its dictionary format (it has\n been reverse-engineered), YMMV\n- Reading Kobo dictionaries is partially supported (the index is read,\n the definitions are not, as they are encrypted/obfuscated)\n- Reading EPUB (3) dictionaries is not supported; the writing part\n needs polishing/refactoring\n- Reading PRC/MOBI (Kindle) dictionaries is not supported\n- There are some limitations on StarDict files that can be read (see\n comments in ``format_stardict.py``)\n- Documentation is not complete\n- Unit tests are missing\n\nSponsors\n--------\n\n- **December 2015**: `IngleseXpress.it `__,\n \"Grazie per averci aiutato a pubblicare per Kindle il `Dizionario\n Inglese-Italiano della Pronuncia Scritta\n Semplificata `__!\"\n\nAcknowledgments\n---------------\n\nMany thanks to:\n\n- *uwelovesdonna* for contributing ideas for improving the code and for\n setting up many pages of the project wiki;\n- *Jens Sadowski* for pointing out a bug with Unicode file names and\n for suggesting using multiset ``dict()`` instead of set ``dict()``;\n- *oldnat* for pointing out a bug under Windows and Python 3;\n- *Wolfgang Miller-Reichling* for providing the code for reading CSV\n dictionaries;\n- *branok* for providing the idea and initial code for German collation\n function;\n- *pal* for suggesting passing ``-l`` switch to ``MARISA_BUILD``;\n- *Lukas Br\u00fcckner* for suggesting escaping ``& < >`` when outputting in\n XML format;\n- *Stephan Lichtenhagen* for suggesting forcing UTF-8 encoding on\n Python 3;\n- *niconavarrete* for pointing out the dependency from $CWD (issue #1),\n solved in v2.0.1;\n- *elchamaco* for providing a StarDict dictionary with a ``.syn`` file\n for testing.", "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/pettarin/penelope", "keywords": "Dictionary,Dictionaries,Index,Merge,Flatten,eReader,eReaders,Bookeen,CSV,EPUB,MOBI,Kindle,Kobo,StarDict,XML,MARISA,kindlegen,dictzip", "license": "MIT License", "maintainer": null, "maintainer_email": null, "name": "penelope", "package_url": "https://pypi.org/project/penelope/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/penelope/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/pettarin/penelope" }, "release_url": "https://pypi.org/project/penelope/3.1.3.0/", "requires_dist": null, "requires_python": null, "summary": "Penelope is a multi-tool for creating, editing and converting dictionaries, especially for eReader devices", "version": "3.1.3.0" }, "last_serial": 2359175, "releases": { "3.0.0.1": [], "3.0.1.10": [ { "comment_text": "", "digests": { "md5": "9e5c30107835f90fa961e2744888e160", "sha256": "3ec22c55ba2d0dd82fd01567e7d22f5c7ec2be61c546b5475b7f55efa69dd4db" }, "downloads": -1, "filename": "penelope-3.0.1.10.tar.gz", "has_sig": false, "md5_digest": "9e5c30107835f90fa961e2744888e160", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47580, "upload_time": "2015-11-24T12:37:15", "url": "https://files.pythonhosted.org/packages/c7/22/ca4bdf7248690faa8c2c3866ced4f704f9927fb39680dcb5fd23eddd4291/penelope-3.0.1.10.tar.gz" } ], "3.0.1.11": [ { "comment_text": "", "digests": { "md5": "024d31ad839d2ef1d6df441e934180f2", "sha256": "3ed0ce6ba5d3f0932df74810853a9e5c5a164d7514e628530cd252a0eccac52d" }, "downloads": -1, "filename": "penelope-3.0.1.11.tar.gz", "has_sig": false, "md5_digest": "024d31ad839d2ef1d6df441e934180f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47571, "upload_time": "2015-11-24T12:55:27", "url": "https://files.pythonhosted.org/packages/f9/51/f815bded625d1624e1f34314c3e4fe92dc82546334df572f45d31c302400/penelope-3.0.1.11.tar.gz" } ], "3.0.1.9": [ { "comment_text": "", "digests": { "md5": "2099979738a4bf7ab08ebf21dcb50215", "sha256": "9a367bbe9a27f878ece06f57b1a051a578859e1fc5a385fd58e63f0b2c8a62d3" }, "downloads": -1, "filename": "penelope-3.0.1.9.tar.gz", "has_sig": false, "md5_digest": "2099979738a4bf7ab08ebf21dcb50215", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47640, "upload_time": "2015-11-24T11:04:27", "url": "https://files.pythonhosted.org/packages/9a/31/9bb8dce64a747a76a278a5288d48b8358f653db5bc06fc79bbbaa569675b/penelope-3.0.1.9.tar.gz" } ], "3.1.0.1": [ { "comment_text": "", "digests": { "md5": "575f459748c336e5c6c1e8f308aa5ee5", "sha256": "8ffbc95e01b1531b30242b9bfb10af78b1bd5e187bdde313af42f44698afa350" }, "downloads": -1, "filename": "penelope-3.1.0.1.tar.gz", "has_sig": false, "md5_digest": "575f459748c336e5c6c1e8f308aa5ee5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50597, "upload_time": "2015-11-29T12:07:28", "url": "https://files.pythonhosted.org/packages/75/3b/3c5e939cdf8ca7a08e5773e772892003cdf61182cfb53c73ddd8fcfbdeed/penelope-3.1.0.1.tar.gz" } ], "3.1.1.1": [ { "comment_text": "", "digests": { "md5": "e526f3491e3764e81a24647df40acdae", "sha256": "13f6fc411431076423cf2e7d56d3b5d0a34230ff2c05877b1b2b4e5ae2772151" }, "downloads": -1, "filename": "penelope-3.1.1.1.tar.gz", "has_sig": false, "md5_digest": "e526f3491e3764e81a24647df40acdae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50644, "upload_time": "2015-12-02T17:04:30", "url": "https://files.pythonhosted.org/packages/c6/e8/72dcad88b6c867284b139856344152f1a980b9854a9ab264c0c4bce6cff5/penelope-3.1.1.1.tar.gz" } ], "3.1.2.0": [ { "comment_text": "", "digests": { "md5": "919468604d340822605ca58c2de9ceaa", "sha256": "35db80a43ab865c9df730d12bebf1951ee0b5fd83cc7d4ad36a9a352eab81491" }, "downloads": -1, "filename": "penelope-3.1.2.0.tar.gz", "has_sig": false, "md5_digest": "919468604d340822605ca58c2de9ceaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51059, "upload_time": "2016-02-16T19:54:49", "url": "https://files.pythonhosted.org/packages/24/7c/1ebd7ba2bc3d2d994561bb5b73e7b92b3cecde55f4e673997f6d8c53a2d5/penelope-3.1.2.0.tar.gz" } ], "3.1.3.0": [ { "comment_text": "", "digests": { "md5": "ea2b6f24a2d2ad91cbbde4c1be9170c9", "sha256": "74cd0d464ff1359dd1413ecf2841552d1ece771780b168dde3cca208fb942c6e" }, "downloads": -1, "filename": "penelope-3.1.3.0.tar.gz", "has_sig": false, "md5_digest": "ea2b6f24a2d2ad91cbbde4c1be9170c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51913, "upload_time": "2016-09-23T09:27:18", "url": "https://files.pythonhosted.org/packages/2d/75/c3bf00036ce60558aaa59961e924786d55e6c86d7e9a89265bb45194bb90/penelope-3.1.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ea2b6f24a2d2ad91cbbde4c1be9170c9", "sha256": "74cd0d464ff1359dd1413ecf2841552d1ece771780b168dde3cca208fb942c6e" }, "downloads": -1, "filename": "penelope-3.1.3.0.tar.gz", "has_sig": false, "md5_digest": "ea2b6f24a2d2ad91cbbde4c1be9170c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51913, "upload_time": "2016-09-23T09:27:18", "url": "https://files.pythonhosted.org/packages/2d/75/c3bf00036ce60558aaa59961e924786d55e6c86d7e9a89265bb45194bb90/penelope-3.1.3.0.tar.gz" } ] }