{ "info": { "author": "Georgi Valkov", "author_email": "georgi.t.valkov@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries" ], "description": "Ansimarkup\n==========\n\n.. class:: no-web no-pdf\n\n|pypi| |build| |license|\n\n\nAnsimarkup is an XML-like markup for producing colored terminal text.\n\n\n.. code-block:: python\n\n from ansimarkup import ansiprint as print\n\n print(\"bold text\"))\n print(\"red text\", \"red text on a green background\")\n print(\"orange text\")\n\n\nInstallation\n------------\n\nThe latest stable version of ansimarkup can be installed from pypi:\n\n.. code-block:: bash\n\n $ pip install ansimarkup\n\n\nUsage\n-----\n\nBasic\n~~~~~\n\n.. code-block:: python\n\n from ansimarkup import parse, ansiprint\n\n # parse() converts the tags to the corresponding ansi escape sequence.\n parse(\"bold dim\")\n\n # ansiprint() works exactly like print(), but first runs parse() on all arguments.\n ansiprint(\"bold\", \"dim\")\n ansiprint(\"bold\", \"dim\", sep=\":\", file=sys.stderr)\n\n\nColors and styles\n~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n # Colors may be specified in one of several ways.\n parse(\"red foreground\")\n parse(\"red background\")\n parse(\"red foreground\")\n parse(\"red background\")\n\n # Xterm, hex and rgb colors are accepted by the and tags.\n parse(\"aquamarine foreground\")\n parse(\"dark blue background\")\n parse(\"dark green foreground\")\n\n # Tags may be nested.\n parse(\"red text on a yellow foreground\")\n\n # The above may be more concisely written as:\n parse(\"red text on a yellow background\")\n\n # This shorthand also supports style tags.\n parse(\"bold red text on a yellow background\")\n parse(\"bold red text\")\n parse(\"bold regular text on a yellow background\")\n\n # Unrecognized tags are left as-is.\n parse(\"\")\n\nFor a list of markup tags, please refer to `tags.py`_.\n\n\nUser-defined tags\n~~~~~~~~~~~~~~~~~\n\nCustom tags or overrides for existing tags may be defined by creating a new\n``AnsiMarkup`` instance:\n\n.. code-block:: python\n\n from ansimarkup import AnsiMarkup, parse\n\n user_tags = {\n # Add a new tag (e.g. we want to expand to \"\").\n \"info\": parse(\"\")\n\n # The ansi escape sequence can be used directly.\n \"info\": \"e\\x1b[32m\\x1b[1m\",\n\n # Tag names may also be callables.\n \"err\": lambda: parse(\"\")\n\n # Colors may also be given convenient tag names.\n \"orange\": parse(\"\"),\n\n # User-defined tags always take precedence over existing tags.\n \"bold\": parse(\"\")\n }\n\n am = AnsiMarkup(tags=user_tags)\n\n am.parse(\"bold green\")\n am.ansiprint(\"red\")\n\n # Calling the instance is equivalent to calling its parse method.\n am(\"bold\") == am.parse(\"bold\")\n\n\nAlignment and length\n~~~~~~~~~~~~~~~~~~~~\n\nAligning formatted strings can be challenging because the length of the rendered\nstring is different that the number of printable characters. Consider this example:\n\n.. code-block:: python\n\n >>> a = '| {:30} |'.format('abc')\n >>> b = '| {:30} |'.format(parse('abc'))\n >>> print(a, b, sep='\\n')\n | abc |\n | abc |\n\nThis can be addressed by using the ``ansistring`` function or the\n``AnsiMarkup.string(markup)`` method, which has the following useful properties:\n\n.. code-block:: python\n\n >>> s = ansistring('abc')\n >>> print(repr(s), '->', s)\n abc -> abc # abc is printed in bold\n >>> len(s), len(am.parse('abc'), s.delta\n 3, 11, 8\n\nWith the help of the ``delta`` property, it is easy to align the strings in the\nabove example:\n\n.. code-block:: python\n\n >>> s = ansistring('abc')\n >>> a = '| {:{width}} |'.format('abc', width=30)\n >>> b = '| {:{width}} |'.format(s, width=(30 + s.delta))\n >>> print(a, b, sep='\\n')\n | abc |\n | abc |\n\n\nOther features\n~~~~~~~~~~~~~~\n\nThe default tag separators can be changed by passing the ``tag_sep`` argument to\n``AnsiMarkup``:\n\n.. code-block:: python\n\n from ansimarkup import AnsiMarkup\n\n am = AnsiMarkup(tag_sep=\"{}\")\n am.parse(\"{b}{r}bold red{/b}{/r}\")\n\nMarkup tags can be removed using the ``strip()`` method:\n\n.. code-block:: python\n\n from ansimarkup import AnsiMarkup\n\n am = AnsiMarkup()\n am.strip(\"bold red\")\n\nThe ``strict`` option instructs the parser to raise ``MismatchedTag`` if opening\ntags don't have corresponding closing tags:\n\n.. code-block:: python\n\n from ansimarkup import AnsiMarkup\n\n am = AnsiMarkup(strict=True)\n am.parse(\"bold red\")\n # ansimarkup.MismatchedTag: opening tag \"\" has no corresponding closing tag\n\n\nCommand-line\n~~~~~~~~~~~~\n\nAnsimarkup may also be used on the command-line. This works as if all\narguments were passed to ``ansiprint()``::\n\n $ python -m ansimarkup \"bold\" \"red\"\n\n\nLogging formatter\n~~~~~~~~~~~~~~~~~\n\nAnsimarkup also comes with a formatter for the standard library `logging`\nmodule. It can be used as:\n\n.. code-block:: python\n\n import logging\n from ansimarkup.logformatter import AnsiMarkupFormatter\n\n log = logging.getLogger()\n hdl = logging.StreamHandler()\n fmt = AnsiMarkupFormatter()\n hdl.setFormatter(fmt)\n log.addHandler(hdl)\n\n log.info(\"bold text\")\n\n\nWindows\n~~~~~~~\n\nAnsimarkup uses the colorama_ library internally, which means that Windows\nsupport for ansi escape sequences is available by first running:\n\n.. code-block:: python\n\n import colorama\n colorama.init()\n\nFor more information on Windows support, consult the \"Usage\" section of the\ncolorama_ documentation.\n\n\nPerformance\n-----------\n\nWhile the focus of ansimarkup is convenience, it does try to keep processing to\na minimum. The `benchmark.py`_ script attempts to benchmark different ansi\nescape code libraries::\n\n Benchmark 1: red bold\n colorama 0.2998 \u03bcs\n termcolor 3.2339 \u03bcs\n colr 3.6483 \u03bcs\n ansimarkup 6.8679 \u03bcs\n pastel 28.8538 \u03bcs\n plumbum 53.5004 \u03bcs\n\n Benchmark 2: red boldredbold\n colorama 0.8269 \u03bcs\n termcolor 8.9296 \u03bcs\n ansimarkup 9.3099 \u03bcs\n colr 9.6244 \u03bcs\n pastel 62.2018 \u03bcs\n plumbum 120.8048 \u03bcs\n\n\nLimitations\n-----------\n\nAnsimarkup is a simple wrapper around colorama. It does very little in the way\nof validating that markup strings are well-formed. This is a conscious decision\nwith the goal of keeping things simple and fast.\n\nUnbalanced nesting, such as in the following example, will produce incorrect\noutput::\n\n 12\n\n\nTodo\n----\n\n- Many corner cases remain to be fixed.\n\n- More elaborate testing. The current test suite mostly covers the\n \"happy paths\".\n\n- Replace ``tag_list.index`` in ``sub_end`` with something more\n efficient (i.e. something like an ordered MultiDict).\n\n\nSimilar libraries\n-----------------\n\n- pastel_: bring colors to your terminal\n- `plumbum.colors`_: small yet feature-rich library for shell script-like programs in Python\n- colr_: easy terminal colors, with chainable methods\n\n\nLicense\n-------\n\nAnsimarkup is released under the terms of the `Revised BSD License`_.\n\n\n.. |pypi| image:: https://img.shields.io/pypi/v/ansimarkup.svg?style=flat-square&label=latest%20stable%20version\n :target: https://pypi.python.org/pypi/ansimarkup\n :alt: Latest version released on PyPi\n\n.. |license| image:: https://img.shields.io/pypi/l/ansimarkup.svg?style=flat-square&label=license\n :target: https://pypi.python.org/pypi/ansimarkup\n :alt: BSD 3-Clause\n\n.. |build| image:: https://img.shields.io/travis/gvalkov/python-ansimarkup/master.svg?style=flat-square&label=build\n :target: http://travis-ci.org/gvalkov/python-ansimarkup\n :alt: Build status\n\n\n.. _tags.py: https://github.com/gvalkov/python-ansimarkup/blob/master/ansimarkup/tags.py\n.. _benchmark.py: https://github.com/gvalkov/python-ansimarkup/blob/master/tests/benchmark.py\n\n.. _colorama: https://pypi.python.org/pypi/colorama\n.. _pastel: https://github.com/sdispater/pastel\n.. _plumbum.colors: https://plumbum.readthedocs.io/en/latest/cli.html#colors\n.. _colr: https://pypi.python.org/pypi/Colr/\n.. _`Revised BSD License`: https://raw.github.com/gvalkov/python-ansimarkup/master/LICENSE\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gvalkov/python-ansimarkup", "keywords": "ansi terminal markup", "license": "Revised BSD License", "maintainer": "", "maintainer_email": "", "name": "ansimarkup", "package_url": "https://pypi.org/project/ansimarkup/", "platform": "", "project_url": "https://pypi.org/project/ansimarkup/", "project_urls": { "Homepage": "https://github.com/gvalkov/python-ansimarkup" }, "release_url": "https://pypi.org/project/ansimarkup/1.4.0/", "requires_dist": null, "requires_python": "", "summary": "Produce colored terminal text with an xml-like markup", "version": "1.4.0" }, "last_serial": 3808228, "releases": { "0.0.0": [], "0.1.0": [ { "comment_text": "", "digests": { "md5": "ec3eb382e8f9bfd9b45cf29f27c828e7", "sha256": "d38e1d0613ae6328a670246b81cd95033a64df6878bb7ff59413a4939a5d70df" }, "downloads": -1, "filename": "ansimarkup-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ec3eb382e8f9bfd9b45cf29f27c828e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5847, "upload_time": "2017-02-11T18:44:51", "url": "https://files.pythonhosted.org/packages/6d/72/5f95093e01e849c66b19bf4808e2ba3fb781ca4e0b82f04af76805d168a9/ansimarkup-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d9ec9263a813e4f25c97d032802e2196", "sha256": "283325fcbd5023e6060b0e870980d1dd5fc6e29c679d8f36dd49b21049d7f431" }, "downloads": -1, "filename": "ansimarkup-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d9ec9263a813e4f25c97d032802e2196", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 7854, "upload_time": "2017-02-11T18:51:26", "url": "https://files.pythonhosted.org/packages/85/6c/dd08c191044aa001380a294031e5d726c1aab8654285bde44c18f5c72fda/ansimarkup-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "16d75a03aa8636b128331bbaa2427ab9", "sha256": "9d78cf74fe6172b6dde5360918bed200c6393f8f171bb9ab3d4c6431abd342fb" }, "downloads": -1, "filename": "ansimarkup-0.1.1.tar.gz", "has_sig": false, "md5_digest": "16d75a03aa8636b128331bbaa2427ab9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5836, "upload_time": "2017-02-11T18:51:06", "url": "https://files.pythonhosted.org/packages/ac/cb/adfa228c606b009ce1a41282c1af220752454e81fc131fbf89465482d295/ansimarkup-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "c8d40ba93831c88241f0de30db9364c1", "sha256": "7bc72e67f66f450e51d94cecf0317ecf07886bfb3583abd3929a3b918831a4ab" }, "downloads": -1, "filename": "ansimarkup-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c8d40ba93831c88241f0de30db9364c1", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 10210, "upload_time": "2017-02-12T14:03:44", "url": "https://files.pythonhosted.org/packages/ba/39/c0cc42c11da7d41e371f41ddf1f213bebaf0d29b75d2eaeb235891e578b8/ansimarkup-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d3ba99c5309961f33aecb15430abd4c", "sha256": "081e85e6a3dfd914adf289e2fc1b1217d8e6bef24c4e5e6ae08af378ee3143df" }, "downloads": -1, "filename": "ansimarkup-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1d3ba99c5309961f33aecb15430abd4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7288, "upload_time": "2017-02-12T14:03:37", "url": "https://files.pythonhosted.org/packages/0a/0a/5fe62e409f3c8e7440a8375097118f57e454c5782cbb4e178322ef2d3717/ansimarkup-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "3016a00a20bfde669a2f89ecc555cc4f", "sha256": "ed8c2096f18ccc27f566625bd38f3d39c2d8aa67ae516a149fbfb0a86f6bf5fa" }, "downloads": -1, "filename": "ansimarkup-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3016a00a20bfde669a2f89ecc555cc4f", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 11699, "upload_time": "2017-02-19T17:09:05", "url": "https://files.pythonhosted.org/packages/70/8f/c6b4669bf584dc6fdda29d03b95363fa7587ff36000d91eb2f7d70c55801/ansimarkup-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6f34d0014b2b6d35c85cf968411217b", "sha256": "a8ac61a179a8cc700dd9f95a900c8dc43648f6db1530cc1874718b1f05c4de05" }, "downloads": -1, "filename": "ansimarkup-0.3.0.tar.gz", "has_sig": false, "md5_digest": "a6f34d0014b2b6d35c85cf968411217b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8371, "upload_time": "2017-02-19T17:08:58", "url": "https://files.pythonhosted.org/packages/38/de/f431759829ffae173263dafbfddb6c61c1492ce99ca276ad7683d784617a/ansimarkup-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "a99536833b7ab0900a9bb0e8aab869c4", "sha256": "f76a1139b785bf223d870fa058d1cb55065f030f6b95100f73f3abc348f80c9c" }, "downloads": -1, "filename": "ansimarkup-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a99536833b7ab0900a9bb0e8aab869c4", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 12164, "upload_time": "2017-04-02T12:48:44", "url": "https://files.pythonhosted.org/packages/26/5d/604996e3abef7a75ebd08e0600fcb88d45bb67479743a59ecd23469a1087/ansimarkup-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dea3555e440cc6c524ae77699da7315a", "sha256": "81de4216f9327ebd93a5f6b0f17e5c99307e8f28eac9af1fdd187d0458a17b17" }, "downloads": -1, "filename": "ansimarkup-0.4.0.tar.gz", "has_sig": false, "md5_digest": "dea3555e440cc6c524ae77699da7315a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8734, "upload_time": "2017-04-02T12:48:40", "url": "https://files.pythonhosted.org/packages/5e/3f/6bcb4e136f0fcd0c9883bd50b6f8351db2cd1a215bd3c638a0347516f149/ansimarkup-0.4.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "dce908680b82e3bf1da48386af452fb8", "sha256": "3b24274ad3d7009a18fe78ff13b6d3122edd02e64fb86a167d67f150862d5779" }, "downloads": -1, "filename": "ansimarkup-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dce908680b82e3bf1da48386af452fb8", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 12167, "upload_time": "2017-05-20T21:32:28", "url": "https://files.pythonhosted.org/packages/1b/51/fcb5891ddbd77d90450202d1ec9636b76ae9b6c28dd95db9337d51357280/ansimarkup-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1f6887de7ce51fbf38c024b6e8e798ee", "sha256": "e9a23a3c259acad157c69281e1733292b148e4308e78fd097842094943f53905" }, "downloads": -1, "filename": "ansimarkup-1.0.0.tar.gz", "has_sig": false, "md5_digest": "1f6887de7ce51fbf38c024b6e8e798ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8756, "upload_time": "2017-05-20T21:32:21", "url": "https://files.pythonhosted.org/packages/69/a1/1318c5a30b71d59194a4e01ff3a847fb755708a7f6ee976e5cc59651b984/ansimarkup-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "ac1eb1024ffcde1aef643b1e1857c75f", "sha256": "e3d9216d01aea8a9a6a4d4f1f943c732705f0a01e13ab72bd66aac4c499a51da" }, "downloads": -1, "filename": "ansimarkup-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ac1eb1024ffcde1aef643b1e1857c75f", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12615, "upload_time": "2017-08-06T18:12:05", "url": "https://files.pythonhosted.org/packages/1a/4d/2faa9cd5f6063904b6d3fa49abecf2d9f78843c3c6091fcf6d222b77473e/ansimarkup-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "96754585f420a8ee9417d38de8a0c90a", "sha256": "6fd3a9bef886b07839f9b04501f4f82863aba439c8dae526585c082607574ef7" }, "downloads": -1, "filename": "ansimarkup-1.1.0.tar.gz", "has_sig": false, "md5_digest": "96754585f420a8ee9417d38de8a0c90a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9178, "upload_time": "2017-08-06T18:11:58", "url": "https://files.pythonhosted.org/packages/dc/91/c376cac274f7fd042b96200a71f692609ad678166890b500887898ccd383/ansimarkup-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "24da24d2c5746dfef3a7e18e5e45dbff", "sha256": "6ee4cf2b35a2db6a408f95b5f778ffea314749dc3387eccc5285c967e6e70a9a" }, "downloads": -1, "filename": "ansimarkup-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "24da24d2c5746dfef3a7e18e5e45dbff", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12616, "upload_time": "2017-09-02T11:08:56", "url": "https://files.pythonhosted.org/packages/1b/72/513e46fe5e6c4350aba0b8efb69568e8b3770ad85ba4f7b39404d2626833/ansimarkup-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2ea680425bc28a069cc3f58b89d4369f", "sha256": "1910408423c1c22230cdd354947222c2b8ba7f855491f3d9f4c588b0f32c9a1a" }, "downloads": -1, "filename": "ansimarkup-1.2.0.tar.gz", "has_sig": false, "md5_digest": "2ea680425bc28a069cc3f58b89d4369f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9180, "upload_time": "2017-09-02T11:08:53", "url": "https://files.pythonhosted.org/packages/de/2c/ae3d13ad85dc194e577c7720aed726d789fd26f5d9d150fd4ad32176b875/ansimarkup-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "bf5b5db6d0b63e1ef63006d901b3ff5a", "sha256": "1ed2f2551b63eb7847a3635d421a9f77e269dffa1eaf21529f689ea1ec162e97" }, "downloads": -1, "filename": "ansimarkup-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bf5b5db6d0b63e1ef63006d901b3ff5a", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 13046, "upload_time": "2017-09-09T13:28:00", "url": "https://files.pythonhosted.org/packages/90/92/0a6a328ee09bd3cc57705769d0fcb2c9afb4c84ef9df3b7ee2d700793ad0/ansimarkup-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0db8500514235a8bd75a6dc1023dcae6", "sha256": "6e071a5cdb6824362f2b6a8699ab88e07114ba5e0d480a55e872b746b81c86ff" }, "downloads": -1, "filename": "ansimarkup-1.3.0.tar.gz", "has_sig": false, "md5_digest": "0db8500514235a8bd75a6dc1023dcae6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9407, "upload_time": "2017-09-09T13:27:59", "url": "https://files.pythonhosted.org/packages/a6/92/9aa2b983207dab0ca81bcaebe38954014d7ef35b649127432ba2c620a5a5/ansimarkup-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "e0bc6ad975cdd0c6dd752104ccf5dcf7", "sha256": "06365e3ef89a12734fc408b2449cb4642d5fe2e603e95e7296eff9e98a0fe0b4" }, "downloads": -1, "filename": "ansimarkup-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e0bc6ad975cdd0c6dd752104ccf5dcf7", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 14454, "upload_time": "2018-04-25T21:38:18", "url": "https://files.pythonhosted.org/packages/8f/3b/be9c9da51fc950c58f64221676f5d2972a4003dc4ac05642cb6d279a281a/ansimarkup-1.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "30b1f5134206b08e025312b623ee7a2b", "sha256": "174d920481416cec8d5a707af542d6fba25a1df1c21d8996479c32ba453649a4" }, "downloads": -1, "filename": "ansimarkup-1.4.0.tar.gz", "has_sig": false, "md5_digest": "30b1f5134206b08e025312b623ee7a2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11325, "upload_time": "2018-04-25T21:38:16", "url": "https://files.pythonhosted.org/packages/26/36/57272102d00be2f8c173c8ebdcff95eff067b486e3041fd7a0de71e91700/ansimarkup-1.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e0bc6ad975cdd0c6dd752104ccf5dcf7", "sha256": "06365e3ef89a12734fc408b2449cb4642d5fe2e603e95e7296eff9e98a0fe0b4" }, "downloads": -1, "filename": "ansimarkup-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e0bc6ad975cdd0c6dd752104ccf5dcf7", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 14454, "upload_time": "2018-04-25T21:38:18", "url": "https://files.pythonhosted.org/packages/8f/3b/be9c9da51fc950c58f64221676f5d2972a4003dc4ac05642cb6d279a281a/ansimarkup-1.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "30b1f5134206b08e025312b623ee7a2b", "sha256": "174d920481416cec8d5a707af542d6fba25a1df1c21d8996479c32ba453649a4" }, "downloads": -1, "filename": "ansimarkup-1.4.0.tar.gz", "has_sig": false, "md5_digest": "30b1f5134206b08e025312b623ee7a2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11325, "upload_time": "2018-04-25T21:38:16", "url": "https://files.pythonhosted.org/packages/26/36/57272102d00be2f8c173c8ebdcff95eff067b486e3041fd7a0de71e91700/ansimarkup-1.4.0.tar.gz" } ] }