{ "info": { "author": "Jeff Forcier", "author_email": "jeff@bitprophet.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Pytest", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Testing" ], "description": "\n==============\npytest-relaxed\n==============\n\n``pytest-relaxed`` provides 'relaxed' test discovery for pytest.\n\nIt is the spiritual successor to https://pypi.python.org/pypi/spec, but is\nbuilt for ``pytest`` instead of ``nosetests``, and rethinks some aspects of\nthe design (such as increased ability to opt-in to various behaviors.)\n\n\nRationale\n=========\n\nHas it ever felt strange to you that we put our tests in ``tests/``, then name\nthe files ``test_foo.py``, name the test classes ``TestFoo``, and finally\nname the test methods ``test_foo_bar``? Especially when almost all of the code\ninside of ``tests/`` is, well, *tests*?\n\nThis pytest plugin takes a page from the rest of Python, where you don't have\nto explicitly note public module/class members, but only need to hint as to\nwhich ones are private. By default, all files and objects pytest is told to\nscan will be considered tests; to mark something as not-a-test, simply prefix\nit with an underscore.\n\n\nRelaxed discovery\n=================\n\nThe \"it's a test by default unless underscored\" approach works for files::\n\n tests\n\t\u251c\u2500\u2500 _util.py\n\t\u251c\u2500\u2500 one_module.py\n\t\u2514\u2500\u2500 another_module.py\n\nIt's applied to module members::\n\n def _helper():\n pass\n\n def one_thing():\n assert True\n\n def another_thing():\n assert False\n\n def yet_another():\n assert _helper() == 'something'\n\nAnd to class members::\n\n class SomeObject:\n def behavior_one(self):\n assert True\n\n def another_behavior(self):\n assert False\n\n def _helper(self):\n pass\n\n def it_does_things(self):\n assert self._helper() == 'whatever'\n\nSpecial cases\n-------------\n\nAs you might expect, there are a few more special cases around discovery to\navoid fouling up common test extensions:\n\n- Files named ``conftest.py`` aren't treated as tests, because they do special\n pytest things;\n- Module and class members named ``setup_(module|class|method|function)`` are\n not considered tests, as they are how pytest implements classic/xunit style\n setup and teardown;\n- Objects decorated as fixtures with ``@pytest.fixture`` are, of course,\n also skipped.\n\nBackwards compatibility\n-----------------------\n\nIf you like the idea of pytest-relaxed but have a large test suite, it may be\ndaunting to think about \"upgrading\" it all in one go. It's relatively simple to\narrive at a 'hybrid' test suite where your legacy tests still run normally (as\nlong as they're already pytest-compatible, which is true for most unittest\nsuites) but 'relaxed' style tests also work as expected.\n\n- The only change you'll still have to make is renaming 'helper' files (any\n whose name doesn't start with ``test_``) so their names begin with an\n underscore; then, of course, search and replace any imports of such files.\n- ``pytest-relaxed`` explicitly sidesteps around anything that looks like\n \"classic\" test files (i.e. named ``test_*``), allowing pytest's native\n collection to take effect. Such files should not need any alteration.\n- Our reporter (display) functionality still works pretty well with legacy\n style tests; test prefixes and suffixes are stripped at display time, so\n ``TestMyThing.test_something`` still shows up as if it was written in relaxed\n style: ``MyThing`` w/ nested ``something``.\n\n - However, because we don't *collect* such tests, nesting and other\n features we offer won't work until you've renamed the files to not start\n with ``test_``, and changed any classes to not inherit from\n ``unittest.TestCase`` or similar.\n\n\nNested class organization\n=========================\n\nOn top of the relaxed discovery algorithm, ``pytest-relaxed`` also lets you\norganize tests in a nested fashion, again like the ``spec`` nose plugin or the\ntools that inspired it, such as Ruby's ``rspec``.\n\nThis is purely optional, but we find it's a nice middle ground between having a\nproliferation of files or suffering a large, flat test namespace making it hard\nto see which feature areas have been impacted by a bug (or whatnot).\n\nThe feature is enabled by using nested/inner classes, like so::\n\n class SomeObject:\n def basic_behavior(self):\n assert True\n\n class init:\n \"__init__\"\n\n def no_args_required(self):\n assert True\n\n def accepts_some_arg(self):\n assert True\n\n def sets_up_config(self):\n assert False\n\n class some_method:\n def accepts_whatever_params(self):\n assert False\n\n def base_behavior(self):\n assert True\n\n class when_config_says_foo:\n def it_behaves_like_this(self):\n assert False\n\n class when_config_says_bar:\n def it_behaves_like_this(self):\n assert True\n\nTest discovery on these inner classes is recursive, so you *can* nest them as\ndeeply as you like. Naturally, as with all Python code, sometimes you can have\ntoo much of a good thing...but that's up to you.\n\n.. note::\n If writing Python-2-old-style classes makes you uncomfortable, you can\n write them as e.g. ``class SomethingUnderTest(object):`` - pytest-relaxed\n doesn't actually care. This is (naturally) moot under Python 3.\n\nNested class attributes\n-----------------------\n\nIf you're namespacing your tests via nested classes, you may find yourself\nwanting to reference the enclosing \"scope\" of the outer classes they live in,\nsuch as class attributes. pytest-relaxed automatically copies such attributes\nonto inner classes during the test collection phase, allowing you to write code\nlike this::\n\n class Outer:\n behavior_one = True\n\n def outer_test(self):\n assert self.behavior_one\n\n class Inner:\n behavior_two = True\n\n def inner_test(self):\n assert self.behavior_one and self.behavior_two\n\nNotably:\n\n- The behavior is nested, infinitely, as you might expect;\n- Attributes that look like test classes or methods themselves, are not copied\n (though others, i.e. ones named with a leading underscore, are);\n- Only attributes _not_ already present on the inner class are copied; thus\n inner classes may naturally \"override\" attributes, just as with class\n inheritance.\n\n\nOther test helpers\n==================\n\n``pytest-relaxed`` offers a few other random lightweight test-related utilities\nthat don't merit their own PyPI entries (most ported from ``spec``), such as:\n\n- ``trap``, a decorator for use on test functions and/or test\n helpers/subroutines which is similar to pytest's own ``capsys``/``capfd``\n fixtures in that it allows capture of stdout/err.\n\n - It offers a slightly simpler API: it replaces ``sys.(stdout|stderr)`` with\n ``IO`` objects which can be ``getvalue()``'d as needed.\n - More importantly, it can wrap arbitrary callables, which is useful for\n code-sharing use cases that don't easily fit into the design of fixtures.\n\n- ``raises``, a wrapper around ``pytest.raises`` which works as a decorator,\n similar to the Nose testing tool of the same name.\n\n\nNested output display\n=====================\n\nContinuing in the \"port of ``spec`` / inspired by RSpec and friends\" vein,\n``pytest-relaxed`` greatly enhances pytest's verbose display mode:\n\n- Tests are shown in a nested, tree-like fashion, with 'header' lines shown for\n modules, classes (including nested classes) and so forth.\n- The per-test-result lines thus consist of just the test names, and are\n colorized (similar to the built-in verbose mode) based on\n success/failure/skip.\n- Headers and test names are massaged to look more human-readable, such as\n replacing underscores with spaces.\n\n*Unlike* ``spec``, this functionality doesn't affect normal/non-verbose output\nat all, and can be disabled entirely, allowing you to use the relaxed test\ndiscovery alongside normal pytest verbose display or your favorite pytest\noutput plugins (such as ``pytest-sugar``.)\n\n\nInstallation & use\n==================\n\nAs with most pytest plugins, it's quite simple:\n\n- ``pip install pytest-relaxed``;\n- Tell pytest where your tests live via the ``testpaths`` option; otherwise\n pytest-relaxed will cause pytest to load all of your non-test code as tests!\n- Not required, but **strongly recommended**: configure pytest's default\n filename pattern (``python_files``) to be an unqualified glob (``*``).\n\n - This doesn't impact (our) test discovery, but pytest's assertion\n 'rewriting' (the feature that turns ``assert var == othervar`` into\n ``assert 17 == 2`` during error display) reuses this setting when\n determining which files to manipulate.\n\n- Thus, a recommended ``setup.cfg`` (or ``pytest.ini``, sans the header) is::\n\n [tool:pytest]\n testpaths = tests\n python_files = *\n\n- Write some tests, as exampled above;\n- ``pytest`` to run the tests, and you're done!\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pytest-relaxed.readthedocs.io/", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "pytest-relaxed", "package_url": "https://pypi.org/project/pytest-relaxed/", "platform": "", "project_url": "https://pypi.org/project/pytest-relaxed/", "project_urls": { "Homepage": "https://pytest-relaxed.readthedocs.io/" }, "release_url": "https://pypi.org/project/pytest-relaxed/1.1.5/", "requires_dist": [ "pytest (<5,>=3)", "six (<2,>=1)", "decorator (<5,>=4)" ], "requires_python": "", "summary": "Relaxed test discovery/organization for pytest", "version": "1.1.5" }, "last_serial": 5401650, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "8fc1459bc7e24bd861473c728272f7a5", "sha256": "7765c08c797c3eb48a7bafd2c20cd3e6ea4f85e820169e8655eb96b5e4ce832c" }, "downloads": -1, "filename": "pytest_relaxed-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8fc1459bc7e24bd861473c728272f7a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2435, "upload_time": "2017-04-06T19:41:23", "url": "https://files.pythonhosted.org/packages/2b/d5/4ddaae0d28c651a94b2424d2e36dfb6585b73a330bd867eb2f4b8371cad6/pytest_relaxed-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eaca8673da75537b89c55cc54d1547b8", "sha256": "77b764a8f3f4d7b7184f2eaa20912706fc491a0488291d6828be90b5e5186bc9" }, "downloads": -1, "filename": "pytest-relaxed-0.0.1.tar.gz", "has_sig": false, "md5_digest": "eaca8673da75537b89c55cc54d1547b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2332, "upload_time": "2017-04-06T19:41:25", "url": "https://files.pythonhosted.org/packages/54/5f/8763e081cd7cc8201593170f7c526f03e1294c6fce764a800b35fb744d0f/pytest-relaxed-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "183a59b191bc72eaea18c092baf6713a", "sha256": "7b4e65e20fe9e84e53c7f362bffc6ad29f15dbdcdc2a30c3e38bb5e7ddd5b986" }, "downloads": -1, "filename": "pytest_relaxed-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "183a59b191bc72eaea18c092baf6713a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4882, "upload_time": "2017-04-06T19:54:44", "url": "https://files.pythonhosted.org/packages/de/fe/c9a3484404e2483a9a7a9ed0967af9502b75c2810ba3f305d0b99c2bda71/pytest_relaxed-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b6aecabeea03fbf06b67cfb1ef82c8f8", "sha256": "11c409eb4e8d9ffabf4ebbca55a7ebcb0cea3886242149435058b74495932fdf" }, "downloads": -1, "filename": "pytest-relaxed-0.0.2.tar.gz", "has_sig": false, "md5_digest": "b6aecabeea03fbf06b67cfb1ef82c8f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2807, "upload_time": "2017-04-06T19:54:46", "url": "https://files.pythonhosted.org/packages/ed/bc/9524d09aba4e7f910a80b0902c7df9930febd4b30879ad6d6f587877a06c/pytest-relaxed-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "b8246a24569e080c20e982e92b84242b", "sha256": "2908b5647d9a672b55648f513e7b7f45245efadc7228f7339b1506f4425ec7c0" }, "downloads": -1, "filename": "pytest_relaxed-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b8246a24569e080c20e982e92b84242b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5889, "upload_time": "2017-04-06T20:12:21", "url": "https://files.pythonhosted.org/packages/c0/ea/a6d228b269642c3c2854c770ec3396b480b961bde19d3fe1cdf48060fc42/pytest_relaxed-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6aeab9993f717ac9c4169b42865568e2", "sha256": "47155750c937aa555c410b2ae1316da1b51da703fc923e14915c7ca59923c4f8" }, "downloads": -1, "filename": "pytest-relaxed-0.0.3.tar.gz", "has_sig": false, "md5_digest": "6aeab9993f717ac9c4169b42865568e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3458, "upload_time": "2017-04-06T20:12:22", "url": "https://files.pythonhosted.org/packages/60/f3/301f5f5711e58aac46fe7042ca0037ccc02e2e0a53175385563f3c7a6579/pytest-relaxed-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "00dd9ae35dcf14a2099cf5d610650f2c", "sha256": "9ba0af1bbaff1a004cfc5328d9757b9d1d7a3cb67c53629167f98f9ec8760d13" }, "downloads": -1, "filename": "pytest_relaxed-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "00dd9ae35dcf14a2099cf5d610650f2c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7798, "upload_time": "2017-04-06T20:56:20", "url": "https://files.pythonhosted.org/packages/00/80/e4c787faebc55c96e9d1d05babae138069abc2ceb90760baf5ec17de737e/pytest_relaxed-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "08d505ef15688a2f996011d14436e8d3", "sha256": "52c370daf4cabba302203828540dc92a8da7b6f29387406bc224f37eece92619" }, "downloads": -1, "filename": "pytest-relaxed-0.0.4.tar.gz", "has_sig": false, "md5_digest": "08d505ef15688a2f996011d14436e8d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4911, "upload_time": "2017-04-06T20:56:21", "url": "https://files.pythonhosted.org/packages/44/a1/52bf55d2c6dfe884db5b66430b5d0eefea9fe8e1d3c3a6fc0fb7f80c1da9/pytest-relaxed-0.0.4.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "40c7cb37f409347c53c633130e3d406d", "sha256": "5e3db342b511fc3c7d385d6a3e05ac42ca16dd29d48977f7619f1f1f2441674b" }, "downloads": -1, "filename": "pytest_relaxed-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "40c7cb37f409347c53c633130e3d406d", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 8481, "upload_time": "2017-04-08T01:22:38", "url": "https://files.pythonhosted.org/packages/ec/b4/4f581b6683322a6b1c61449b3f6e9dbae6d49d9b999add849ed5cc70d007/pytest_relaxed-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e1fe29f0fd9b11afe63e271fce2a4219", "sha256": "57f36a47dc05c4b1465477c28522711ce03525bf1b2b6e14623297026b549a1e" }, "downloads": -1, "filename": "pytest-relaxed-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e1fe29f0fd9b11afe63e271fce2a4219", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5303, "upload_time": "2017-04-08T01:22:39", "url": "https://files.pythonhosted.org/packages/3e/b2/93a75afa4975b319559d8b9a7b8bc8ee7ccdcd6e3483c11ca43b51116b02/pytest-relaxed-0.1.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "ae92acfba715a818130540dd0f91c2ec", "sha256": "ad06c79bda3342e2448826c8873040551b3fdc952181f55356db3759048cea2e" }, "downloads": -1, "filename": "pytest_relaxed-1.0.0-py2-none-any.whl", "has_sig": true, "md5_digest": "ae92acfba715a818130540dd0f91c2ec", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 18894, "upload_time": "2017-11-07T01:44:40", "url": "https://files.pythonhosted.org/packages/41/fe/31d9304eb4f10f1c5f82adfff9506f97d69a49336e2531328bbce1628f7d/pytest_relaxed-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a714d2debb9eee1cabd87f7f51778f8", "sha256": "1a26bc92a35fb51263f4c59f8e29e235576dee7dbe4b05c7a70f66676301a4a8" }, "downloads": -1, "filename": "pytest-relaxed-1.0.0.tar.gz", "has_sig": true, "md5_digest": "6a714d2debb9eee1cabd87f7f51778f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23786, "upload_time": "2017-11-07T01:44:44", "url": "https://files.pythonhosted.org/packages/b8/c3/aa956d3626a4c07e002d317125af3d088a01010cf2a2303fcb914bea817e/pytest-relaxed-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "9fdc46fe9d86fba2dc4af37d456c2803", "sha256": "726afabf238e5d7d708bf5979f23729d729742f41be409d7020b5e5502548110" }, "downloads": -1, "filename": "pytest_relaxed-1.0.1-py3-none-any.whl", "has_sig": true, "md5_digest": "9fdc46fe9d86fba2dc4af37d456c2803", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14738, "upload_time": "2018-07-25T00:54:38", "url": "https://files.pythonhosted.org/packages/ee/6c/0274022d05f339748280447e4f1d129406dc976161999c82a7acce754857/pytest_relaxed-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4dd882b9e6430d653048280c96b5e59", "sha256": "5fba7e55c9d11f854d458d60ae35337a59685646adda2de4d57198ec8728109c" }, "downloads": -1, "filename": "pytest-relaxed-1.0.1.tar.gz", "has_sig": true, "md5_digest": "f4dd882b9e6430d653048280c96b5e59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24356, "upload_time": "2018-07-25T00:54:39", "url": "https://files.pythonhosted.org/packages/18/42/1fcb1b320b4d15b3c286ca95e25763551fc12b1c38c516e4868241624e98/pytest-relaxed-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "d1ad239bb0b4bee817f5938801c6d50b", "sha256": "51b65caf9a0e1c566d2fabbd1cd819b6c1d4789558cd3cb2d7211469773bec45" }, "downloads": -1, "filename": "pytest_relaxed-1.0.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "d1ad239bb0b4bee817f5938801c6d50b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14743, "upload_time": "2018-07-25T01:00:55", "url": "https://files.pythonhosted.org/packages/9a/ea/895f2e56ff48f0208e674d69844ee4232f8dc8cec33d8c537c04d77cb41f/pytest_relaxed-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3d19ddd2015aa2638a7c27b3d36cee34", "sha256": "56ac9b72daae1ad140fd64938fa1aa0ac970fea67d5649b830377270e6f77ddd" }, "downloads": -1, "filename": "pytest-relaxed-1.0.2.tar.gz", "has_sig": true, "md5_digest": "3d19ddd2015aa2638a7c27b3d36cee34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24413, "upload_time": "2018-07-25T01:00:57", "url": "https://files.pythonhosted.org/packages/78/31/4c97f3964b645366f5939f16e23fd09482d6209e1d4813a6c9c3664472a2/pytest-relaxed-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "018e14c8bb0a12c832aca9f8a98cfe20", "sha256": "8ff5161dbec49e3a9ada8a42fa565866034610ade8fe3b3142ad182d08f6d4c3" }, "downloads": -1, "filename": "pytest_relaxed-1.1.0-py2-none-any.whl", "has_sig": true, "md5_digest": "018e14c8bb0a12c832aca9f8a98cfe20", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 20529, "upload_time": "2017-11-22T02:24:18", "url": "https://files.pythonhosted.org/packages/d7/fe/638608ffff3207124b11ea7e2b35d31b240cda7b006b46d03057385b5e0e/pytest_relaxed-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c0ec8be0fbd0c2bfe037aef4d3c23c0", "sha256": "7925841b81cd6f1749b9a25e47eb4416706746df695363638b9bdebfc8b220c6" }, "downloads": -1, "filename": "pytest-relaxed-1.1.0.tar.gz", "has_sig": true, "md5_digest": "9c0ec8be0fbd0c2bfe037aef4d3c23c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25942, "upload_time": "2017-11-22T02:24:20", "url": "https://files.pythonhosted.org/packages/df/cb/335f74400df49c8fec36579c8d5b8635ddb3955530051f8b9c31c7ba9984/pytest-relaxed-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "96c423d46f843198cf7a0c2efe7fe69b", "sha256": "a5c257acf685fdcf25c7c249411efb7e825d3f194c27ff6ef0eedc226e74281e" }, "downloads": -1, "filename": "pytest_relaxed-1.1.1-py2-none-any.whl", "has_sig": true, "md5_digest": "96c423d46f843198cf7a0c2efe7fe69b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 20570, "upload_time": "2018-04-16T22:22:24", "url": "https://files.pythonhosted.org/packages/90/2b/d655f88e0c69312faa73a9425f254e57dcb929d155333a8b31e4263a8413/pytest_relaxed-1.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d93e3a517d9056c52316c63813f9ce3e", "sha256": "886155d26d7748bd2a46630f31638b7e37661378b1b537708c17ee5983c7b123" }, "downloads": -1, "filename": "pytest-relaxed-1.1.1.tar.gz", "has_sig": true, "md5_digest": "d93e3a517d9056c52316c63813f9ce3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26759, "upload_time": "2018-04-16T22:22:25", "url": "https://files.pythonhosted.org/packages/2c/f3/c0db1025dc785dcde901bbb1dc6a1fbc0b5de580282462cd61ebefcd2f36/pytest-relaxed-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "9a0d58b1c515fd8dfa9071a01ff7d7da", "sha256": "bb551581bba642caa972cfe770f1c020bb614382f311841cbda6f6a35d76b1aa" }, "downloads": -1, "filename": "pytest_relaxed-1.1.2-py2-none-any.whl", "has_sig": true, "md5_digest": "9a0d58b1c515fd8dfa9071a01ff7d7da", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 20571, "upload_time": "2018-04-16T22:34:08", "url": "https://files.pythonhosted.org/packages/7b/37/3aed9f102ca9eea5726be7a54073fac15403faf3dbdcd71578becf491878/pytest_relaxed-1.1.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "249cee26d8a55abcfdea454db434a7d6", "sha256": "9159d01dcca84d0fcb1f9487d38bf32f8927506a6054a363660c964b9afe9832" }, "downloads": -1, "filename": "pytest-relaxed-1.1.2.tar.gz", "has_sig": true, "md5_digest": "249cee26d8a55abcfdea454db434a7d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26852, "upload_time": "2018-04-16T22:34:09", "url": "https://files.pythonhosted.org/packages/11/5f/b9b0e2cfa388ed9f7aea42bcf589747ef13a0eca80d99b5803ba767b8185/pytest-relaxed-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "ac1a4b7c59f79a76ec83ea268b2d9616", "sha256": "1c5736105563d02c539d3e5107eb65bd7d19d9315ec01516e0fb8f6a8c743643" }, "downloads": -1, "filename": "pytest_relaxed-1.1.3-py3-none-any.whl", "has_sig": true, "md5_digest": "ac1a4b7c59f79a76ec83ea268b2d9616", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15823, "upload_time": "2018-07-25T00:58:36", "url": "https://files.pythonhosted.org/packages/6d/46/8a64a39b7f4a12e5fd501cb0aacacf30c83d5643a4bfbb85ecc7cab63e7c/pytest_relaxed-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d8ff18e0359cfc51a293087fab27c1cd", "sha256": "9fda9cfc38c6de331abfad8311147696de728588df4029da6c61200761c7733c" }, "downloads": -1, "filename": "pytest-relaxed-1.1.3.tar.gz", "has_sig": true, "md5_digest": "d8ff18e0359cfc51a293087fab27c1cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26791, "upload_time": "2018-07-25T00:58:37", "url": "https://files.pythonhosted.org/packages/a2/fa/4e40eb44b364bb94cd4d010a8d630e14cb9986d76b6dc6ae148ccf04c65d/pytest-relaxed-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "71efd611c493ad5b029a4138446b35fe", "sha256": "25ae4dab59434039b1ef26eba3bfe576859f0d444b06594da93f906e22d3f0a9" }, "downloads": -1, "filename": "pytest_relaxed-1.1.4-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "71efd611c493ad5b029a4138446b35fe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15831, "upload_time": "2018-07-25T01:04:07", "url": "https://files.pythonhosted.org/packages/fb/0b/c18e6d1a25ca7cf6765432047c0f9c197a294e27ffc1444301b0aa1310a1/pytest_relaxed-1.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8301fdbe980a4b1cf387e5153be2a02c", "sha256": "511ac473252baa67d5451f7864516e2e8f1acedf0cef71f79d2ed916ee04e146" }, "downloads": -1, "filename": "pytest-relaxed-1.1.4.tar.gz", "has_sig": true, "md5_digest": "8301fdbe980a4b1cf387e5153be2a02c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26854, "upload_time": "2018-07-25T01:04:09", "url": "https://files.pythonhosted.org/packages/87/b8/703b130bba135cbe4c2b191cba45e4dcfed53b9348d87fac5243bac16577/pytest-relaxed-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "9aece442c794c1c878c01cdd1c6d7b41", "sha256": "6f7abea81cf2f5fadeacda5192467c99b0de9221e3f8002d25e2066209702df4" }, "downloads": -1, "filename": "pytest_relaxed-1.1.5-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "9aece442c794c1c878c01cdd1c6d7b41", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15932, "upload_time": "2019-06-14T18:16:24", "url": "https://files.pythonhosted.org/packages/63/e4/1e551d99016cae35e13e441b41a0cf6b0245521a2f803f901ec023c33da5/pytest_relaxed-1.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "86bd9f3ecafe6fcb09c7ec67e2556672", "sha256": "e39a7e5b14e14dfff0de0ad720dfffa740c128d599ab14cfac13f4deb34164a6" }, "downloads": -1, "filename": "pytest-relaxed-1.1.5.tar.gz", "has_sig": true, "md5_digest": "86bd9f3ecafe6fcb09c7ec67e2556672", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26786, "upload_time": "2019-06-14T18:16:26", "url": "https://files.pythonhosted.org/packages/50/8b/a01443d08903d1026c51de5272eaa072a96294d1b1b40d53e5f70d51ae0c/pytest-relaxed-1.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9aece442c794c1c878c01cdd1c6d7b41", "sha256": "6f7abea81cf2f5fadeacda5192467c99b0de9221e3f8002d25e2066209702df4" }, "downloads": -1, "filename": "pytest_relaxed-1.1.5-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "9aece442c794c1c878c01cdd1c6d7b41", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15932, "upload_time": "2019-06-14T18:16:24", "url": "https://files.pythonhosted.org/packages/63/e4/1e551d99016cae35e13e441b41a0cf6b0245521a2f803f901ec023c33da5/pytest_relaxed-1.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "86bd9f3ecafe6fcb09c7ec67e2556672", "sha256": "e39a7e5b14e14dfff0de0ad720dfffa740c128d599ab14cfac13f4deb34164a6" }, "downloads": -1, "filename": "pytest-relaxed-1.1.5.tar.gz", "has_sig": true, "md5_digest": "86bd9f3ecafe6fcb09c7ec67e2556672", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26786, "upload_time": "2019-06-14T18:16:26", "url": "https://files.pythonhosted.org/packages/50/8b/a01443d08903d1026c51de5272eaa072a96294d1b1b40d53e5f70d51ae0c/pytest-relaxed-1.1.5.tar.gz" } ] }