{
"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 :: Education",
"Intended Audience :: End Users/Desktop",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: GNU Affero General Public License v3",
"Natural Language :: English",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX :: Linux",
"Programming Language :: C",
"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 :: Education",
"Topic :: Multimedia",
"Topic :: Multimedia :: Sound/Audio",
"Topic :: Multimedia :: Sound/Audio :: Analysis",
"Topic :: Multimedia :: Sound/Audio :: Speech",
"Topic :: Printing",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Mathematics",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Text Processing",
"Topic :: Text Processing :: Linguistic",
"Topic :: Text Processing :: Markup",
"Topic :: Text Processing :: Markup :: HTML",
"Topic :: Text Processing :: Markup :: XML",
"Topic :: Utilities"
],
"description": "aeneas\n======\n\n**aeneas** is a Python/C library and a set of tools to automagically\nsynchronize audio and text (aka forced alignment).\n\n- Version: 1.7.3\n- Date: 2017-03-15\n- Developed by: `ReadBeyond `__\n- Lead Developer: `Alberto Pettarin `__\n- License: the GNU Affero General Public License Version 3 (AGPL v3)\n- Contact: aeneas@readbeyond.it\n- Quick Links: `Home `__ -\n `GitHub `__ -\n `PyPI `__ -\n `Docs `__ -\n `Tutorial `__\n - `Benchmark `__ -\n `Mailing\n List `__ -\n `Web App `__\n\nGoal\n----\n\n**aeneas** automatically generates a **synchronization map** between a\nlist of text fragments and an audio file containing the narration of the\ntext. In computer science this task is known as (automatically computing\na) **forced alignment**.\n\nFor example, given `this text\nfile `__\nand `this audio\nfile `__,\n**aeneas** determines, for each fragment, the corresponding time\ninterval in the audio file:\n\n::\n\n 1 => [00:00:00.000, 00:00:02.640]\n From fairest creatures we desire increase, => [00:00:02.640, 00:00:05.880]\n That thereby beauty's rose might never die, => [00:00:05.880, 00:00:09.240]\n But as the riper should by time decease, => [00:00:09.240, 00:00:11.920]\n His tender heir might bear his memory: => [00:00:11.920, 00:00:15.280]\n But thou contracted to thine own bright eyes, => [00:00:15.280, 00:00:18.800]\n Feed'st thy light's flame with self-substantial fuel, => [00:00:18.800, 00:00:22.760]\n Making a famine where abundance lies, => [00:00:22.760, 00:00:25.680]\n Thy self thy foe, to thy sweet self too cruel: => [00:00:25.680, 00:00:31.240]\n Thou that art now the world's fresh ornament, => [00:00:31.240, 00:00:34.400]\n And only herald to the gaudy spring, => [00:00:34.400, 00:00:36.920]\n Within thine own bud buriest thy content, => [00:00:36.920, 00:00:40.640]\n And tender churl mak'st waste in niggarding: => [00:00:40.640, 00:00:43.640]\n Pity the world, or else this glutton be, => [00:00:43.640, 00:00:48.080]\n To eat the world's due, by the grave and thee. => [00:00:48.080, 00:00:53.240]\n\n.. figure:: wiki/align.png\n :alt: Waveform with aligned labels, detail\n\n Waveform with aligned labels, detail\n\nThis synchronization map can be output to file in several formats,\ndepending on its application:\n\n- research: Audacity (AUD), ELAN (EAF), TextGrid;\n- digital publishing: SMIL for EPUB 3;\n- closed captioning: SubRip (SRT), SubViewer (SBV/SUB), TTML, WebVTT\n (VTT);\n- Web: JSON;\n- further processing: CSV, SSV, TSV, TXT, XML.\n\nSystem Requirements, Supported Platforms and Installation\n---------------------------------------------------------\n\nSystem Requirements\n~~~~~~~~~~~~~~~~~~~\n\n1. a reasonably recent machine (recommended 4 GB RAM, 2 GHz 64bit CPU)\n2. `Python `__ 2.7 (Linux, OS X, Windows) or 3.5 or\n later (Linux, OS X)\n3. `FFmpeg `__\n4. `eSpeak `__\n5. Python packages ``BeautifulSoup4``, ``lxml``, and ``numpy``\n6. Python headers to compile the Python C/C++ extensions (optional but\n strongly recommended)\n7. A shell supporting UTF-8 (optional but strongly recommended)\n\nSupported Platforms\n~~~~~~~~~~~~~~~~~~~\n\n**aeneas** has been developed and tested on **Debian 64bit**, with\n**Python 2.7** and **Python 3.5**, which are the **only supported\nplatforms** at the moment. Nevertheless, **aeneas** has been confirmed\nto work on other Linux distributions, Mac OS X, and Windows. See the\n`PLATFORMS\nfile `__\nfor details.\n\nIf installing **aeneas** natively on your OS proves difficult, you are\nstrongly encouraged to use\n`aeneas-vagrant `__, which\nprovides **aeneas** inside a virtualized Debian image running under\n`VirtualBox `__ and\n`Vagrant `__, which can be installed on any\nmodern OS (Linux, Mac OS X, Windows).\n\nInstallation\n~~~~~~~~~~~~\n\nAll-in-one installers are available for Mac OS X and Windows, and a Bash\nscript for deb-based Linux distributions (Debian, Ubuntu) is provided in\nthis repository. It is also possible to download a VirtualBox+Vagrant\nvirtual machine. Please see the `INSTALL\nfile `__\nfor detailed, step-by-step installation procedures for different\noperating systems.\n\nThe generic OS-independent procedure is simple:\n\n1. **Install** `Python `__ (2.7.x preferred),\n `FFmpeg `__, and\n `eSpeak `__\n\n2. Make sure the following **executables** can be called from your\n **shell**: ``espeak``, ``ffmpeg``, ``ffprobe``, ``pip``, and\n ``python``\n\n3. First install ``numpy`` with ``pip`` and then ``aeneas`` (this order\n is important):\n\n .. code:: bash\n\n pip install numpy\n pip install aeneas\n\n4. To **check** whether you installed **aeneas** correctly, run:\n\n``bash python -m aeneas.diagnostics``\n\nUsage\n-----\n\n1. Run without arguments to get the **usage message**:\n\n .. code:: bash\n\n python -m aeneas.tools.execute_task\n python -m aeneas.tools.execute_job\n\n You can also get a list of **live examples** that you can immediately\n run on your machine thanks to the included files:\n\n .. code:: bash\n\n python -m aeneas.tools.execute_task --examples\n python -m aeneas.tools.execute_task --examples-all\n\n2. To **compute a synchronization map** ``map.json`` for a pair\n (``audio.mp3``, ``text.txt`` in\n `plain `__\n text format), you can run:\n\n .. code:: bash\n\n python -m aeneas.tools.execute_task \\\n audio.mp3 \\\n text.txt \\\n \"task_language=eng|os_task_file_format=json|is_text_type=plain\" \\\n map.json\n\n(The command has been split into lines with ``\\`` for visual clarity; in\nproduction you can have the entire command on a single line and/or you\ncan use shell variables.)\n\nTo **compute a synchronization map** ``map.smil`` for a pair\n(``audio.mp3``,\n`page.xhtml `__\ncontaining fragments marked by ``id`` attributes like ``f001``), you can\nrun:\n\n::\n\n ```bash\n python -m aeneas.tools.execute_task \\\n audio.mp3 \\\n page.xhtml \\\n \"task_language=eng|os_task_file_format=smil|os_task_file_smil_audio_ref=audio.mp3|os_task_file_smil_page_ref=page.xhtml|is_text_type=unparsed|is_text_unparsed_id_regex=f[0-9]+|is_text_unparsed_id_sort=numeric\" \\\n map.smil\n ```\n\nAs you can see, the third argument (the *configuration string*)\nspecifies the parameters controlling the I/O formats and the processing\noptions for the task. Consult the\n`documentation `__ for details.\n\n3. If you have several tasks to process, you can create a **job\n container** to batch process them:\n\n .. code:: bash\n\n python -m aeneas.tools.execute_job job.zip output_directory\n\nFile ``job.zip`` should contain a ``config.txt`` or ``config.xml``\nconfiguration file, providing **aeneas** with all the information needed\nto parse the input assets and format the output sync map files. Consult\nthe `documentation `__ for\ndetails.\n\nThe `documentation `__ contains a\nhighly suggested\n`tutorial `__\nwhich explains how to use the built-in command line tools.\n\nDocumentation and Support\n-------------------------\n\n- Documentation: http://www.readbeyond.it/aeneas/docs/\n- Command line tools tutorial:\n http://www.readbeyond.it/aeneas/docs/clitutorial.html\n- Library tutorial:\n http://www.readbeyond.it/aeneas/docs/libtutorial.html\n- Old, verbose tutorial: `A Practical Introduction To The aeneas\n Package `__\n- Mailing list:\n https://groups.google.com/d/forum/aeneas-forced-alignment\n- Changelog: http://www.readbeyond.it/aeneas/docs/changelog.html\n- High level description of how aeneas works:\n `HOWITWORKS `__\n- Development history:\n `HISTORY `__\n- Testing:\n `TESTING `__\n- Benchmark suite: https://readbeyond.github.io/aeneas-benchmark/\n\nSupported Features\n------------------\n\n- Input text files in ``parsed``, ``plain``, ``subtitles``, or\n ``unparsed`` (XML) format\n- Multilevel input text files in ``mplain`` and ``munparsed`` (XML)\n format\n- Text extraction from XML (e.g., XHTML) files using ``id`` and\n ``class`` attributes\n- Arbitrary text fragment granularity (single word, subphrase, phrase,\n paragraph, etc.)\n- Input audio file formats: all those readable by ``ffmpeg``\n- Output sync map formats: AUD, CSV, EAF, JSON, SMIL, SRT, SSV, SUB,\n TEXTGRID, TSV, TTML, TXT, VTT, XML\n- Confirmed working on 38 languages: AFR, ARA, BUL, CAT, CYM, CES, DAN,\n DEU, ELL, ENG, EPO, EST, FAS, FIN, FRA, GLE, GRC, HRV, HUN, ISL, ITA,\n JPN, LAT, LAV, LIT, NLD, NOR, RON, RUS, POL, POR, SLK, SPA, SRP, SWA,\n SWE, TUR, UKR\n- MFCC and DTW computed via Python C extensions to reduce the\n processing time\n- Several built-in TTS engine wrappers: AWS Polly TTS API, eSpeak\n (default), eSpeak-ng, Festival, MacOS (via say), Nuance TTS API\n- Default TTS (eSpeak) called via a Python C extension for fast audio\n synthesis\n- Possibility of running a custom, user-provided TTS engine Python\n wrapper (e.g., included example for speect)\n- Batch processing of multiple audio/text pairs\n- Download audio from a YouTube video\n- In multilevel mode, recursive alignment from paragraph to sentence to\n word level\n- In multilevel mode, MFCC resolution, MFCC masking, DTW margin, and\n TTS engine can be specified for each level independently\n- Robust against misspelled/mispronounced words, local rearrangements\n of words, background noise/sporadic spikes\n- Adjustable splitting times, including a max character/second\n constraint for CC applications\n- Automated detection of audio head/tail\n- Output an HTML file for fine tuning the sync map manually\n (``finetuneas`` project)\n- Execution parameters tunable at runtime\n- Code suitable for Web app deployment (e.g., on-demand cloud computing\n instances)\n- Extensive test suite including 1,200+ unit/integration/performance\n tests, that run and must pass before each release\n\nLimitations and Missing Features\n--------------------------------\n\n- Audio should match the text: large portions of spurious text or audio\n might produce a wrong sync map\n- Audio is assumed to be spoken: not suitable for song captioning, YMMV\n for CC applications\n- No protection against memory swapping: be sure your amount of RAM is\n adequate for the maximum duration of a single audio file (e.g., 4 GB\n RAM => max 2h audio; 16 GB RAM => max 10h audio)\n- `Open issues `__\n\nA Note on Word-Level Alignment\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA significant number of users runs **aeneas** to align audio and text at\nword-level (i.e., each fragment is a word). Although **aeneas** was not\ndesigned with word-level alignment in mind and the results might be\ninferior to `ASR-based forced\naligners `__ for\nlanguages with good ASR models, **aeneas** offers some options to\nimprove the quality of the alignment at word-level:\n\n- multilevel text (since v1.5.1),\n- MFCC nonspeech masking (since v1.7.0, disabled by default),\n- use better TTS engines, like Festival or AWS/Nuance TTS API (since\n v1.5.0).\n\nIf you use the ``aeneas.tools.execute_task`` command line tool, you can\nadd ``--presets-word`` switch to enable MFCC nonspeech masking, for\nexample:\n\n.. code:: bash\n\n $ python -m aeneas.tools.execute_task --example-words --presets-word\n $ python -m aeneas.tools.execute_task --example-words-multilevel --presets-word\n\nIf you use **aeneas** as a library, just set the appropriate\n``RuntimeConfiguration`` parameters. Please see the `command line\ntutorial `__ for\ndetails.\n\nLicense\n-------\n\n**aeneas** is released under the terms of the GNU Affero General Public\nLicense Version 3. See the `LICENSE\nfile `__ for\ndetails.\n\nLicenses for third party code and files included in **aeneas** can be\nfound in the\n`licenses `__\ndirectory.\n\nNo copy rights were harmed in the making of this project.\n\nSupporting and Contributing\n---------------------------\n\nSponsors\n~~~~~~~~\n\n- **July 2015**: `Michele\n Gianella `__\n generously supported the development of the boundary adjustment code\n (v1.0.4)\n\n- **August 2015**: `Michele\n Gianella `__\n partially sponsored the port of the MFCC/DTW code to C (v1.1.0)\n\n- **September 2015**: friends in West Africa partially sponsored the\n development of the head/tail detection code (v1.2.0)\n\n- **October 2015**: an anonymous donation sponsored the development of\n the \"YouTube downloader\" option (v1.3.0)\n\n- **April 2016**: the Fruch Foundation kindly sponsored the development\n and documentation of v1.5.0\n\n- **December 2016**: the `Centro Internazionale Del Libro Parlato\n \"Adriano Sernagiotto\" `__ (Feltre,\n Italy) partially sponsored the development of the v1.7 series\n\nSupporting\n~~~~~~~~~~\n\nWould you like supporting the development of **aeneas**?\n\nI accept sponsorships to\n\n- fix bugs,\n- add new features,\n- improve the quality and the performance of the code,\n- port the code to other languages/platforms, and\n- improve the documentation.\n\nFeel free to `get in touch `__.\n\nContributing\n~~~~~~~~~~~~\n\nIf you think you found a bug or you have a feature request, please use\nthe `GitHub issue\ntracker `__ to submit it.\n\nIf you want to ask a question about using **aeneas**, your best option\nconsists in sending an email to the `mailing\nlist `__.\n\nFinally, code contributions are welcome! Please refer to the `Code\nContribution\nGuide `__\nfor details about the branch policies and the code style to follow.\n\nAcknowledgments\n---------------\n\nMany thanks to **Nicola Montecchio**, who suggested using MFCCs and DTW,\nand co-developed the first experimental code for aligning audio and\ntext.\n\n**Paolo Bertasi**, who developed the APIs and Web application for\nReadBeyond Sync, helped shaping the structure of this package for its\nasynchronous usage.\n\n**Chris Hubbard** prepared the files for packaging aeneas as a\nDebian/Ubuntu ``.deb``.\n\n**Daniel Bair** prepared the ``brew`` formula for installing **aeneas**\nand its dependencies on Mac OS X.\n\n**Daniel Bair**, **Chris Hubbard**, and **Richard Margetts** packaged\nthe installers for Mac OS X and Windows.\n\n**Firat Ozdemir** contributed the ``finetuneas`` HTML/JS code for fine\ntuning sync maps in the browser.\n\n**Willem van der Walt** contributed the code snippet to output a sync\nmap in TextGrid format.\n\n**Chris Vaughn** contributed the MacOS TTS wrapper.\n\nAll the mighty `GitHub\ncontributors `__,\nand the members of the `Google\nGroup `__.",
"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/readbeyond/aeneas",
"keywords": "AUD,AWS Polly TTS API,CSV,DTW,EAF,ELAN,EPUB 3 Media Overlay,EPUB 3,EPUB,Festival,JSON,MFCC,Mel-frequency cepstral coefficients,Nuance TTS API,ReadBeyond Sync,ReadBeyond,SBV,SMIL,SRT,SSV,SUB,TGT,TSV,TTML,TTS,TextGrid,VTT,XML,aeneas,audio/text alignment,dynamic time warping,eSpeak,eSpeak-ng,espeak,espeak-ng,festival,ffmpeg,ffprobe,forced alignment,media overlay,rb_smil_emulator,speech to text,subtitles,sync,synchronization,text to speech,text2wave,tts",
"license": "GNU Affero General Public License v3 (AGPL v3)",
"maintainer": null,
"maintainer_email": null,
"name": "aeneas",
"package_url": "https://pypi.org/project/aeneas/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/aeneas/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "https://github.com/readbeyond/aeneas"
},
"release_url": "https://pypi.org/project/aeneas/1.7.3.0/",
"requires_dist": null,
"requires_python": null,
"summary": "aeneas is a Python/C library and a set of tools to automagically synchronize audio and text (aka forced alignment)",
"version": "1.7.3.0"
},
"last_serial": 2709756,
"releases": {
"1.3.2.6": [
{
"comment_text": "",
"digests": {
"md5": "575bd684491d29bd173a0bdb60585c2b",
"sha256": "d8a09b0092adf29c49a6d6e0c68e9ec3b55e800d3fa3335184271b0eb5f88281"
},
"downloads": -1,
"filename": "aeneas-1.3.2.6.tar.gz",
"has_sig": false,
"md5_digest": "575bd684491d29bd173a0bdb60585c2b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3812693,
"upload_time": "2015-11-12T16:26:46",
"url": "https://files.pythonhosted.org/packages/a9/f1/eb6914dd17939e8be72887de205e9ab27f02be7507563106bdf86b8abd5b/aeneas-1.3.2.6.tar.gz"
}
],
"1.3.2.8": [
{
"comment_text": "",
"digests": {
"md5": "9ac90e91ed5d5e529e35990788547cf2",
"sha256": "c25f33aadacdbcff58d79aa9f78cd93a88e6f0927fa1f48b3b6dc74c90643a39"
},
"downloads": -1,
"filename": "aeneas-1.3.2.8.tar.gz",
"has_sig": false,
"md5_digest": "9ac90e91ed5d5e529e35990788547cf2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3816439,
"upload_time": "2015-11-13T14:01:36",
"url": "https://files.pythonhosted.org/packages/18/48/8bdc12c28ed54cf82841acb189ba4bcdd9b80500ab47cd780c76c0ee0b00/aeneas-1.3.2.8.tar.gz"
}
],
"1.3.3.0": [
{
"comment_text": "",
"digests": {
"md5": "b093bd8896eee3e4f6f8ac7e83d929bb",
"sha256": "adaed141be247f75e4a8d5cb6182c3d8a229990889376e235762ee0b61883f6d"
},
"downloads": -1,
"filename": "aeneas-1.3.3.0.tar.gz",
"has_sig": false,
"md5_digest": "b093bd8896eee3e4f6f8ac7e83d929bb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3816792,
"upload_time": "2015-12-20T12:59:12",
"url": "https://files.pythonhosted.org/packages/9a/89/5735a52e063784f7eb9d0316f9a23bccf70331c7e5751cdde458d0251381/aeneas-1.3.3.0.tar.gz"
}
],
"1.4.0.0": [
{
"comment_text": "",
"digests": {
"md5": "0c99659ade3f1ceb3a8a8ebf8456f3e4",
"sha256": "92da158bd50cfd271b20a876ebf9b7d66f4474782331aba02ea424eaf1aeb572"
},
"downloads": -1,
"filename": "aeneas-1.4.0.0.tar.gz",
"has_sig": false,
"md5_digest": "0c99659ade3f1ceb3a8a8ebf8456f3e4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5032516,
"upload_time": "2016-01-15T07:50:35",
"url": "https://files.pythonhosted.org/packages/7f/70/18dc62955857b5217d862436d46095284067be98b7cadf88c3c19d477ab3/aeneas-1.4.0.0.tar.gz"
}
],
"1.4.1.0": [
{
"comment_text": "",
"digests": {
"md5": "442bf2c2445aaaa941b22230b061dee3",
"sha256": "6aac716152158f7fc7ddd1f9980e96fa46a328e0ddf2df71f4d587dcc2033d0d"
},
"downloads": -1,
"filename": "aeneas-1.4.1.0.tar.gz",
"has_sig": false,
"md5_digest": "442bf2c2445aaaa941b22230b061dee3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5039744,
"upload_time": "2016-02-13T08:59:14",
"url": "https://files.pythonhosted.org/packages/99/df/fc2c1485a26e84a9c4c91a597b004f2a76cfc7d2b83faa583f06a6a9ff51/aeneas-1.4.1.0.tar.gz"
}
],
"1.5.0.0": [
{
"comment_text": "",
"digests": {
"md5": "f1624ec38c1a8591ddcad2050f20f0c2",
"sha256": "3881019374df209698b7556c82276a402e200643b662dc4b4e2b08bc6b33647d"
},
"downloads": -1,
"filename": "aeneas-1.5.0.0.tar.gz",
"has_sig": false,
"md5_digest": "f1624ec38c1a8591ddcad2050f20f0c2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5317938,
"upload_time": "2016-04-01T11:59:36",
"url": "https://files.pythonhosted.org/packages/68/a4/a5df85400a5ba2a32fb5bcf31fabfcf92016f5a44c0f0f37acf1f8a99f73/aeneas-1.5.0.0.tar.gz"
}
],
"1.5.0.2": [
{
"comment_text": "",
"digests": {
"md5": "d7ef6b604d171a36e35efe8401b8e525",
"sha256": "e1faa08ceda059b087a5e1137299d9c08ca57c5867b7875dad491c99ce5962e3"
},
"downloads": -1,
"filename": "aeneas-1.5.0.2.tar.gz",
"has_sig": false,
"md5_digest": "d7ef6b604d171a36e35efe8401b8e525",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4929369,
"upload_time": "2016-04-09T08:45:45",
"url": "https://files.pythonhosted.org/packages/3c/e2/8e9457e0ab1cb0f93c537397e9b36dfa0eef79517b714aac55ea3db944ec/aeneas-1.5.0.2.tar.gz"
}
],
"1.5.0.3": [
{
"comment_text": "",
"digests": {
"md5": "acb26bc7134b77b5f1b9d3b90f5d679f",
"sha256": "16c146eb78a122f8d2def15561344e5992bbd6930ebf4a8f45c7092b2fe51424"
},
"downloads": -1,
"filename": "aeneas-1.5.0.3.tar.gz",
"has_sig": false,
"md5_digest": "acb26bc7134b77b5f1b9d3b90f5d679f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4929595,
"upload_time": "2016-04-23T09:35:46",
"url": "https://files.pythonhosted.org/packages/1c/35/5b4ed71cd12f12cf6d8b0c835510875a0d7cec68f80926d8879c895d64a1/aeneas-1.5.0.3.tar.gz"
}
],
"1.5.1.0": [
{
"comment_text": "",
"digests": {
"md5": "1fd499b01aa778d5e462f57a2a746135",
"sha256": "a65fdca26947b89f4cf21edf11aab980845ac4207ef3e79c8faa70b785cb8c12"
},
"downloads": -1,
"filename": "aeneas-1.5.1.0.tar.gz",
"has_sig": false,
"md5_digest": "1fd499b01aa778d5e462f57a2a746135",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5112225,
"upload_time": "2016-07-25T05:55:11",
"url": "https://files.pythonhosted.org/packages/af/90/f341511ed92921b6f4de81e061cae2ebdea5fa2cb8d1134a8ae29f9951c3/aeneas-1.5.1.0.tar.gz"
}
],
"1.6.0.0": [
{
"comment_text": "",
"digests": {
"md5": "1290aabc62741d6bcedebbd3ea6bb3e8",
"sha256": "1297adf7e42c0f59347ff0129e0d10cb917072f1df89bb1f1c2e67d271587266"
},
"downloads": -1,
"filename": "aeneas-1.6.0.0.tar.gz",
"has_sig": false,
"md5_digest": "1290aabc62741d6bcedebbd3ea6bb3e8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5437037,
"upload_time": "2016-09-26T07:05:27",
"url": "https://files.pythonhosted.org/packages/cd/97/d1fdfb505a77541227dd5bb4f8658d7a1c83f19ec159d030a55da8075217/aeneas-1.6.0.0.tar.gz"
}
],
"1.6.0.1": [
{
"comment_text": "",
"digests": {
"md5": "c01301ce4f67e36f4b52d77fc915f41d",
"sha256": "f23388a638490f5010439037bb4a3e447202662211de8104edaccf6e26990126"
},
"downloads": -1,
"filename": "aeneas-1.6.0.1.tar.gz",
"has_sig": false,
"md5_digest": "c01301ce4f67e36f4b52d77fc915f41d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5436750,
"upload_time": "2016-09-30T09:00:21",
"url": "https://files.pythonhosted.org/packages/8b/39/d5019a62d4e700d7cf3e210e55c9dd3c37513eacf622fb91863fe10c08bc/aeneas-1.6.0.1.tar.gz"
}
],
"1.7.0.0": [
{
"comment_text": "",
"digests": {
"md5": "1a7d61a6dc82efdf296a3190ace3997f",
"sha256": "251bc2eabf214442ca8b80f1145d673cbcb9664dd5c0e6951550ec2f3dc5ac02"
},
"downloads": -1,
"filename": "aeneas-1.7.0.0.tar.gz",
"has_sig": false,
"md5_digest": "1a7d61a6dc82efdf296a3190ace3997f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5476436,
"upload_time": "2016-12-07T08:45:01",
"url": "https://files.pythonhosted.org/packages/e5/55/1a0fe3097251a0eb42fa734d08c0fe46fdc07a9b389cd82eb0499bc5fcee/aeneas-1.7.0.0.tar.gz"
}
],
"1.7.1.0": [
{
"comment_text": "",
"digests": {
"md5": "f43c313dc789ef1117f9779c5ecc7c37",
"sha256": "91adaa9cfbc167ddfe556c075078c7b448d97a6d7d0f2e02ada0a552da8bd34b"
},
"downloads": -1,
"filename": "aeneas-1.7.1.0.tar.gz",
"has_sig": false,
"md5_digest": "f43c313dc789ef1117f9779c5ecc7c37",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5476999,
"upload_time": "2016-12-21T08:08:59",
"url": "https://files.pythonhosted.org/packages/b7/b1/1962b08ecb789c7d6229612cd1d32aad91a2506a55a15d558cc506f216a3/aeneas-1.7.1.0.tar.gz"
}
],
"1.7.2.0": [
{
"comment_text": "",
"digests": {
"md5": "51a3fd24beb473cf4cd2dd7cf627cb94",
"sha256": "c9970af1983f46357df6fd9b50ea91cc7e3a50a36483490c4a04a08ac053f647"
},
"downloads": -1,
"filename": "aeneas-1.7.2.0.tar.gz",
"has_sig": false,
"md5_digest": "51a3fd24beb473cf4cd2dd7cf627cb94",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5477344,
"upload_time": "2017-03-03T13:31:36",
"url": "https://files.pythonhosted.org/packages/63/5f/93231c0e54386e2a7cd50948d3b1a6ad90baf63771e1e9d902e5dfe26949/aeneas-1.7.2.0.tar.gz"
}
],
"1.7.3.0": [
{
"comment_text": "",
"digests": {
"md5": "3231eb87d419e16c029c0d341c7c60c7",
"sha256": "b492d8ba36f12cce69c29c35e7075857a9d036c4743cc8f4689922be980826da"
},
"downloads": -1,
"filename": "aeneas-1.7.3.0.tar.gz",
"has_sig": false,
"md5_digest": "3231eb87d419e16c029c0d341c7c60c7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5477562,
"upload_time": "2017-03-16T12:54:15",
"url": "https://files.pythonhosted.org/packages/e5/92/88d421001bb257588df4864ceca24d570e2e822db4f40f48737a78b648b2/aeneas-1.7.3.0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "3231eb87d419e16c029c0d341c7c60c7",
"sha256": "b492d8ba36f12cce69c29c35e7075857a9d036c4743cc8f4689922be980826da"
},
"downloads": -1,
"filename": "aeneas-1.7.3.0.tar.gz",
"has_sig": false,
"md5_digest": "3231eb87d419e16c029c0d341c7c60c7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5477562,
"upload_time": "2017-03-16T12:54:15",
"url": "https://files.pythonhosted.org/packages/e5/92/88d421001bb257588df4864ceca24d570e2e822db4f40f48737a78b648b2/aeneas-1.7.3.0.tar.gz"
}
]
}