{ "info": { "author": "Gilles Lenfant", "author_email": "gilles.lenfant@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License (GPL)", "Programming Language :: Python", "Topic :: Office/Business :: Office Suites", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Indexing" ], "description": "==========\nopenxmllib\n==========\n\nopenxmllib is a set of tools that deals with the new ECMA 376 office file\nformats known as OpenXML.\n\nhttp://www.ecma-international.org/publications/standards/Ecma-376.htm\n\nOpenXML format is used by Microsoft Office 2007 and later. Apple iWork\nand OpenOffice have filters to use this format too, starting from iWork'08\nand OO version 2.2.\n\nFeatures\n========\n\nTested features\n---------------\n\n* Extract words from a document for indexing purpose.\n* Get metadata from a document\n* Add OpenXml mimetypes to standard ``mimetypes`` module.\n* Extract cover thumbnail image, if the document contains it\n\nPlanned features\n----------------\n\n* Transform a document to HTML\n\nPublic API\n==========\n\nThese examples say all::\n\n >>> import openxmllib\n >>> doc = openxmllib.openXmlDocument(path='office.docx')\n >>> # Raises a ValueError on not supported office files.\n >>> doc.mimeType\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n >>> doc.coreProperties # Keys may depend on application\n {'title': u'blah...', u'creator': u'John Doe', ...}\n >>> doc.extendedProperties # Keys may depend on application\n {'Words': u'312', 'Application': u'Your favorite word processor', ...}\n >>> doc.customProperties # May return an empty mapping\n {'My property': u'My value', ...}\n >>> doc.allProperties # Merges core+extended+custom properties (see above)\n {...}\n >>> doc.indexableText(include_properties=False)\n u'all the words of that document body'\n >>> doc.indexableText(include_properties=True)\n u'all the words of that document body and all properties values'\n >>> doc.documentCover()\n ('jpg', )\n\nStandard ``mimetypes`` package extensions ::\n\n >>> import mimetypes\n >>> mimetypes.guess_type('somedoc.docx')\n ('application/vnd.openxmlformats-officedocument.wordprocessingml.document', None)\n >>> mimetypes.guess_type('somecalc.xlsx')\n ('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', None)\n >>> mimetypes.guess_type('someslides.pptx')\n ('application/vnd.openxmlformats-officedocument.presentationml.presentation', None)\n\nDocument factory signatures::\n\n >>> # We have the path for the office file\n >>> doc = openxmllib.openXmlDocument(path='office.docx')\n >>> # We have a file object for the office file\n >>> fh = open('office.docx', 'rb')\n >>> doc = openxmllib.openXmlDocument(file_='office.docx')\n >>> # We have the URL for the office file\n >>> doc = openxmllib.openXmlDocument(url='http://domain.tld/office.docx')\n >>> # Xe have the raw data of the office file\n >>> import mimetypes\n >>> docx_mimetype = mimetypes.guess_type('office.docx')\n >>> body = open('office.docx', 'rb').read()\n >>> doc = open(data=body, mime_type=docx_mimetype)\n\nNote that if you're not running a Python application, you may get the indexable\ntext from a document with the `openxmlinfo.py` console utility. Just type::\n\n $ openxmlinfo --help\n\nCopying and License\n===================\n\nCopyright (c) 2008 Gilles Lenfant\n\nThis software is subject to the provisions of the GNU General Public\nLicense, Version 2.0 (GPL). A copy of the GPL should accompany this\ndistribution. THIS SOFTWARE IS PROVIDED \"AS IS\" AND ANY AND ALL\nEXPRESS OR IMPLIED WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY,\nAGAINST INFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE\n\nMore details in the ``COPYING`` file included in this package.\n\nStatus\n======\n\nStarting from version 1.1, this package is tested mostly using Python 2.7.x on\nLinux. If dependencies can be met, it will most likely work on older versions\nand other environments as well.\n\nIf you don't require the cover image extraction feature and want a production-\nquality version tested on Mac OSX, Linux and Windows with Python 2.4, Python 2.5,\nlxml 1.3.6 and lxml 2.2, it might be worth your while to try 1.0.7. It should\nwork on other platforms as well, with Python 2.6, perhaps with other versions of\nlxml.\n\n\nInstallation\n============\n\nUsing the usual setuptools command::\n\n $ [sudo] easy_install openxmllib\n\nNote that this will install the excellent `lxml` egg too if not already done.\n\nFrom now you can \"import openxmllib\" in your Python apps and use the\n\"openxmlinfo\" command line utility.\n\nGotchas\n=======\n\nBe aware that most text data coming from the various openxmllib\nservices might be us-ascii or Unicode. This is a side effect of lxml\n(bug or feature ?). It's up to your application to convert these texts\nto the appropriate charset.\n\nWe do not actually handle exceptions due to malformed XML or various\nunexpected structures. You should handle the various (potential)\nproblems in a try (...) except (...) block in your application.\n\nDeveloping and testing\n======================\n\nYou should grab openxmllib from its `repository at https://github.com/glenfant/openxmllib`_.\n\nThen::\n\n $ cd /where/you/installed/openxmllib\n $ python setup.py develop\n\nNote that testing does not require the installation::\n\n $ cd tests\n $ python runalltests.py\n\nSupport\n=======\n\nUse the issue tracker provided from the `project site\n`_.\n\nCredits\n=======\n\n* Gilles Lenfant [gilles.lenfant] \n* Kevin Deldycke [kevin.deldycke] \n* Hugo Lopes Tavares [hltbra] \n* Petri Savolainen [petri] \n\n.. -*- coding: utf-8 -*-\n\n.. _todo:\n\n============================\nFuture features and bugfixes\n============================\n\nFeatures\n========\n\nRemove downloaded temporary file\n--------------------------------\n\nWhen data is coming from HTTP (...) URL, it's stored in a temporary file that's\nnot deleted after processing.\n\nSupport for standard mimetypes module\n-------------------------------------\n\nAdd our mime types to standard Python module.\n\nHuman readable plain text conversion\n------------------------------------\n\n.. code-block:: pycon\n\n >>> from openxmllib import openXmlDocument\n >>> doc = openXmlDocument(...)\n >>> doc.textDocument(target_directory)\n\n(this may be not possible for spreadsheets)\n\nHTML conversions\n----------------\n\n.. code-block:: pycon\n\n >>> from openxmllib import openXmlDocument\n >>> doc = openXmlDocument(...)\n >>> doc.htmlDocument(target_directory)\n\nThis requires to find open source XSLT stylesheets.\n\nDocument generation\n-------------------\n\nFIXME: more to say here\n\nBugfixes\n========\n\n...Waiting for feedback ;o)\n\n.. -*- coding: utf-8 -*-\n\n.. _history:\n\n=======\nHistory\n=======\n\n.. admonition::\n Issues # xxx\n\n See ``_\n\n1.1.1\n=====\n\n - Fix text extraction from Word template (.dotx) documents\n [pdpotter]\n\n1.1\n===\n\n - New feature: document cover image extraction (when present)\n [petri]\n - Remove old pointers in README etc. pointing to old google code repo\n [petri]\n - Update lxml dependency (require >= 3.4.0 now)\n [petri]\n\n1.0.7\n=====\n\n - Fixed setup.py that imports indirectly lxml. Raises failure in buildout.\n Issue # 11\n [gilles.lenfant]\n - unit tests temporary http server did not work\n [gilles.lenfant]\n\n1.0.6\n=====\n\n - The bug of mid word style change is still not fixed in presentation and\n spreadsheets :/ Anyway, we needed an API sanitazation.\n [gilles.lenfant]\n - Factory API changed for a safer and faster document object construction.\n [gilles.lenfant]\n - Added support for new mime types that are not in the standard mimetypes\n module.\n [gilles.lenfant]\n\n1.0.5\n=====\n\n - Optims on large documents.\n [gilles.lenfant]\n - CamelCased functions and method names in consistency with applied rules.\n [gilles.lenfant]\n - Version reset to 1.0.5\n [gilles.lenfant]\n - Support for urllib compatible URLs\n [gilles.lenfant]\n - New: Support for URLs\n [hltbra]\n - Fixed implementation to that old tests pass (the \"midword\"/\"metadata\" case,\n bold + normal style was not ok)\n [hltbra]\n\n1.0.4\n=====\n\n - Compliance with python 2.5 and lxml 2.2\n Still works with python 2.4 and lxml 1.3.6\n [gilles.lenfant]\n - Automate package and version definition\n - Bump version to 1.0.4\n 2008-12-11 [kevin.deldycke]\n\n1.0.3\n=====\n\n - Conforming XPath constructor signature.\n [gilles.lenfant]\n\n - New test files built with Mac Office 2008\n [gilles.lenfant]\n\n1.0.2\n=====\n\n - Fix bad \"egging\".\n [kevin.deldycke]\n\n1.0.1\n=====\n\n - Egg-ification.\n [kevin.deldycke]\n\n1.0.0\n=====\n\n - First public version.\n [gilles.lenfant]", "description_content_type": null, "docs_url": "https://pythonhosted.org/openxmllib/", "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/glenfant/openxmllib", "keywords": "Python OpenXML lxml Office2007 ECMA376", "license": "GPLv2", "maintainer": null, "maintainer_email": null, "name": "openxmllib", "package_url": "https://pypi.org/project/openxmllib/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/openxmllib/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/glenfant/openxmllib" }, "release_url": "https://pypi.org/project/openxmllib/1.1.1/", "requires_dist": null, "requires_python": null, "summary": "Provides resources to handle OpenXML documents.", "version": "1.1.1" }, "last_serial": 2521084, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "b69aa5487547f6df6da43e2f63c01f5e", "sha256": "286e834f8b54f44122a8f6ac528be3bb1da21479c7edbb59a0df4f3ef9857255" }, "downloads": -1, "filename": "openxmllib-1.0.1-py2.4.egg", "has_sig": false, "md5_digest": "b69aa5487547f6df6da43e2f63c01f5e", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 5035, "upload_time": "2008-02-25T16:02:39", "url": "https://files.pythonhosted.org/packages/54/c5/5cc1ec78a9ef0eb3579588c6b594cc0b01cf6f572f0c84e33c77570e99b4/openxmllib-1.0.1-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "5ea0d8b231a3326c3dc6cc9538e07f39", "sha256": "52eb1662ef766c002c3ffbf5f806a2779bcca5d3509156f195a943bab63d118e" }, "downloads": -1, "filename": "openxmllib-1.0.1.tar.gz", "has_sig": false, "md5_digest": "5ea0d8b231a3326c3dc6cc9538e07f39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55624, "upload_time": "2008-02-25T16:02:19", "url": "https://files.pythonhosted.org/packages/9f/89/e03ab6abe8f37c90c33d46c9cc30a36cf111013eb5338c257567188d1c1e/openxmllib-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "306399fce07f79fedcbcd4c29272c1ac", "sha256": "1189991760f45784919faa3c5f14abc43a6781cbf973c10b2b8b4ce1f7c50bc9" }, "downloads": -1, "filename": "openxmllib-1.0.2-py2.4.egg", "has_sig": false, "md5_digest": "306399fce07f79fedcbcd4c29272c1ac", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 24787, "upload_time": "2008-03-03T16:49:43", "url": "https://files.pythonhosted.org/packages/c5/d8/4e06e1267ccb2363d161d39597ef84d5e090d5996325e4b736989d2f12fd/openxmllib-1.0.2-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "9d4c3345865211ca98943076d6e5f342", "sha256": "9207f30eacfba05163444a6d8c3cb7d3dd3c0fe7b267cfbec65fb2826897c3af" }, "downloads": -1, "filename": "openxmllib-1.0.2.tar.gz", "has_sig": false, "md5_digest": "9d4c3345865211ca98943076d6e5f342", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55928, "upload_time": "2008-03-03T16:49:29", "url": "https://files.pythonhosted.org/packages/62/58/8d57d5faa77fe5c062829d05e14e0c758e3eed261a94d493e5749df58322/openxmllib-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "ad042d68638241027260cf898e4a10a0", "sha256": "aad2b0717df180348e663e1745ba28f728ee7fe035fa5b8e1ab2363e699df56a" }, "downloads": -1, "filename": "openxmllib-1.0.3-py2.4.egg", "has_sig": false, "md5_digest": "ad042d68638241027260cf898e4a10a0", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 24918, "upload_time": "2008-11-21T11:34:38", "url": "https://files.pythonhosted.org/packages/37/dd/6e37866d95a5ee8bafe554175b6f0c8334ccc2979b6e8be2b5bfff437651/openxmllib-1.0.3-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "8dd4341dd1c5d3b526ee9d8d7664cec4", "sha256": "15edc9ccc3b52e7f2070783044d8bfc096c440f8f2c3887347eb9cd9d4559000" }, "downloads": -1, "filename": "openxmllib-1.0.3.tar.gz", "has_sig": false, "md5_digest": "8dd4341dd1c5d3b526ee9d8d7664cec4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65169, "upload_time": "2008-11-21T11:34:38", "url": "https://files.pythonhosted.org/packages/85/bf/570708113a48dba3a6b65a6135aade5bf396fd106d668b32b26df02511ce/openxmllib-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "7504a7afd98dad2bbb0333e9e7320c02", "sha256": "71b9f76fa62b8b7c2aba1bbaeaab62d6452b1ba8cfb148aaec19e141d8745989" }, "downloads": -1, "filename": "openxmllib-1.0.4-py2.4.egg", "has_sig": false, "md5_digest": "7504a7afd98dad2bbb0333e9e7320c02", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 24965, "upload_time": "2009-04-11T22:23:14", "url": "https://files.pythonhosted.org/packages/c1/55/8181419b4161c5180c628cf72ef0c6792186844d831615e360dd078e5f50/openxmllib-1.0.4-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "f3399f60f4f00d2897595f5265a428e3", "sha256": "271452b9d2440c97ff39fc3be69122b72d65c5b803dfed44ff48817033e65aaf" }, "downloads": -1, "filename": "openxmllib-1.0.4.tar.gz", "has_sig": false, "md5_digest": "f3399f60f4f00d2897595f5265a428e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63983, "upload_time": "2009-04-11T22:23:13", "url": "https://files.pythonhosted.org/packages/f8/e6/5a5a1553d1b4f1694bf25cb0cf0b0ebd2f5193ce8a7d9bca16e16979154f/openxmllib-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "242bd05cf874e2ec17ca971da5ce8352", "sha256": "6babbff17edf1bcc8258ea4e28be7d39e5c540f4f71b57c898d93a926bf63099" }, "downloads": -1, "filename": "openxmllib-1.0.5-py2.4.egg", "has_sig": false, "md5_digest": "242bd05cf874e2ec17ca971da5ce8352", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 26203, "upload_time": "2009-10-31T17:20:35", "url": "https://files.pythonhosted.org/packages/cb/84/e571582d9acb17b296805909f543bc77ad2b174c239b225672c52fd118d2/openxmllib-1.0.5-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "f4805df9ed7fb9106ebf456419258661", "sha256": "31550f03a34217bf0730a43cd6278558be3d0fcfc369c2df6b630a9ae9fba348" }, "downloads": -1, "filename": "openxmllib-1.0.5.tar.gz", "has_sig": false, "md5_digest": "f4805df9ed7fb9106ebf456419258661", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65304, "upload_time": "2009-10-31T17:20:35", "url": "https://files.pythonhosted.org/packages/f7/87/beae5310f653da8479288ab19db80dbfad8a6f1fafa36c5f4a4ef73b8f11/openxmllib-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "233968e67bf6a806a844a50ed7f48eb1", "sha256": "85d74b7a8ac50e5b931719704ed115d04feb6f192b2aa08864ab82e3beaed0be" }, "downloads": -1, "filename": "openxmllib-1.0.6-py2.4.egg", "has_sig": false, "md5_digest": "233968e67bf6a806a844a50ed7f48eb1", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 30495, "upload_time": "2009-12-18T16:52:19", "url": "https://files.pythonhosted.org/packages/e1/a3/d08c3c947e5a11dd74d6df655c7a360149dd06125ae38057526711ef1376/openxmllib-1.0.6-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "e0744371cd7f98d5f554f218df59e1bd", "sha256": "2699fe88d5e2c93400bddcf3037c3118720ed2bdd6b7f912d36dd479b5590c5e" }, "downloads": -1, "filename": "openxmllib-1.0.6.tar.gz", "has_sig": false, "md5_digest": "e0744371cd7f98d5f554f218df59e1bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66300, "upload_time": "2009-12-18T16:52:19", "url": "https://files.pythonhosted.org/packages/ec/44/2a49cd77ef07f1c154ea182278be5d3278ac229bb1f88c01f0e8d1378596/openxmllib-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "e5858158e7b9963767dbb019126ff242", "sha256": "8f776b4495b370a0eba09a4d6cba6612bb7424879c6056777109868c619b7edf" }, "downloads": -1, "filename": "openxmllib-1.0.7-py2.4.egg", "has_sig": false, "md5_digest": "e5858158e7b9963767dbb019126ff242", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 30760, "upload_time": "2010-11-05T16:59:08", "url": "https://files.pythonhosted.org/packages/a3/92/92781fe1e6274e21cc3a0e3561172a2da424044fbcec543f9bbf1c235fb6/openxmllib-1.0.7-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "400eb2c0362c7e15fdb20d51dde65877", "sha256": "ba8da21e0fadfa051577e56263ae66c87ce61e2a98b702657f73d5a65c405768" }, "downloads": -1, "filename": "openxmllib-1.0.7-py2.6.egg", "has_sig": false, "md5_digest": "400eb2c0362c7e15fdb20d51dde65877", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 30349, "upload_time": "2010-11-05T16:56:49", "url": "https://files.pythonhosted.org/packages/72/82/3082a35c084b5a6830c9a48b1fd050709e533c9f381bf9d2647f4243547c/openxmllib-1.0.7-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "bbcdd22b82ee1803abc47a78718fd431", "sha256": "fb8f31ee3398a4337f5ad669c791263948d45c1b767a2cd1c52591723a434f69" }, "downloads": -1, "filename": "openxmllib-1.0.7.tar.gz", "has_sig": false, "md5_digest": "bbcdd22b82ee1803abc47a78718fd431", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68502, "upload_time": "2010-11-05T16:51:31", "url": "https://files.pythonhosted.org/packages/81/d5/f0d6240b998141cc870aa968fdc362b38fbc47350ac5e34a6189c1241bcf/openxmllib-1.0.7.tar.gz" } ], "1.1": [ { "comment_text": "built for Darwin-14.5.0", "digests": { "md5": "049fe2f5f9e8dd7c7107e5ef4a6a40d1", "sha256": "52845b6787b005872b88b88e12c5bc5ce7d53944a69794661f9fe75597fcc6f3" }, "downloads": -1, "filename": "openxmllib-1.1.macosx-10.10-intel.tar.gz", "has_sig": false, "md5_digest": "049fe2f5f9e8dd7c7107e5ef4a6a40d1", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 22404, "upload_time": "2016-07-21T09:59:33", "url": "https://files.pythonhosted.org/packages/cf/46/03cb4a18567c5e4b7738609227eaec1e9fa236f5243128b55ba007929bad/openxmllib-1.1.macosx-10.10-intel.tar.gz" }, { "comment_text": "", "digests": { "md5": "687278c33ec1df654ef1db9171671da9", "sha256": "121a488e319f67c7b1cdfb9776c8fd6a1e5a748364230d2195af0b52f30f9a1a" }, "downloads": -1, "filename": "openxmllib-1.1-py2.7.egg", "has_sig": false, "md5_digest": "687278c33ec1df654ef1db9171671da9", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 32583, "upload_time": "2016-07-21T09:59:41", "url": "https://files.pythonhosted.org/packages/80/39/32db1a2914ea67a9d29502c444c25f0b04a53ebdfc41a61b84ac8a3da0f4/openxmllib-1.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "3d04d8c1b667a1a6a2b66438da11adf1", "sha256": "a9899ddbd3d9bf96322fe15329401213f11e1882c4b455bbac56173397ad683f" }, "downloads": -1, "filename": "openxmllib-1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "3d04d8c1b667a1a6a2b66438da11adf1", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 21293, "upload_time": "2016-07-21T10:01:16", "url": "https://files.pythonhosted.org/packages/8a/20/2aa4f23763e6844fd12764519983c0d2715a83c04e70603808576ab562c9/openxmllib-1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2c9f0b39e6455ba3d31522d673095611", "sha256": "1e23e13e9de5ba2ccdf91972b1839f77196019c9f44b4bd5fcf15d7e7aa16b9d" }, "downloads": -1, "filename": "openxmllib-1.1.tar.gz", "has_sig": false, "md5_digest": "2c9f0b39e6455ba3d31522d673095611", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 137614, "upload_time": "2016-07-21T09:59:21", "url": "https://files.pythonhosted.org/packages/64/07/f033fa21a7e057b56c04571408705b00be41de46c64333ed95f73635ead7/openxmllib-1.1.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "7b2fe117079be312844fbc0ec0d375b3", "sha256": "f26a69b72b2a44a1d22505462b9af70e55cd7a6feb8a8efb9ab39329960bf346" }, "downloads": -1, "filename": "openxmllib-1.1.1.zip", "has_sig": false, "md5_digest": "7b2fe117079be312844fbc0ec0d375b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 204090, "upload_time": "2016-12-15T13:15:57", "url": "https://files.pythonhosted.org/packages/3c/df/cdb840bad7bfd3148a972313403463c6fb5e7eb5a540ae9d2c8acac54b88/openxmllib-1.1.1.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7b2fe117079be312844fbc0ec0d375b3", "sha256": "f26a69b72b2a44a1d22505462b9af70e55cd7a6feb8a8efb9ab39329960bf346" }, "downloads": -1, "filename": "openxmllib-1.1.1.zip", "has_sig": false, "md5_digest": "7b2fe117079be312844fbc0ec0d375b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 204090, "upload_time": "2016-12-15T13:15:57", "url": "https://files.pythonhosted.org/packages/3c/df/cdb840bad7bfd3148a972313403463c6fb5e7eb5a540ae9d2c8acac54b88/openxmllib-1.1.1.zip" } ] }