{ "info": { "author": "Ken Kundert", "author_email": "inform@nurdletech.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Natural Language :: English", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Utilities" ], "description": "Inform \u2014 Print & Logging Utilities\n==================================\n\n.. image:: https://img.shields.io/travis/KenKundert/inform/master.svg\n :target: https://travis-ci.org/KenKundert/inform\n\n.. image:: https://img.shields.io/coveralls/KenKundert/inform.svg\n :target: https://coveralls.io/r/KenKundert/inform\n\n.. image:: https://img.shields.io/pypi/v/inform.svg\n :target: https://pypi.python.org/pypi/inform\n\n.. image:: https://img.shields.io/pypi/pyversions/inform.svg\n :target: https://pypi.python.org/pypi/inform/\n\n.. IGNORE: pypi statistics are broken and unlikely to be fixed\n .. image:: https://img.shields.io/pypi/dd/inform.svg\n :target: https://pypi.python.org/pypi/inform/\n\n:Author: Ken Kundert\n:Version: 1.19.0\n:Released: 2019-09-25\n\nA light-weight package with few dependencies that provides specialized print \nfunctions that are used when communicating with the user. It allows you to \neasily print attractive, informative, and consistent error messages. For \nexample:\n\n.. code-block:: python\n\n >> from inform import display, warn, error\n >> display(\n .. 'Display is like print'\n .. 'except that it supports logging and can be disabled.'\n .. sep=', ')\n Display is like print, except that it supports logging and can be disabled.\n\n >> warn('warnings get a header that is printed in yellow.')\n warning: warnings get a header that is printed in yellow.\n\n >> error('errors get a header that is printed in red.')\n error: errors get a header that is printed in red.\n\nInform also provides logging and output control.\n\nIn addition, Inform provides a powerful generic exception that can be used \ndirectly as a general purpose exception, or can be subclassed to produce \npowerful specialized exceptions. Inform exceptions are unique in that they keep \nall of the named and unnamed arguments so they can be used when reporting \nerrors.\n\nYou can find the documentation on `ReadTheDocs\n`_. You can download and install the latest\nstable version of the code from `PyPI `_ using::\n\n pip3 install --user --upgrade inform\n\nYou can find the latest development version of the source code on\n`Github `_.\n\nSupported in Python2.7, Python3.5, Python3.6, Python3.7 and Python3.8.\n\n\nIntroduction\n------------\n\nThis package defines a collection of *print* functions that have different \nroles. These functions are referred to as *informants* and are described below \nin the Informants section. They include include *log*, *comment*, *codicil*, \n*narrate*, *display*, *output*, *notify*, *debug*, *warn*, *error*, *fatal* and \n*panic*.\n\nWith the simplest use of the program, you simply import the informants you need \nand call them (they take the same arguments as Python's built-in *print* \nfunction):\n\n.. code-block:: python\n\n >>> from inform import display\n >>> display('ice', 9)\n ice 9\n\nFor more control of the informants, you can import and instantiate the Inform \nclass yourself along with the desired informants. This gives you the ability to \nspecify options:\n\n.. code-block:: python\n\n >>> from inform import Inform, display, error\n >>> Inform(logfile=False, prog_name=False)\n <...>\n >>> display('hello')\n hello\n >>> error('file not found.', culprit='data.in')\n error: data.in: file not found.\n\nAn object of the Inform class is referred to as an informer (not to be confused \nwith the print functions, which are referred to as informants). Once \ninstantiated, you can use the informer to change various settings, terminate the \nprogram, or return a count of the number of errors that have occurred.\n\n.. code-block:: python\n\n >>> from inform import Inform, error\n >>> informer = Inform(prog_name=\"prog\")\n >>> error('file not found.', culprit='data.in')\n prog error: data.in: file not found.\n >>> informer.errors_accrued()\n 1\n\nYou can create your own informants:\n\n.. code-block:: python\n\n >>> from inform import Inform, InformantFactory\n\n >>> verbose1 = InformantFactory(output=lambda m: m.verbosity >= 1)\n >>> verbose2 = InformantFactory(output=lambda m: m.verbosity >= 2)\n >>> with Inform(verbosity=0):\n ... verbose1('First level of verbosity.')\n ... verbose2('Second level of verbosity.')\n\n >>> with Inform(verbosity=1):\n ... verbose1('First level of verbosity.')\n ... verbose2('Second level of verbosity.')\n First level of verbosity.\n\n >>> with Inform(verbosity=2):\n ... verbose1('First level of verbosity.')\n ... verbose2('Second level of verbosity.')\n First level of verbosity.\n Second level of verbosity.\n\nThe argument *verbosity* is not an explicitly supported argument to Inform. In \nthis case Inform simply saves the value and makes it available as an attribute, \nand it is this attribute that is queried by the lambda function passed to the \nInformantFactory when creating the informants.\n\n\nException\n---------\nAn exception, *Error*, is provided that takes the same arguments as an \ninformant. This allows you to catch the exception and handle it if you like. \nThe exception provides the *report* and *terminate* methods that processes the \nexception as an error or fatal error if you find that you can do nothing else \nwith the exception:\n\n.. code-block:: python\n\n >>> from inform import Inform, Error\n\n >>> Inform(prog_name='myprog')\n <...>\n >>> try:\n ... raise Error('must not be zero.', culprit='naught')\n ... except Error as e:\n ... e.report()\n myprog error: naught: must not be zero.\n\n*Error* also provides get_message() and get_culprit() methods, which return the \nmessage and the culprit. You can also cast the exception to a string to get \na string that contains both the message and the culprit formatted so that it can \nbe shown to the user.\n\nAny keyword arguments provided will be available in *e.kwargs*, but certain \nkeyword arguments are reserved by inform (see above).\n\nOne common approach to using *Error* is to pass all the arguments that make up \nthe error message as unnamed arguments and then assemble them into the message \nby providing a template. In that way the arguments are directly available to \nthe handler if needed. For example:\n\n.. code-block:: python\n\n >>> from difflib import get_close_matches\n >>> from inform import Error, codicil, conjoin, fmt\n\n >>> known_names = 'alpha beta gamma delta epsilon'.split()\n >>> name = 'alfa'\n\n >>> try:\n ... if name not in known_names:\n ... raise Error(name, template=\"name '{}' is not defined.\")\n ... except Error as e:\n ... candidates = get_close_matches(e.args[0], known_names, 1, 0.6)\n ... candidates = conjoin(candidates, conj=' or ')\n ... e.report()\n ... codicil(fmt('Did you mean {candidates}?'))\n myprog error: name 'alfa' is not defined.\n Did you mean alpha?\n\n\nUtilities\n---------\n\nSeveral utility functions are provided for your convenience. They are often \nhelpful when creating messages.\n\nindent:\n Indents the text.\n\nconjoin:\n Like ''.join(), but allows you to specify a conjunction that is placed \n between the last two elements, ex:\n\n .. code-block:: python\n\n >>> from inform import conjoin\n >>> conjoin(['a', 'b', 'c'])\n 'a, b and c'\n\n >>> conjoin(['a', 'b', 'c'], conj=' or ')\n 'a, b or c'\n\ncull:\n Strips items from a collection that have a particular value.\n\njoin:\n Combines the arguments in a manner very similar to an informant and returns \n the result as a string.\n\nfmt:\n Similar to ''.format(), but it can pull arguments from the local scope.\n\nrender:\n Recursively convert an object to a string with reasonable formatting. Has \n built in support for the base Python types (None, bool, int, float, str, \n set, tuple, list, and dict). If you confine yourself to these types, the \n output of render() can be read by the Python interpreter. Other types are \n converted to string with repr().\n\nplural:\n Produces either the singular or plural form of a word based on a count.\n\nfull_stop:\n Adds a period to the end of the string if needed (if the last character is \n not a period, question mark or exclamation mark).\n\ncolumns:\n Distribute array over enough columns to fill the screen.\n\nos_error:\n Generates clean messages for operating system errors.\n\nis_str:\n Returns *True* if its argument is a string-like object.\n\nis_iterable:\n Returns *True* if its argument is iterable.\n\nis_collection:\n Returns *True* if its argument is iterable but is not a string.\n\nis_mapping:\n Returns *True* if its argument is a mapping (are dictionary like).\n\nFor example:\n\n.. code-block:: python\n\n >>> from inform import Inform, display, error, conjoin, cull, fmt, os_error\n\n >>> Inform(prog_name=False)\n <...>\n >>> filenames = cull(['a', 'b', None, 'd'])\n >>> filetype = 'CSV'\n >>> display(\n ... fmt(\n ... 'Reading {filetype} files: {names}.',\n ... names=conjoin(filenames),\n ... )\n ... )\n Reading CSV files: a, b and d.\n\n >>> contents = {}\n >>> for name in filenames:\n ... try:\n ... with open(name) as f:\n ... contents[name] = f.read()\n ... except IOError as e:\n ... error(os_error(e))\n error: a: no such file or directory.\n error: b: no such file or directory.\n error: d: no such file or directory.\n\nNotice that *filetype* was not explicitly passed into *fmt()* even though it was \nexplicitly called out in the format string. *filetype* can be left out of the \nargument list because if *fmt* does not find a named argument in its argument \nlist, it will look for a variable of the same name in the local scope.\n\nHere is an example of render():\n\n.. code-block:: python\n\n >>> from inform import render, display\n >>> s1='alpha string'\n >>> s2='beta string'\n >>> n=42\n >>> S={s1, s2}\n >>> L=[s1, n, S]\n >>> d = {1:s1, 2:s2}\n >>> D={'s': s1, 'n': n, 'S': S, 'L': L, 'd':d}\n >>> display('D', '=', render(D, True))\n D = {\n 'L': [\n 'alpha string',\n 42,\n {'alpha string', 'beta string'},\n ],\n 'S': {'alpha string', 'beta string'},\n 'd': {1: 'alpha string', 2: 'beta string'},\n 'n': 42,\n 's': 'alpha string',\n }\n\nFinally, here is an example of full_stop and columns. It prints out the phonetic \nalphabet.\n\n.. code-block:: python\n\n >>> from inform import columns, full_stop\n >>> title = 'Display the NATO phonetic alphabet'\n >>> words = \"\"\"\n ... Alfa Bravo Charlie Delta Echo Foxtrot Golf Hotel India Juliett Kilo\n ... Lima Mike November Oscar Papa Quebec Romeo Sierra Tango Uniform\n ... Victor Whiskey X-ray Yankee Zulu\n ... \"\"\".split()\n >>> display(full_stop(title), columns(words), sep='\\n')\n Display the NATO phonetic alphabet.\n Alfa Echo India Mike Quebec Uniform Yankee\n Bravo Foxtrot Juliett November Romeo Victor Zulu\n Charlie Golf Kilo Oscar Sierra Whiskey\n Delta Hotel Lima Papa Tango X-ray\n\nDebugging Functions\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nThe debugging functions are intended to be used when you want to print something \nout when debugging your program. They are colorful to make it easier to find \nthem among the program's normal output, and a header is added that describes \nthe location they were called from. This makes it easier to distinguish several \ndebug message and also makes it easy to find and remove the functions once you \nare done debugging.\n\nppp:\n This function is very similar to the normal Python print function.\n\n .. code:: python\n\n >>> from inform import ppp, ddd, sss, vvv\n >>> a = 1\n >>> b = 'this is a test'\n >>> c = (2, 3)\n >>> d = {'a': a, 'b': b, 'c': c}\n >>> ppp(a, b, c)\n DEBUG: , 1, __main__: 1 this is a test (2, 3)\n\nddd:\n This function is pretty prints all of both the unnamed and named arguments.\n\n .. code:: python\n\n >>> ddd(a, b, c=c, d=d)\n DEBUG: , 1, __main__:\n 1\n 'this is a test'\n c = (2, 3)\n d = {\n 'a': 1,\n 'b': 'this is a test',\n 'c': (2, 3),\n }\n\n If you give named arguments, the name is prepended to its value.\n\n\nvvv:\n This function prints variables from the calling scope. If no arguments are \n given, then all the variables are printed. You can optionally give specific \n variables on the argument list and only those variables are printed.\n\n .. code:: python\n\n >>> vvv(b, d)\n DEBUG: , 1, __main__:\n b = 'this is a test'\n d = {\n 'a': 1,\n 'b': 'this is a test',\n 'c': (2, 3),\n }\n\n\nsss:\n This function prints a stack trace, which can answer the *How did I get \n here?* question better than a simple print function.\n\n .. code:: python\n\n >> def foo():\n .. sss()\n .. print('CONTINUING')\n\n >> foo()\n DEBUG: :2, __main__.foo():\n Traceback (most recent call last):\n ...\n CONTINUING\n\n\nColor Class\n\"\"\"\"\"\"\"\"\"\"\"\n\nThe Color class creates colorizers, which are used to render text in \na particular color. They are like the Python print function in that they take \nany number of unnamed arguments that are converted to strings and then joined \ninto a single string. The string is then coded for the chosen color and \nreturned. For example:\n\n.. code-block:: python\n\n >> from inform import Color, display\n\n >> green = Color('green')\n >> red = Color('red')\n >> success = green('pass:')\n >> failure = red('FAIL:')\n\n >> failures = {'outrigger': True, 'signalman': False}\n >> for name, fails in failures.items():\n .. result = failure if fails else success\n .. display(result, name)\n FAIL: outrigger\n pass: signalman\n\nWhen the messages print, the 'pass:' will be green and 'FAIL:' will be red.", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/kenkundert/inform/tarball/master", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://inform.readthedocs.io", "keywords": "inform,logging,printing", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "inform", "package_url": "https://pypi.org/project/inform/", "platform": "", "project_url": "https://pypi.org/project/inform/", "project_urls": { "Download": "https://github.com/kenkundert/inform/tarball/master", "Homepage": "https://inform.readthedocs.io" }, "release_url": "https://pypi.org/project/inform/1.19.0/", "requires_dist": null, "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*", "summary": "print & logging utilities for communicating with user", "version": "1.19.0" }, "last_serial": 5888282, "releases": { "1.0.10": [ { "comment_text": "", "digests": { "md5": "da21a5de9b6a084653adfea768866341", "sha256": "ba603504f04dd3df629f6aadbd48bb32e8da3e5523963e88e92508f4bbb31a72" }, "downloads": -1, "filename": "inform-1.0.10.tar.gz", "has_sig": false, "md5_digest": "da21a5de9b6a084653adfea768866341", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25650, "upload_time": "2016-01-22T19:38:14", "url": "https://files.pythonhosted.org/packages/79/2d/03e250a4ef4174984626a2fb0a0c95662a658259897954b4e099f3f55e40/inform-1.0.10.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "aa8fb1e9fef606bef11c7414a9b9c0a7", "sha256": "58cc5192e62c2d3c8f2155dd3dcca0f3ee704907903586c3b2318e753d0aebc1" }, "downloads": -1, "filename": "inform-1.0.5.tar.gz", "has_sig": false, "md5_digest": "aa8fb1e9fef606bef11c7414a9b9c0a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23445, "upload_time": "2016-01-17T00:57:29", "url": "https://files.pythonhosted.org/packages/6a/94/c1520e4f05cdd5c1a393006463b405dd986eee6db7c8752af547c9ca3e1d/inform-1.0.5.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "c6ed992f86afa26ef7b0658b5bfd95f4", "sha256": "f4317fc384052b6e8a2681f077709e64871069296ed37f2cee179eb231c46b02" }, "downloads": -1, "filename": "inform-1.0.7.tar.gz", "has_sig": false, "md5_digest": "c6ed992f86afa26ef7b0658b5bfd95f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23559, "upload_time": "2016-01-19T21:21:20", "url": "https://files.pythonhosted.org/packages/bf/21/57d49951444cfc3a9d4f80e1d3bd72cb3db71719090345b31a8e90f50d55/inform-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "9d9f915a8dd2dcef5e7c968d8a263c9b", "sha256": "e8481025d35d81d480b790d92ea65695a716b4474b24370703c41ef3ecb959ff" }, "downloads": -1, "filename": "inform-1.0.8.tar.gz", "has_sig": false, "md5_digest": "9d9f915a8dd2dcef5e7c968d8a263c9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23554, "upload_time": "2016-01-20T08:46:45", "url": "https://files.pythonhosted.org/packages/fe/cc/645ae570e820e4e07d01acba095caed2a63317d25dddd36b377849a0b338/inform-1.0.8.tar.gz" } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "4e5b308df5b08a0236fb384663ea7271", "sha256": "c39f05ba2e9ff0745229a98dff7c26f7ccfe2e0dd4f9531e00d64499e0cc4c4e" }, "downloads": -1, "filename": "inform-1.0.9.tar.gz", "has_sig": false, "md5_digest": "4e5b308df5b08a0236fb384663ea7271", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24133, "upload_time": "2016-01-20T19:56:36", "url": "https://files.pythonhosted.org/packages/14/80/cd32f334e04fa099ce350f2a1ef31c0a9d96d33ca6d7b0144d6f3dcc8288/inform-1.0.9.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "230152c693251b29be70b46cd9ed9736", "sha256": "153a97475afc30bb18b0d6aa5558d53539a93750b320d02c5229945366da1dfe" }, "downloads": -1, "filename": "inform-1.1.0.tar.gz", "has_sig": false, "md5_digest": "230152c693251b29be70b46cd9ed9736", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26093, "upload_time": "2016-01-22T23:53:05", "url": "https://files.pythonhosted.org/packages/5b/0a/c4fb8e5d728b0055df7701116d18ea5f83255b405dcea2ea8bc459ebbbc3/inform-1.1.0.tar.gz" } ], "1.10.0": [ { "comment_text": "", "digests": { "md5": "43a44b10e058911c71e0ae6af8b10152", "sha256": "f66d4203047f360a2221f980e2982f8eecb2704e94dfa2c8c321122c48f2e3e9" }, "downloads": -1, "filename": "inform-1.10.0.tar.gz", "has_sig": true, "md5_digest": "43a44b10e058911c71e0ae6af8b10152", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43105, "upload_time": "2017-11-22T01:24:04", "url": "https://files.pythonhosted.org/packages/63/f1/f38566c13fe6ddeb22dbae71404ce608cd0826bc23c819eb129eca321ee3/inform-1.10.0.tar.gz" } ], "1.11.0": [ { "comment_text": "", "digests": { "md5": "b16dedfa68ad162d2150df330098410e", "sha256": "6b14cf9a37e9a4568e181f12492d323e617e4a5b1ac5549f02726315ffbbbe9c" }, "downloads": -1, "filename": "inform-1.11.0.tar.gz", "has_sig": true, "md5_digest": "b16dedfa68ad162d2150df330098410e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47977, "upload_time": "2017-12-26T01:21:13", "url": "https://files.pythonhosted.org/packages/c8/ed/3546d6e73a57560ada939b0327862a7f67157f5b9aba8204c76253049a0d/inform-1.11.0.tar.gz" } ], "1.12.0": [ { "comment_text": "", "digests": { "md5": "95d2ccd935c391390eca2560a2ed23a0", "sha256": "716f0314688145f0fa37bc71eec4c6b27f13b1a2ecabe3fbbf3539f658577c6d" }, "downloads": -1, "filename": "inform-1.12.0.tar.gz", "has_sig": true, "md5_digest": "95d2ccd935c391390eca2560a2ed23a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25659, "upload_time": "2018-02-19T04:39:32", "url": "https://files.pythonhosted.org/packages/8f/8c/b4c01b492dd96e4ce132ba0412ac21b5aa976fa9fa8acd3119c58decc579/inform-1.12.0.tar.gz" } ], "1.13.0": [ { "comment_text": "", "digests": { "md5": "afc6525b7feab7399ddb60637e6be754", "sha256": "d3e7bd5b579a005c6122b1bed953a185718312ca4bc7170de9be659afbd8eb54" }, "downloads": -1, "filename": "inform-1.13.0.tar.gz", "has_sig": true, "md5_digest": "afc6525b7feab7399ddb60637e6be754", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27383, "upload_time": "2018-08-11T17:29:05", "url": "https://files.pythonhosted.org/packages/7d/ea/9c8a563e25e02221ee3143aee25c11c687a07f3b76b71b3ea314e88afe1b/inform-1.13.0.tar.gz" } ], "1.14.0": [ { "comment_text": "", "digests": { "md5": "b5ed6142688aa399d745943110577d51", "sha256": "9012a35ccc523a7f415d74d4adebf00569637f5e17e4613e046ddcb952d8ec81" }, "downloads": -1, "filename": "inform-1.14.0.tar.gz", "has_sig": true, "md5_digest": "b5ed6142688aa399d745943110577d51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30979, "upload_time": "2018-12-04T03:05:40", "url": "https://files.pythonhosted.org/packages/80/be/3e9b62eb6368e3c8ca9455e21805683c72a50d183f853c0b8e79702785d4/inform-1.14.0.tar.gz" } ], "1.15.0": [ { "comment_text": "", "digests": { "md5": "355e59d19b38d833e25e49c6c729b9a6", "sha256": "15814162c32cb245395234767dc6996e13f32623dbaffd94c22af2eab57644b3" }, "downloads": -1, "filename": "inform-1.15.0.tar.gz", "has_sig": false, "md5_digest": "355e59d19b38d833e25e49c6c729b9a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33187, "upload_time": "2019-01-17T07:48:38", "url": "https://files.pythonhosted.org/packages/f4/59/8a2656000140a24e10f335c2b420709551da9cf1918d91066ee10a0fc8d4/inform-1.15.0.tar.gz" } ], "1.16.0": [ { "comment_text": "", "digests": { "md5": "180fdf1103bdfe2f8faf4a150e47dce8", "sha256": "9fa86429435552ecba03eeae34fb2864049b16ad59ac888cb125e49f9ad36632" }, "downloads": -1, "filename": "inform-1.16.0.tar.gz", "has_sig": false, "md5_digest": "180fdf1103bdfe2f8faf4a150e47dce8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32371, "upload_time": "2019-04-28T06:31:36", "url": "https://files.pythonhosted.org/packages/12/a2/93e24d33c94dfc5998c5be1cf641e5c4ccd2d2018474de54babee8c3d438/inform-1.16.0.tar.gz" } ], "1.17.0": [ { "comment_text": "", "digests": { "md5": "9e7c806dd3fbcb2be62a809ee7c4bb7f", "sha256": "86917d82deec3ae2fcbb7ddc4a9077ff4f4ac71cffb1a0bfbdb32da46a585123" }, "downloads": -1, "filename": "inform-1.17.0.tar.gz", "has_sig": false, "md5_digest": "9e7c806dd3fbcb2be62a809ee7c4bb7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34263, "upload_time": "2019-05-16T17:01:44", "url": "https://files.pythonhosted.org/packages/85/e9/31af86718861b123e921e3e14de3b3c5cc3493b47f2046f43db8c60823b0/inform-1.17.0.tar.gz" } ], "1.18.0": [ { "comment_text": "", "digests": { "md5": "673cefd91abcff3dee5b533bd61cfecd", "sha256": "660036f77523d9dea9f4c4556fb22728d6579a2266454ce16c829c88d64a454a" }, "downloads": -1, "filename": "inform-1.18.0.tar.gz", "has_sig": true, "md5_digest": "673cefd91abcff3dee5b533bd61cfecd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33502, "upload_time": "2019-08-11T01:41:59", "url": "https://files.pythonhosted.org/packages/5c/d6/8c2712e2bfd9a31fa4e22ee151131b1a2b3008f55eb4c822ec5dd782492a/inform-1.18.0.tar.gz" } ], "1.19.0": [ { "comment_text": "", "digests": { "md5": "7f92f9dd079f814e67487e8dbc818aa1", "sha256": "9c731135d3a608a3d0a5190d339201daeb984bc181269512ee0b8b5b8bfd1d06" }, "downloads": -1, "filename": "inform-1.19.0.tar.gz", "has_sig": false, "md5_digest": "7f92f9dd079f814e67487e8dbc818aa1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*", "size": 35028, "upload_time": "2019-09-26T04:06:02", "url": "https://files.pythonhosted.org/packages/59/ae/afe2e5aea5f117ac786fd0b10a716f885a4356d21a7b1d7e1f7b6eb8d8d7/inform-1.19.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "f5075bf154cf1d7699a5224e8cc3b8d1", "sha256": "afeee0fa820a83df75ccad9849c775909600be34fa1a4aba24f98079dd097e9d" }, "downloads": -1, "filename": "inform-1.2.1.tar.gz", "has_sig": false, "md5_digest": "f5075bf154cf1d7699a5224e8cc3b8d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26410, "upload_time": "2016-01-29T09:05:57", "url": "https://files.pythonhosted.org/packages/e0/49/1a0d21ef94df87fd6820cc283048731d7a9e1104e9f75867ad5b09941edc/inform-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "6a51d956ccdcc478ddbe9104c6aa8960", "sha256": "f8c9a2a321ebcd312621d377b38ddc3d75f709da0c40d990522d8aded60fd9f9" }, "downloads": -1, "filename": "inform-1.2.2.tar.gz", "has_sig": false, "md5_digest": "6a51d956ccdcc478ddbe9104c6aa8960", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26410, "upload_time": "2016-01-31T09:10:07", "url": "https://files.pythonhosted.org/packages/ed/51/71712b9f96b5c30bffd908f540271925ac6cf64e233c940487f6c736a81c/inform-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "6a45c9cf5fc617c8b10fa2cf57ee66de", "sha256": "a1652e2fd76efcb9575d72744c567fcf43657f17f42ed06f850e6660d963a5ad" }, "downloads": -1, "filename": "inform-1.2.3.tar.gz", "has_sig": false, "md5_digest": "6a45c9cf5fc617c8b10fa2cf57ee66de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26442, "upload_time": "2016-02-01T01:21:26", "url": "https://files.pythonhosted.org/packages/b8/bd/a87ea20f39374667c4170c0e59e398fa76c413d6f3967e5a174478709b2b/inform-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "a3ab7a31a280a8af5d4a8571f727933a", "sha256": "39b82f7ddfcee099ff678bd59333b4974809850fd62c1bbbf866a96d58036ae9" }, "downloads": -1, "filename": "inform-1.2.4.tar.gz", "has_sig": false, "md5_digest": "a3ab7a31a280a8af5d4a8571f727933a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26933, "upload_time": "2016-02-07T00:35:42", "url": "https://files.pythonhosted.org/packages/cd/44/37979bfc30ac43a60da04f88cca509cc614debf7df091f0c5376f3c6f3e9/inform-1.2.4.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "f6220f3dbba8f3c849c66042a1e63720", "sha256": "2afd81cc7b3297f6cd80fe4bdf21489dc924b5923453754dc53e9d03475dc0cd" }, "downloads": -1, "filename": "inform-1.3.0.tar.gz", "has_sig": false, "md5_digest": "f6220f3dbba8f3c849c66042a1e63720", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27754, "upload_time": "2016-02-07T22:26:50", "url": "https://files.pythonhosted.org/packages/94/d6/0c6323e8e9f8f163d75d6532272738ce354e1a1b0f7e2efdcd69a24ac489/inform-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "0acb35ec1a97a0a6bc5d86ef5fbe48b8", "sha256": "a75c93c2d0f48a53ca3035f1afdb7b07a7f74e04d9e386d898ed11e865327923" }, "downloads": -1, "filename": "inform-1.3.1.tar.gz", "has_sig": false, "md5_digest": "0acb35ec1a97a0a6bc5d86ef5fbe48b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27724, "upload_time": "2016-02-08T03:11:54", "url": "https://files.pythonhosted.org/packages/fa/e2/40191b0c85beed69267ae1691b87ed28e3c89ea1c137cf86a0e4060375a7/inform-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "036e8492b4758fccf6704e972461a711", "sha256": "49d51b32e37e0c83e7c4e45e6a5eae08ca93a9f5dea75a2c458847585a6a8b30" }, "downloads": -1, "filename": "inform-1.3.2.tar.gz", "has_sig": false, "md5_digest": "036e8492b4758fccf6704e972461a711", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27895, "upload_time": "2016-02-27T00:56:49", "url": "https://files.pythonhosted.org/packages/af/76/b45c82c81bc4c180dc80a5e5bb34a8d6a5382e6da4b04d8e8ca17977d8ae/inform-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "8f2f0a35d5a7dd437e2d9cbbabdd5c45", "sha256": "1683e3da7f5010883b685b96b12da3453b82595a43666d7d081b14814753b809" }, "downloads": -1, "filename": "inform-1.3.3.tar.gz", "has_sig": false, "md5_digest": "8f2f0a35d5a7dd437e2d9cbbabdd5c45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27974, "upload_time": "2016-02-28T00:45:16", "url": "https://files.pythonhosted.org/packages/e1/c4/67fd0aa179017676c2969101230d1727aa4503c3b11b18b35bbc460c838b/inform-1.3.3.tar.gz" } ], "1.3.4": [ { "comment_text": "", "digests": { "md5": "1e27f7b78398380cb4b39f2600b2bd3a", "sha256": "8d0c2cc8bb1b624c7584d2b11fd905742911003244b01fbb293a90fdc55abfc7" }, "downloads": -1, "filename": "inform-1.3.4.tar.gz", "has_sig": false, "md5_digest": "1e27f7b78398380cb4b39f2600b2bd3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28001, "upload_time": "2016-05-24T07:27:51", "url": "https://files.pythonhosted.org/packages/72/34/e9ad67684c15ab8183a6ad0f82ded5ee3de41404a8e1d66a7388c03a4b00/inform-1.3.4.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "48b4f388cb805ffdf5ba500ac95b1894", "sha256": "cddabbfb9e0ea5b168a5f79548323460ab1f58312420f134d32101967930f504" }, "downloads": -1, "filename": "inform-1.4.0.tar.gz", "has_sig": false, "md5_digest": "48b4f388cb805ffdf5ba500ac95b1894", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29415, "upload_time": "2016-07-19T16:51:40", "url": "https://files.pythonhosted.org/packages/a0/5d/95e01b629853031cdfd13b0a0a0fa08d1e9262aba3c51056f6e88dd1ba21/inform-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "9655715978870d60940859607d0f0572", "sha256": "7e4a5e4403bfafa1c4ef409c75c6e01b71f74f3da8e650b5993a99b0e4ef9183" }, "downloads": -1, "filename": "inform-1.4.1.tar.gz", "has_sig": false, "md5_digest": "9655715978870d60940859607d0f0572", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29763, "upload_time": "2016-09-29T17:01:41", "url": "https://files.pythonhosted.org/packages/f5/00/6e85262cead0261c8c07a8ce8f579dcc0a5b4f5072b58011b60429af3949/inform-1.4.1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "c020fd23048351efe45a6cfd18918cbd", "sha256": "2b7723209aa0d575752932f2efaa35bd9c1d50c7e2b98fb9685a9b2f6867a5d7" }, "downloads": -1, "filename": "inform-1.4.2.tar.gz", "has_sig": false, "md5_digest": "c020fd23048351efe45a6cfd18918cbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29757, "upload_time": "2016-09-29T23:30:59", "url": "https://files.pythonhosted.org/packages/15/f8/c0f8c1404cd1e2adbee42f9c421e776e203f054423d5818f834e33670e8f/inform-1.4.2.tar.gz" } ], "1.4.3": [ { "comment_text": "", "digests": { "md5": "7b805abf53d87b29234dea6fb169b9f1", "sha256": "2eb0e0fac44a35209c4c0d5c921e19590da666d7708bfd39dd2e78af3d7643be" }, "downloads": -1, "filename": "inform-1.4.3.tar.gz", "has_sig": false, "md5_digest": "7b805abf53d87b29234dea6fb169b9f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29862, "upload_time": "2016-09-30T04:56:28", "url": "https://files.pythonhosted.org/packages/f5/53/2452087fe8e88aa2d889fe737a36aa44fd36257221d0c06cd1a657203dda/inform-1.4.3.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "11b8da46bd48ba268650bab4bf4e4268", "sha256": "d5d7e302892a79a46794439c78dea29477764737d4ab16d303b5b28792a981ba" }, "downloads": -1, "filename": "inform-1.5.0.tar.gz", "has_sig": false, "md5_digest": "11b8da46bd48ba268650bab4bf4e4268", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31975, "upload_time": "2016-12-14T19:20:03", "url": "https://files.pythonhosted.org/packages/35/d9/c1f834ea283c42b08e9b15dc51cd535486d7691f60064b76f401fabeada0/inform-1.5.0.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "8f8efaa4ab599b60222b73bc0bd7ab6f", "sha256": "4d9cc1f387eade2dd4855b61ea51715c9e1e9f79565c5c0ec5e16df87e28a05c" }, "downloads": -1, "filename": "inform-1.6.0.tar.gz", "has_sig": false, "md5_digest": "8f8efaa4ab599b60222b73bc0bd7ab6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32180, "upload_time": "2016-12-22T07:46:58", "url": "https://files.pythonhosted.org/packages/ec/d2/a5320fa2793a989fd45650fe4797d5e5d4b611630b059ca46c15708d5c85/inform-1.6.0.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "f9f0f17c1236a1548de28ff0638c443f", "sha256": "bc0da668956d322cbe4338c0a13f693f9583d53b328a9af525b4b657b2833fd3" }, "downloads": -1, "filename": "inform-1.7.0.tar.gz", "has_sig": false, "md5_digest": "f9f0f17c1236a1548de28ff0638c443f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32317, "upload_time": "2017-03-18T07:01:40", "url": "https://files.pythonhosted.org/packages/95/84/d1f15caf37bea3fd45548067afdd8bf2a3e848a86083801b2d0af11cff6e/inform-1.7.0.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "5deb57e45bb5781c838c011e11b4c051", "sha256": "698cde26123979523e1d02f498f34d48713f3f64a4276dc35ce3fefc8874ea1f" }, "downloads": -1, "filename": "inform-1.8.0.tar.gz", "has_sig": true, "md5_digest": "5deb57e45bb5781c838c011e11b4c051", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37917, "upload_time": "2017-03-31T20:53:12", "url": "https://files.pythonhosted.org/packages/05/29/77bd41f67d8cc46457a962320bccd990aa997c268f43d1fa9d91a1527a09/inform-1.8.0.tar.gz" } ], "1.9.0": [ { "comment_text": "", "digests": { "md5": "04782d221f6a33b65dc1a968ec57386d", "sha256": "56e19be84e9012ae7fc77e0baa551b55f393c0d212ecb2d7e304d8f3994741e4" }, "downloads": -1, "filename": "inform-1.9.0.tar.gz", "has_sig": true, "md5_digest": "04782d221f6a33b65dc1a968ec57386d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38034, "upload_time": "2017-04-02T16:33:40", "url": "https://files.pythonhosted.org/packages/17/bb/609b63761cf3dec57f04f6088e17d1127fb207aa89467c6cb9a2d17b01b4/inform-1.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7f92f9dd079f814e67487e8dbc818aa1", "sha256": "9c731135d3a608a3d0a5190d339201daeb984bc181269512ee0b8b5b8bfd1d06" }, "downloads": -1, "filename": "inform-1.19.0.tar.gz", "has_sig": false, "md5_digest": "7f92f9dd079f814e67487e8dbc818aa1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*", "size": 35028, "upload_time": "2019-09-26T04:06:02", "url": "https://files.pythonhosted.org/packages/59/ae/afe2e5aea5f117ac786fd0b10a716f885a4356d21a7b1d7e1f7b6eb8d8d7/inform-1.19.0.tar.gz" } ] }