{ "info": { "author": "Arc Professional Services Team", "author_email": "arc.professional.services@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "html2ans\n========\n\n.. image:: https://img.shields.io/pypi/v/html2ans.svg\n :target: https://pypi.org/project/html2ans/\n\n.. image:: https://img.shields.io/pypi/pyversions/html2ans.svg\n :target: https://pypi.org/project/html2ans/\n\n.. image:: https://circleci.com/gh/washingtonpost/html2ans.svg?style=shield\n :target: https://circleci.com/gh/washingtonpost/html2ans\n\n.. image:: https://img.shields.io/pypi/l/html2ans.svg\n :target: https://pypi.python.org/pypi/html2ans/\n\n\nThis project provides a standardized method of parsing HTML elements into `ANS elements\n`_. It is mainly used by Arc Publishing's\nprofessional services team to migrate client data into the Arc platform, but can also be\nused for arbitrary conversion of HTML to JSON.\n\nhtml2ans is hosted on `pypi `_.\n\nPlease use the `GitHub issue tracker `_ to submit bugs or request features.\n\nFull documentation can be found `here `_.\n\n\nQuickstart\n----------\n\nGenerating ANS from HTML\n~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from html2ans.default import Html2Ans\n\n parser = Html2Ans()\n content_elements = parser.generate_ans(your_html_here)\n\n\nAdding Parsers\n~~~~~~~~~~~~~~\n\nBasic Addition\n^^^^^^^^^^^^^^\n\nIf you need to parse a certain tag in a customized way, you can write your own parser class and add it to the\nparsers ``Html2Ans`` will use like so:\n\n\n.. code-block:: python\n\n from html2ans.default import Html2Ans\n\n parser = Html2Ans()\n parser.add_parser(YourCustomImageParser())\n parser.generate_ans(your_html_here)\n\n\nThe types of items your parser can parse should be listed in its ``applicable_elements`` attribute.\n\nThe default parser class (``DefaultHtmlAnsParser`` or ``Html2Ans``) has parsers for text, links, images, various social media embeds, etc.\n\n\nPrioritized Addition\n^^^^^^^^^^^^^^^^^^^^\n\nThe parsers that can be used for each element type (e.g. ``img``, ``p``) are held in a list. If you want your parser to have a higher priority than the default parsers, add it like so:\n\n.. code-block:: python\n\n from html2ans.default import Html2Ans\n\n parser = Html2Ans()\n parser.insert_parser('img', YourCustomImageParser(), 0)\n parser.generate_ans(your_html_here)\n\n\nCreating Custom Parsers\n~~~~~~~~~~~~~~~~~~~~~~~\n\nMissing from the snippet above is a definition of ``YourCustomImageParser``. Before talking about how to create such a parser,\nlet's examine why you might need to do so.\n\nThe default image parser ``html2ans.parsers.image.ImageParser`` applies to html ``img`` tags only. Imagine you need to parse html whose images come in ``div`` tags (labelled with the class ``fancy-figure``) that also hold a caption (labelled with the class ``fancy-caption``). Here is a possible implementation of a parser for such images (note: this returns basic image ANS, not a reference): \n\n.. code-block:: python\n\n from html2ans.parsers.image import ImageParser\n from html2ans.parsers.base import ParseResult\n\n class YourCustomImageParser(ImageParser):\n applicable_elements = ['div', 'figure']\n applicable_classes = ['fancy-figure']\n\n def parse(self, element, *args, **kwargs):\n image_tag = element.find('img')\n caption_tag = element.find('p', {\"class\": \"fancy-caption\"})\n if image_tag:\n image = self.construct_output(image_tag)\n if caption_tag:\n image[\"caption\"] = caption_tag.text\n return ParseResult(image, True)\n return ParseResult(None, True)\n\n\nCustom Parsing Tips\n~~~~~~~~~~~~~~~~~~~\n\nANS Versions\n^^^^^^^^^^^^\n\nSome ANS types require a version. You can set a version in your main parser (``Html2Ans``) and then automatically include that version in any element parser's output by setting the parser's ``version_required`` attribute to ``True``.\n\n*Note: this doesn't mean valid, version-compatible ANS is automatically produced!*\n\n\nKeeping HTML in ``text`` Output\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nTo adjust what HTML is/isn't left inline when parsing text, adjust the ``INLINE_TAGS`` attribute on the text parser. Every parser inherits from ``html2ans.parsers.utils.AbstractParserUtilities`` which provides a list of default ``INLINE_TAGS`` which can be used to make sure text formatters (e.g. ``strong``, ``em``, etc.) are left in place when text is parsed.\n\n\nLink Parsing\n^^^^^^^^^^^^\n\nBy default, ``a`` tags are left inline in text, assuming there is text outside of the link. A link by itself (e.g. ``

Search

``) will be turned into an ``interstitial_link``. If ``interstitial_link`` elements are unwanted, simply add ``a`` to the list of ``applicable_elements`` for the ``ParagraphParser``.\n\n\nRemoving Unnecessary Tags\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSometimes it is helpful to remove unnecessary tags (e.g. ``

``, ``
``). By default, ``Html2Ans`` considers ``p`` and ``div`` tags with no attributes other than ``id``, ``class``, or ``style`` to be unnecessary \"wrappers\". When these are encountered, they are ignored and their children are parsed.\n\nThe benefit of this is that ``

`` is ignored and ``
`` is parsed as an image.\n\nThe downside is that sometimes you don't want your HTML removed! There are a few options in this case. You can configure what tags can be considered wrappers via the ``WRAPPER_TAGS`` attribute on ``Html2Ans``. So if ``div`` tags should never be removed, simply remove ``div`` from this list. If a more complicated set of rules are necessary, override the ``is_wrapper`` method on ``Html2Ans``.\n\nIf it's easier to modify the HTML than to modify this library, you can also add an arbitrary attribute like so: ``
...
``. This ``div`` will not be considered a wrapper when it is encountered.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/washingtonpost/html2ans", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "html2ans", "package_url": "https://pypi.org/project/html2ans/", "platform": "", "project_url": "https://pypi.org/project/html2ans/", "project_urls": { "Homepage": "https://github.com/washingtonpost/html2ans" }, "release_url": "https://pypi.org/project/html2ans/3.0.5/", "requires_dist": [ "BeautifulSoup4 (<5)", "html5lib (<2)", "lxml (<5)", "six (<2)", "furl (<3,>=2.0.0)", "ftfy (<5) ; python_version < \"3\"", "ftfy (<6) ; python_version >= \"3\"", "sphinx ; extra == 'dev'", "pytest (<5) ; extra == 'dev'", "pytest (<5) ; extra == 'tests'" ], "requires_python": "", "summary": "Convert HTML to ANS", "version": "3.0.5" }, "last_serial": 5951666, "releases": { "3.0.0": [ { "comment_text": "", "digests": { "md5": "747aa63f0d8e26ffb619c7836f1e5a47", "sha256": "b6609566a22a7eb17b665dbf1d88b7b24ceee28072666e6f7759cea22a5e38e4" }, "downloads": -1, "filename": "html2ans-3.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "747aa63f0d8e26ffb619c7836f1e5a47", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19120, "upload_time": "2019-02-16T00:14:04", "url": "https://files.pythonhosted.org/packages/6e/bf/4c981fca3895b83232fe46390dfd3ca5f2d7d94061a258730684efbfa97b/html2ans-3.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "25eab6a7c31d8bff875209339b29179c", "sha256": "0c44df5582b955bdf3766a3365be809be9bcf27df319757cffed0af025f43f12" }, "downloads": -1, "filename": "html2ans-3.0.0-py3.6.egg", "has_sig": false, "md5_digest": "25eab6a7c31d8bff875209339b29179c", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 40453, "upload_time": "2019-02-16T00:14:07", "url": "https://files.pythonhosted.org/packages/5c/72/99577752d077f039f7fdcef5e59e769593df46743ddc76fe611c4539394e/html2ans-3.0.0-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "3caf4c83c3f9b8e21768ba9afc3a2236", "sha256": "b9bb8c93eaf2f8ee9b4b247e96676202a3e1205846b0351373984b22386548ad" }, "downloads": -1, "filename": "html2ans-3.0.0.tar.gz", "has_sig": false, "md5_digest": "3caf4c83c3f9b8e21768ba9afc3a2236", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15287, "upload_time": "2019-02-16T00:14:08", "url": "https://files.pythonhosted.org/packages/8b/44/e050d6bcdeb6d7ad33c1ef678abc61a84e7639c4d1c93534c291fcf27632/html2ans-3.0.0.tar.gz" } ], "3.0.0.dev0": [ { "comment_text": "", "digests": { "md5": "e61b4af0888ddf29043f6df9b46d283e", "sha256": "cd4eaf439f9dba607d387a64f95b3b9995913aa032d4cebb7ff65501c19f9206" }, "downloads": -1, "filename": "html2ans-3.0.0.dev0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e61b4af0888ddf29043f6df9b46d283e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19156, "upload_time": "2019-02-14T22:00:43", "url": "https://files.pythonhosted.org/packages/21/ee/73f8d942d3f21bf05bac1b7d21baa7088237003878ad115471ea6587d8e6/html2ans-3.0.0.dev0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a167701b91a4eaf0c6363981ceeb5b3", "sha256": "c3f42955a55dac91df6c267621016626acddaa1b5508924ce014ff60e729c907" }, "downloads": -1, "filename": "html2ans-3.0.0.dev0-py3.6.egg", "has_sig": false, "md5_digest": "1a167701b91a4eaf0c6363981ceeb5b3", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 40433, "upload_time": "2019-02-14T22:00:45", "url": "https://files.pythonhosted.org/packages/a2/58/a493f9d25792b49b93814ae00cfb5cf62c762e78c60b8cf32590157c53d9/html2ans-3.0.0.dev0-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "f942609798ea692b9a5756c6e978ca8d", "sha256": "63dfe22820fe57b42a6bbbe96ce0ef1db219ff6d2e9c79b3513f39d3f1343e71" }, "downloads": -1, "filename": "html2ans-3.0.0.dev0.tar.gz", "has_sig": false, "md5_digest": "f942609798ea692b9a5756c6e978ca8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15308, "upload_time": "2019-02-14T22:00:46", "url": "https://files.pythonhosted.org/packages/06/20/0d7819bccedc14423c8af907e5c87d01aacbde71549b3ede3b1d704244f9/html2ans-3.0.0.dev0.tar.gz" } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "ffdd52210cdc026e4f82ad128a3742d7", "sha256": "6316ababfd70fe3880e6276fb233b67808445111261e367ceee794fe1432053c" }, "downloads": -1, "filename": "html2ans-3.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ffdd52210cdc026e4f82ad128a3742d7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20666, "upload_time": "2019-03-18T18:18:38", "url": "https://files.pythonhosted.org/packages/45/ff/2f07c28a9479e5dead7d14133aa5f7cd14777db0ea083a28ef5280068a15/html2ans-3.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73edbeacdd3052fb0862c56ec9bd31ae", "sha256": "70a5090d08e381b1a671b71010f6a587eef428853967dd8a78a6d813b4ec0cef" }, "downloads": -1, "filename": "html2ans-3.0.1-py3.6.egg", "has_sig": false, "md5_digest": "73edbeacdd3052fb0862c56ec9bd31ae", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 42341, "upload_time": "2019-03-18T18:18:39", "url": "https://files.pythonhosted.org/packages/89/fc/4975d28f1b875c3c96bb7e383440f6cf2681680ebccba3f80fa45f5ae1ab/html2ans-3.0.1-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "e5b076a2f839f1bcbab18500eea4ceee", "sha256": "e87119d01844c813453c9c0077cb9195c40bd05c7e8c4d130fb604535c6e03df" }, "downloads": -1, "filename": "html2ans-3.0.1.tar.gz", "has_sig": false, "md5_digest": "e5b076a2f839f1bcbab18500eea4ceee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17547, "upload_time": "2019-03-18T18:18:41", "url": "https://files.pythonhosted.org/packages/3b/f4/0ee1afb808d1320d246a2a8730c758d923c10546851fd5c1508e0c7b75c8/html2ans-3.0.1.tar.gz" } ], "3.0.2": [ { "comment_text": "", "digests": { "md5": "b9f0f3ef87691b6c0d5108c090ce3017", "sha256": "5b19c107c28c3cc1b81aa3a682df8fd85bec59b80625416416a6bcb0c1dd5d46" }, "downloads": -1, "filename": "html2ans-3.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b9f0f3ef87691b6c0d5108c090ce3017", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21967, "upload_time": "2019-04-02T14:51:57", "url": "https://files.pythonhosted.org/packages/b8/f1/cafea8cf5664bf368efe6b0fad060d88ce95f0595b27fdda24a7793eee0c/html2ans-3.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78daf34c49097ad74c8ae8ee6c48b17c", "sha256": "2b704d7167f480d8ed343586bffc0794b6efd7e85a22ce2205663e2b4122bc11" }, "downloads": -1, "filename": "html2ans-3.0.2-py3.6.egg", "has_sig": false, "md5_digest": "78daf34c49097ad74c8ae8ee6c48b17c", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 44291, "upload_time": "2019-04-02T14:51:59", "url": "https://files.pythonhosted.org/packages/48/41/c20c198a33a237528bc39c870385633b84f3f83bccff5d1fed78b1c153d7/html2ans-3.0.2-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "f11e398cda310d30129712ad6a9173a2", "sha256": "d4404948c53d1a856693c738fceea164c999aaacf7617bcbd01508bbc453a0c2" }, "downloads": -1, "filename": "html2ans-3.0.2.tar.gz", "has_sig": false, "md5_digest": "f11e398cda310d30129712ad6a9173a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19835, "upload_time": "2019-04-02T14:52:00", "url": "https://files.pythonhosted.org/packages/bd/10/fde025ad11a50d7c88d31f2a806972d3061c292d063b57e1dc24cc3d934f/html2ans-3.0.2.tar.gz" } ], "3.0.3": [ { "comment_text": "", "digests": { "md5": "105d7cb141998494587ea5ea9f1f055c", "sha256": "19adf925716f56f27b795f182c91ec997206e47090152eb1efe8ec207df501e3" }, "downloads": -1, "filename": "html2ans-3.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "105d7cb141998494587ea5ea9f1f055c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22096, "upload_time": "2019-05-15T17:54:42", "url": "https://files.pythonhosted.org/packages/5e/ef/b3df3188ae0af99cf9482e75e81811224c053951579f2ce430ac05fc0048/html2ans-3.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "21b700f2a12ee5e44c3f17b9b9cc9f55", "sha256": "b95ec377c89d25f2cf878c1b1a20dcd96b3ee4a350f0ec9c9094a0852d5fc20b" }, "downloads": -1, "filename": "html2ans-3.0.3-py3.6.egg", "has_sig": false, "md5_digest": "21b700f2a12ee5e44c3f17b9b9cc9f55", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 44596, "upload_time": "2019-05-15T17:54:44", "url": "https://files.pythonhosted.org/packages/70/1e/f8a6f744733cf2e2cf1091afd5901d4c19ce14b452f2c72771731cfe7abe/html2ans-3.0.3-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "9b6ae67b7dc3631b8e1e6b81189141c6", "sha256": "170fe66e747a89d7511a736503278f21ecbc4665014479a97183b5143cae83d1" }, "downloads": -1, "filename": "html2ans-3.0.3.tar.gz", "has_sig": false, "md5_digest": "9b6ae67b7dc3631b8e1e6b81189141c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17992, "upload_time": "2019-05-15T17:54:46", "url": "https://files.pythonhosted.org/packages/44/cf/69614cf7a428563d587e06714f4679783f4771db5803355a71984fe320a5/html2ans-3.0.3.tar.gz" } ], "3.0.4": [ { "comment_text": "", "digests": { "md5": "c8d90f0273bb9811535c0a3e521d2397", "sha256": "a2301c91532bdada91bf4a3cb4ff7aa11703e40361045bfd4bb9c13d5e26dc00" }, "downloads": -1, "filename": "html2ans-3.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c8d90f0273bb9811535c0a3e521d2397", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22102, "upload_time": "2019-07-30T19:56:55", "url": "https://files.pythonhosted.org/packages/8b/9f/b79a636c72111161f8b4165b059afe20efd883c38fa6f5d631a27709a5b9/html2ans-3.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c420587d57f8c9fa72f268c788da1a8", "sha256": "dca261dd57d2e8c8c6f89e93ff57f7ee14485f3f60234b0de1f51dc70a15e315" }, "downloads": -1, "filename": "html2ans-3.0.4-py3.6.egg", "has_sig": false, "md5_digest": "1c420587d57f8c9fa72f268c788da1a8", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 44614, "upload_time": "2019-07-30T19:56:56", "url": "https://files.pythonhosted.org/packages/7f/9d/5eea3cb0b05fe6950deacf0db51ece0b573060e932ae92d8e040a0ad4197/html2ans-3.0.4-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "5b752fead20e51f1dcecda973bbedc1e", "sha256": "81036669fd1fdbae2cd2a0430f8f90f6bda7d36ecd4482a2707f11135732f1b5" }, "downloads": -1, "filename": "html2ans-3.0.4.tar.gz", "has_sig": false, "md5_digest": "5b752fead20e51f1dcecda973bbedc1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19992, "upload_time": "2019-07-30T19:56:57", "url": "https://files.pythonhosted.org/packages/58/49/ca0ac110fc8078f519c387cf303262d331b218ecf1782f027938c639896a/html2ans-3.0.4.tar.gz" } ], "3.0.5": [ { "comment_text": "", "digests": { "md5": "2df0f9a276d0721ecf1fc3fbf78e2660", "sha256": "e8829ae35789070a21ba2f1cd26377ea5fa7b135c4a2841cadd230739ddecb81" }, "downloads": -1, "filename": "html2ans-3.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2df0f9a276d0721ecf1fc3fbf78e2660", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22165, "upload_time": "2019-10-09T19:43:39", "url": "https://files.pythonhosted.org/packages/50/d6/2d8c8487a88ae7bcd04d094bc8438d0379984c1acd68a718a4cc7274c165/html2ans-3.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fd3d4a92f227b1c15c91c383edd65cce", "sha256": "0005aac29645c3d7980522c91d5f6dc34ba28d297739d394e8881ed5fc3e546b" }, "downloads": -1, "filename": "html2ans-3.0.5-py3.6.egg", "has_sig": false, "md5_digest": "fd3d4a92f227b1c15c91c383edd65cce", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 44782, "upload_time": "2019-10-09T19:43:40", "url": "https://files.pythonhosted.org/packages/95/be/261bdfc267c8fcfd9de018b2ba61f87f837e09439208cc7fc55ea6e46a28/html2ans-3.0.5-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "65e94392d49ddf0e7627058bbd94d6c1", "sha256": "ca8c9ef2f9dc2792ac2bee76c42b5bedd90ccfa52f85a8de270fd9dc02ce8d85" }, "downloads": -1, "filename": "html2ans-3.0.5.tar.gz", "has_sig": false, "md5_digest": "65e94392d49ddf0e7627058bbd94d6c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17969, "upload_time": "2019-10-09T19:43:42", "url": "https://files.pythonhosted.org/packages/ee/34/470782dca5a0b0e88736a79df7645baf5398c9f27dd97913853796e0f201/html2ans-3.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2df0f9a276d0721ecf1fc3fbf78e2660", "sha256": "e8829ae35789070a21ba2f1cd26377ea5fa7b135c4a2841cadd230739ddecb81" }, "downloads": -1, "filename": "html2ans-3.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2df0f9a276d0721ecf1fc3fbf78e2660", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22165, "upload_time": "2019-10-09T19:43:39", "url": "https://files.pythonhosted.org/packages/50/d6/2d8c8487a88ae7bcd04d094bc8438d0379984c1acd68a718a4cc7274c165/html2ans-3.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fd3d4a92f227b1c15c91c383edd65cce", "sha256": "0005aac29645c3d7980522c91d5f6dc34ba28d297739d394e8881ed5fc3e546b" }, "downloads": -1, "filename": "html2ans-3.0.5-py3.6.egg", "has_sig": false, "md5_digest": "fd3d4a92f227b1c15c91c383edd65cce", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 44782, "upload_time": "2019-10-09T19:43:40", "url": "https://files.pythonhosted.org/packages/95/be/261bdfc267c8fcfd9de018b2ba61f87f837e09439208cc7fc55ea6e46a28/html2ans-3.0.5-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "65e94392d49ddf0e7627058bbd94d6c1", "sha256": "ca8c9ef2f9dc2792ac2bee76c42b5bedd90ccfa52f85a8de270fd9dc02ce8d85" }, "downloads": -1, "filename": "html2ans-3.0.5.tar.gz", "has_sig": false, "md5_digest": "65e94392d49ddf0e7627058bbd94d6c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17969, "upload_time": "2019-10-09T19:43:42", "url": "https://files.pythonhosted.org/packages/ee/34/470782dca5a0b0e88736a79df7645baf5398c9f27dd97913853796e0f201/html2ans-3.0.5.tar.gz" } ] }