{ "info": { "author": "Peter Sobot", "author_email": "github@petersobot.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Build Tools" ], "description": "# keynote-parser\n\n\"build:\"\n\n`keynote-parser` is a Python module for unpacking and re-packing\n[Apple Keynote](https://www.apple.com/keynote/) `.key` files. It supports Keynote\nfiles generated by Keynote version 8.3 (current as of January 2019).\n\nKeynote uses a proprietary, compressed binary format to store its presentations.\nThis format is comprised of a zip file containing images and videos, as well as\n[Snappy](https://github.com/google/snappy)-compressed\n[Protobuf](https://github.com/protocolbuffers/protobuf) `.iwa` files containing\nmetadata, text, and all other definitions used in the presentation.\n\n`keynote-parser` unpacks these component files into `.yaml` files in a directory,\nmaking them editable by text editors and/or scripts, then allows re-packing of these\nfiles into a working Keynote archive.\n\nWhat could you use this for? Well, I use it to allow versioning of Keynote files in Git,\nwhich makes diffs more understandable (rather than binary), as well as modifying text\nin Keynote files in response to external scripts.\n(e.g.: figures that update from databases before giving a presentation)\n\n## Installation\n\n```bash\npip install keynote-parser\n```\n\n## Usage\n\n```bash\n# Unpack MyPresentation.key into ./MyPresentation/\nkeynote-parser unpack MyPresentation.key\n\n# Re-pack ./MyPresentation/ into MyPresentation.out.key\nkeynote-parser pack ./MyPresentation/\n\n# List the files within a Keynote archive\nkeynote-parser ls MyPresentation.key\n\n# Dump a particular .iwa file into its yaml representation on stdout\nkeynote-parser cat MyPresentation.key /Index/Slide-00001.iwa\n\n# Replace text within a Keynote file in-place\nkeynote-parser replace MyPresentation.key --find \"hello world\" --replace \"hello dolly\"\n```\n\n### Formats\n\n`keynote-parser` supports reading a list of replacements from a JSON file passed in\nas `--replacements`. This file must have the form:\n\n```json\n{\n \"replacements\": [\n {\n \"find\": \"regexp to search for\",\n \"replace\": \"string to replace with\"\n },\n ...\n ]\n}\n```\n\nThis argument can be passed to `keynote-parser replace` to replace text in a Keynote\nfile in-place. It can also be passed to `keynote-parser pack` to pack a directory\ninto a Keynote file, replacing text along the way.\n\n#### Replacing Images\n\nThe `replacements` json format can also be used to replace images in a Keynote file.\nTo do so:\n\n* Use the `keynote-parser ls` command to determine the name of the image to replace.\n* Set the `find` pattern to the image's name, with the `-\\d\\d\\d` suffix removed.\n* Set the `replace` field to the local path to the replacement image.\n\n`keynote-parser` will automatically rescale the replacement image to fit all of the\nsizes of the target image.\n\n## Updates\n\nAs `keynote-parser` includes private Protobuf definitions extracted from a copy of Keynote,\nnew versions of Keynote will inevitably create `.key` files that cannot be read by `keynote-parser`.\nAs new versions of Keynote are released, the following steps must be undertaken:\n\n* Run [proto-dump](https://github.com/obriensp/proto-dump) on the new copy of Keynote to dump new Proto files.\n * Any `.` characters in the Protobuf definitions must be changed to `_` characters manually.\n* Connect to a running copy of `Keynote` with `lldb` (or any other debugger) and manually copy\n the results of `[TSPRegistry sharedRegistry]` into `mapping.py`.\n * Versions of macOS >= 10.11 may protect Keynote from being attached to by a debugger -\n to attach, [temporarily disable System IntegrityProtection](https://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection-sip-aka-rootless-on-macos-os-x)\n to get this data.\n\n## Credits\n\n`keynote-parser` was built by [Peter Sobot](https://petersobot.com) but heavily based on [prior\nwork](https://github.com/obriensp/iWorkFileFormat/blob/master/Docs/index.md) by [Sean Patrick O'Brien](http://www.obriensp.com).\nA copy of O'Brien's format documentation is included in the `docs` folder for posterity.\n\n## License\n\nAll code in this repository is licensed under the MIT License, save for `protobuf_patch.py`, which contains its own license.\n\n```\nCopyright 2019 Peter Sobot\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software\nand associated documentation files (the \"Software\"), to deal in the Software without restriction,\nincluding without limitation the rights to use, copy, modify, merge, publish, distribute,\nsublicense, and/or sell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or\nsubstantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\nBUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\nDAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/psobot/keynote-parser", "keywords": "keynote macOS apple presentation powerpoint", "license": "", "maintainer": "", "maintainer_email": "", "name": "keynote-parser", "package_url": "https://pypi.org/project/keynote-parser/", "platform": "", "project_url": "https://pypi.org/project/keynote-parser/", "project_urls": { "Bug Reports": "https://github.com/psobot/keynote-parser/issues", "Homepage": "https://github.com/psobot/keynote-parser", "Source": "https://github.com/psobot/keynote-parser/" }, "release_url": "https://pypi.org/project/keynote-parser/1.0.9/", "requires_dist": [ "protobuf (>=3.8.0)", "tqdm (>=4.14.0)", "python-snappy (>=0.5.3)", "PyYAML (>=4.2b1)", "Pillow (==5.4.1)", "future (==0.17.1)", "check-manifest; extra == 'dev'", "coverage; extra == 'test'" ], "requires_python": "", "summary": "A tool for manipulating Apple Keynote presentation files.", "version": "1.0.9" }, "last_serial": 5914775, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "c4501455d138394b1b63cb62a4c429f3", "sha256": "8f59675cc8950f1a19179439583ad145dd1663653aaedb306fbf2d16105440ae" }, "downloads": -1, "filename": "keynote_parser-1.0.0-py2.7.egg", "has_sig": false, "md5_digest": "c4501455d138394b1b63cb62a4c429f3", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 829219, "upload_time": "2019-01-22T04:42:09", "url": "https://files.pythonhosted.org/packages/64/72/f37f9f3eeea58c0b68c1e5b1eb0197f815329c8b633d09526637deff842f/keynote_parser-1.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "553fc2c6706e51e939d85b5ddff9322f", "sha256": "a320a51b8c06c976198abf96137503f8cf9710cf44a910445836100e2cfb4561" }, "downloads": -1, "filename": "keynote_parser-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "553fc2c6706e51e939d85b5ddff9322f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 411129, "upload_time": "2019-01-22T04:42:04", "url": "https://files.pythonhosted.org/packages/63/d9/94bff05e36f7532c74809b723ba522d60cd84f94f524f3de90b365ada886/keynote_parser-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd5ec0d847723624a0081eba73a63264", "sha256": "44c312a4b9ee1be2049edb2804b9b0c05c8202afb300fab2b0eaf0efadb43d47" }, "downloads": -1, "filename": "keynote-parser-1.0.0.tar.gz", "has_sig": false, "md5_digest": "cd5ec0d847723624a0081eba73a63264", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 395398, "upload_time": "2019-01-22T04:42:07", "url": "https://files.pythonhosted.org/packages/a8/4b/8905c53980531935e4a0b2446faafccfbb07b334940c735bc80fa9c99dc6/keynote-parser-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "cc9f3f3eba62128c5b786a3be8931343", "sha256": "958c225638891abc4843d716cf2470508f58b8bdab97bd6c78f36c966561b32e" }, "downloads": -1, "filename": "keynote_parser-1.0.1-py2.7.egg", "has_sig": false, "md5_digest": "cc9f3f3eba62128c5b786a3be8931343", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 830195, "upload_time": "2019-01-22T05:18:31", "url": "https://files.pythonhosted.org/packages/9c/69/9086a24ea555073782dae8eb634103785d1f6337b375f199c1cbd061d46b/keynote_parser-1.0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "bf55e81c204dc9276e17ddb4f7f28861", "sha256": "516cd6262e23f998cc08f8fc821979fc75e6bda3d240a0fc0d4b7dea8ccf805b" }, "downloads": -1, "filename": "keynote_parser-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "bf55e81c204dc9276e17ddb4f7f28861", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 411417, "upload_time": "2019-01-22T05:18:26", "url": "https://files.pythonhosted.org/packages/98/33/909803cd20f6506bbfeff221e88231b03730a6c5894f11200194ec175a1e/keynote_parser-1.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70cdd5215aae29a00cbaea49baf744d7", "sha256": "c8633ea11b4c301fbeec3e233769cadd96f56aa20da3738480f041dbfb3abff0" }, "downloads": -1, "filename": "keynote-parser-1.0.1.tar.gz", "has_sig": false, "md5_digest": "70cdd5215aae29a00cbaea49baf744d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 395758, "upload_time": "2019-01-22T05:18:28", "url": "https://files.pythonhosted.org/packages/46/2d/b7afe05f48a7890352fc2eb88a974d8a316681566622a58cdddd5ab6ffe8/keynote-parser-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "9730389f3041c41fccc3c916aa2852bf", "sha256": "bcc5697fde96704a4457b155af200b5d725f6bdfad116891dfa0a0f8fd091664" }, "downloads": -1, "filename": "keynote_parser-1.0.2-py2.7.egg", "has_sig": false, "md5_digest": "9730389f3041c41fccc3c916aa2852bf", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 838046, "upload_time": "2019-01-29T00:14:37", "url": "https://files.pythonhosted.org/packages/6b/49/0c8542811c3782ae561f01987c7118612ffb2cf61b372932f1cc3ae70657/keynote_parser-1.0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "b9ea5b64a4b0292323cef6b51570b7ee", "sha256": "00011718dbb293cdd15f0e0696c00af8077806e67d3d32aeef15afde75c6bda6" }, "downloads": -1, "filename": "keynote_parser-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "b9ea5b64a4b0292323cef6b51570b7ee", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 414501, "upload_time": "2019-01-29T00:14:32", "url": "https://files.pythonhosted.org/packages/9f/85/ca38046618e47c4418808140a56895cce9205633a8986a9e963aa7b3e471/keynote_parser-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "21802eca8384ef853f59c20c71519d10", "sha256": "223f22c855b1b91f9b3b71944b35e0e571ebd5a80262de7292d431069e125f17" }, "downloads": -1, "filename": "keynote-parser-1.0.2.tar.gz", "has_sig": false, "md5_digest": "21802eca8384ef853f59c20c71519d10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 398505, "upload_time": "2019-01-29T00:14:35", "url": "https://files.pythonhosted.org/packages/12/9f/840b39559b4439b76ec0d095642dffe6bb7d99a71409988c79483146528c/keynote-parser-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "e2d0d80f6e5383330cd37da6bc412689", "sha256": "f879d8ab053b642658335dfdd545fee472e24ab9464196857b09624fc5e24410" }, "downloads": -1, "filename": "keynote-parser-1.0.3.macosx-10.14-x86_64.tar.gz", "has_sig": false, "md5_digest": "e2d0d80f6e5383330cd37da6bc412689", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 810778, "upload_time": "2019-02-05T03:32:47", "url": "https://files.pythonhosted.org/packages/73/77/1b55c3578cc9281fea82600f871840eb1bae3e02dc4b1273e36ecf446032/keynote-parser-1.0.3.macosx-10.14-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "f7bdbe4869e6a31eac1e68e741a40c72", "sha256": "e4d0355e23bb324785b52d8ffedebf0899e68629a6cd67f65261507e9de5ce26" }, "downloads": -1, "filename": "keynote_parser-1.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "f7bdbe4869e6a31eac1e68e741a40c72", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 416051, "upload_time": "2019-02-05T03:32:45", "url": "https://files.pythonhosted.org/packages/99/b6/0043c64e9ae7b21bb23c92ac291830c9e502d22c871ea85ca17f9e5c3f44/keynote_parser-1.0.3-py2-none-any.whl" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "37fee7bb138cc6613e218cca2965b70c", "sha256": "ed91ea32f36b8196bcc6412081ccc2ac1bf44d1491e450ddaa4834e1a7a389a5" }, "downloads": -1, "filename": "keynote_parser-1.0.4-py2.7.egg", "has_sig": false, "md5_digest": "37fee7bb138cc6613e218cca2965b70c", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 840246, "upload_time": "2019-03-06T19:38:51", "url": "https://files.pythonhosted.org/packages/90/90/0db7ad42493a2a208ff74caa745788d41959558a14e63179f05b2351d3e1/keynote_parser-1.0.4-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "5910f7eb26b445e633859ce0a587a8c0", "sha256": "9f497897027674c2f3f6126378cf4443b6296aef586d5a77dbcbf17cd0429301" }, "downloads": -1, "filename": "keynote_parser-1.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "5910f7eb26b445e633859ce0a587a8c0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 415569, "upload_time": "2019-03-06T19:38:45", "url": "https://files.pythonhosted.org/packages/a7/78/b78b50aad5ca945848a075f32ac11e685120c0fb3bc979fd5bbc525c4a3d/keynote_parser-1.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b4d73dce12dcfed68cfc518cc9cc41c", "sha256": "2f58cd2a39307c980b3a4fbb8380967a0670fb0e24cea461a876199fb70471d9" }, "downloads": -1, "filename": "keynote-parser-1.0.4.tar.gz", "has_sig": false, "md5_digest": "4b4d73dce12dcfed68cfc518cc9cc41c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 399964, "upload_time": "2019-03-06T19:38:49", "url": "https://files.pythonhosted.org/packages/ea/59/1d0ab8e8d0ab63acc35dd65237fcd8d6331fb4b2fc0e9ae246a6230ae05c/keynote-parser-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "f9a95fe7c250322535191a24c77f4c87", "sha256": "9787596bc169f482425cd038b4a865160f0cfec112d807f67abf9b4740326849" }, "downloads": -1, "filename": "keynote_parser-1.0.5-py2.7.egg", "has_sig": false, "md5_digest": "f9a95fe7c250322535191a24c77f4c87", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 843147, "upload_time": "2019-03-06T19:44:56", "url": "https://files.pythonhosted.org/packages/c0/23/bfa8c55c7e73b1d1355f5d970f85e5026e3d4ea0bfe9807bfd1f73d1253d/keynote_parser-1.0.5-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "fa19c3ba3daa045b337b9da9941a7222", "sha256": "9acb8246db4ee802d714711f78ca5881e1b5f34a53b6f881524b4185f8757bd8" }, "downloads": -1, "filename": "keynote_parser-1.0.5-py2-none-any.whl", "has_sig": false, "md5_digest": "fa19c3ba3daa045b337b9da9941a7222", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 416291, "upload_time": "2019-03-06T19:44:53", "url": "https://files.pythonhosted.org/packages/5a/70/6a0b4ab79d6096741277751cb06483a887a63e8bc580a552f16fc5a68b52/keynote_parser-1.0.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d967dc2788f74c3f8b84100db615a6db", "sha256": "72c8d81ec838ec3460a72391c381f669a16cab92b2a43423f2460efe8719be86" }, "downloads": -1, "filename": "keynote-parser-1.0.5.tar.gz", "has_sig": false, "md5_digest": "d967dc2788f74c3f8b84100db615a6db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 400492, "upload_time": "2019-03-06T19:44:55", "url": "https://files.pythonhosted.org/packages/8d/18/b4e87b3e61202871ab93c5a3eec2adfe329051f5724daca2a92c6f8cc3b8/keynote-parser-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "6e19e4370c4d26d93d9a6f5fc05df146", "sha256": "e6fe3e979ee2dfdca05f018b8748ad8008da5ac4c01f5c11130fe389be0cbfa9" }, "downloads": -1, "filename": "keynote_parser-1.0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "6e19e4370c4d26d93d9a6f5fc05df146", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 417306, "upload_time": "2019-06-10T01:38:47", "url": "https://files.pythonhosted.org/packages/ec/7a/0619f8d256188a0f2b2c370f76f96294b1d8705caf82401c1541ed4a4e9b/keynote_parser-1.0.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd0b30ec3fd2a3ac809470d2d0e207c8", "sha256": "8967a1f782f375b6e92d111249fa4aebe5fd316bdcdc973d3c42be25662acbcd" }, "downloads": -1, "filename": "keynote-parser-1.0.6.tar.gz", "has_sig": false, "md5_digest": "bd0b30ec3fd2a3ac809470d2d0e207c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 765004, "upload_time": "2019-06-10T01:38:49", "url": "https://files.pythonhosted.org/packages/ed/c3/f884f0f1c50bcb1c49ee8a0c5bd26b51e7f01e358c7c4a1ad345fed67d1d/keynote-parser-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "2d1da6b801d325a3a832263b9aec99fa", "sha256": "2cfb626561fdae3af36431aa66d589bf8bdc0a111ac622cb5b680932867f964e" }, "downloads": -1, "filename": "keynote_parser-1.0.7-py2-none-any.whl", "has_sig": false, "md5_digest": "2d1da6b801d325a3a832263b9aec99fa", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 417365, "upload_time": "2019-06-12T13:02:58", "url": "https://files.pythonhosted.org/packages/c5/0f/9153660e61e6057fccdbf317545b64af606f2aaa3209e2c34ce29f7e6563/keynote_parser-1.0.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a13f6287e487f4e164ee1a2ac1942435", "sha256": "cbf51e40caff89aeb92dd40a56a478f9a730a6c37c1590a17943d1466974d7be" }, "downloads": -1, "filename": "keynote-parser-1.0.7.tar.gz", "has_sig": false, "md5_digest": "a13f6287e487f4e164ee1a2ac1942435", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 765325, "upload_time": "2019-06-12T13:03:00", "url": "https://files.pythonhosted.org/packages/5d/97/875c40164e42fae228bd1d886083217c0ea8fcb244815141a969023a8d4f/keynote-parser-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "1d7b32be0173ecb0872e16f5edf48070", "sha256": "9aa7d769d2ef917797e134309c9f5f673aea96b8344725ba002cb8dafb8f8791" }, "downloads": -1, "filename": "keynote_parser-1.0.8-py2-none-any.whl", "has_sig": false, "md5_digest": "1d7b32be0173ecb0872e16f5edf48070", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 417418, "upload_time": "2019-08-15T04:43:40", "url": "https://files.pythonhosted.org/packages/bc/65/0fccef145a5f3be62105aeb69b4933dd5aa5f0ff1b38e29d6ecb9a444ee7/keynote_parser-1.0.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c6776e19098b7afe7839de5684ba6d1a", "sha256": "2cea243b3d814fec915dd7423cbadaebdb51aa3c33aa514c3c2cdeb6b193d745" }, "downloads": -1, "filename": "keynote-parser-1.0.8.tar.gz", "has_sig": false, "md5_digest": "c6776e19098b7afe7839de5684ba6d1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 766184, "upload_time": "2019-08-15T04:43:43", "url": "https://files.pythonhosted.org/packages/54/7e/3bf47673f2ac04aee22425a3bfab4871bd7dc59cfd4210aeb270c211e064/keynote-parser-1.0.8.tar.gz" } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "deda41c43eadfede16ca6c7d3ebce54b", "sha256": "3d4e647aea6ec85a7c88715a8a1eddb40d582007b5204d496c6e4f6eb88d715f" }, "downloads": -1, "filename": "keynote_parser-1.0.9-py2-none-any.whl", "has_sig": false, "md5_digest": "deda41c43eadfede16ca6c7d3ebce54b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 417492, "upload_time": "2019-10-01T20:43:36", "url": "https://files.pythonhosted.org/packages/30/6f/c0a4dfc34f925124fa7cc47bb9e563a3ae8efe04dbe89a3564ea6916fde2/keynote_parser-1.0.9-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5b79c873ff87a672f15981d9673d271", "sha256": "69373a00c57e07431e1ca0848caee6b255ef93c7c0cb5777bfaa3336aad0658e" }, "downloads": -1, "filename": "keynote-parser-1.0.9.tar.gz", "has_sig": false, "md5_digest": "d5b79c873ff87a672f15981d9673d271", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 399042, "upload_time": "2019-10-01T20:43:39", "url": "https://files.pythonhosted.org/packages/6f/0e/6b94152ada50404a9bbd3596f190d97ceeec10749b885823e78c2bc9bb13/keynote-parser-1.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "deda41c43eadfede16ca6c7d3ebce54b", "sha256": "3d4e647aea6ec85a7c88715a8a1eddb40d582007b5204d496c6e4f6eb88d715f" }, "downloads": -1, "filename": "keynote_parser-1.0.9-py2-none-any.whl", "has_sig": false, "md5_digest": "deda41c43eadfede16ca6c7d3ebce54b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 417492, "upload_time": "2019-10-01T20:43:36", "url": "https://files.pythonhosted.org/packages/30/6f/c0a4dfc34f925124fa7cc47bb9e563a3ae8efe04dbe89a3564ea6916fde2/keynote_parser-1.0.9-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5b79c873ff87a672f15981d9673d271", "sha256": "69373a00c57e07431e1ca0848caee6b255ef93c7c0cb5777bfaa3336aad0658e" }, "downloads": -1, "filename": "keynote-parser-1.0.9.tar.gz", "has_sig": false, "md5_digest": "d5b79c873ff87a672f15981d9673d271", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 399042, "upload_time": "2019-10-01T20:43:39", "url": "https://files.pythonhosted.org/packages/6f/0e/6b94152ada50404a9bbd3596f190d97ceeec10749b885823e78c2bc9bb13/keynote-parser-1.0.9.tar.gz" } ] }