{ "info": { "author": "David Cramer", "author_email": "", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: System Administrators", "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" ], "description": "Responses\n=========\n\n.. image:: https://travis-ci.org/getsentry/responses.svg?branch=master\n :target: https://travis-ci.org/getsentry/responses\n\nA utility library for mocking out the `requests` Python library.\n\n.. note::\n\n Responses requires Python 2.7 or newer, and requests >= 2.0\n\n\nInstalling\n----------\n\n``pip install responses``\n\n\nBasics\n------\n\nThe core of ``responses`` comes from registering mock responses:\n\n.. code-block:: python\n\n import responses\n import requests\n\n @responses.activate\n def test_simple():\n responses.add(responses.GET, 'http://twitter.com/api/1/foobar',\n json={'error': 'not found'}, status=404)\n\n resp = requests.get('http://twitter.com/api/1/foobar')\n\n assert resp.json() == {\"error\": \"not found\"}\n\n assert len(responses.calls) == 1\n assert responses.calls[0].request.url == 'http://twitter.com/api/1/foobar'\n assert responses.calls[0].response.text == '{\"error\": \"not found\"}'\n\nIf you attempt to fetch a url which doesn't hit a match, ``responses`` will raise\na ``ConnectionError``:\n\n.. code-block:: python\n\n import responses\n import requests\n\n from requests.exceptions import ConnectionError\n\n @responses.activate\n def test_simple():\n with pytest.raises(ConnectionError):\n requests.get('http://twitter.com/api/1/foobar')\n\nLastly, you can pass an ``Exception`` as the body to trigger an error on the request:\n\n.. code-block:: python\n\n import responses\n import requests\n\n @responses.activate\n def test_simple():\n responses.add(responses.GET, 'http://twitter.com/api/1/foobar',\n body=Exception('...'))\n with pytest.raises(Exception):\n requests.get('http://twitter.com/api/1/foobar')\n\n\nResponse Parameters\n-------------------\n\nResponses are automatically registered via params on ``add``, but can also be\npassed directly:\n\n.. code-block:: python\n\n import responses\n\n responses.add(\n responses.Response(\n method='GET',\n url='http://example.com',\n )\n )\n\nThe following attributes can be passed to a Response mock:\n\nmethod (``str``)\n The HTTP method (GET, POST, etc).\n\nurl (``str`` or compiled regular expression)\n The full resource URL.\n\nmatch_querystring (``bool``)\n Include the query string when matching requests.\n Enabled by default if the response URL contains a query string,\n disabled if it doesn't or the URL is a regular expression.\n\nbody (``str`` or ``BufferedReader``)\n The response body.\n\njson\n A Python object representing the JSON response body. Automatically configures\n the appropriate Content-Type.\n\nstatus (``int``)\n The HTTP status code.\n\ncontent_type (``content_type``)\n Defaults to ``text/plain``.\n\nheaders (``dict``)\n Response headers.\n\nstream (``bool``)\n Disabled by default. Indicates the response should use the streaming API.\n\n\nDynamic Responses\n-----------------\n\nYou can utilize callbacks to provide dynamic responses. The callback must return\na tuple of (``status``, ``headers``, ``body``).\n\n.. code-block:: python\n\n import json\n\n import responses\n import requests\n\n @responses.activate\n def test_calc_api():\n\n def request_callback(request):\n payload = json.loads(request.body)\n resp_body = {'value': sum(payload['numbers'])}\n headers = {'request-id': '728d329e-0e86-11e4-a748-0c84dc037c13'}\n return (200, headers, json.dumps(resp_body))\n\n responses.add_callback(\n responses.POST, 'http://calc.com/sum',\n callback=request_callback,\n content_type='application/json',\n )\n\n resp = requests.post(\n 'http://calc.com/sum',\n json.dumps({'numbers': [1, 2, 3]}),\n headers={'content-type': 'application/json'},\n )\n\n assert resp.json() == {'value': 6}\n\n assert len(responses.calls) == 1\n assert responses.calls[0].request.url == 'http://calc.com/sum'\n assert responses.calls[0].response.text == '{\"value\": 6}'\n assert (\n responses.calls[0].response.headers['request-id'] ==\n '728d329e-0e86-11e4-a748-0c84dc037c13'\n )\n\nYou can also pass a compiled regex to `add_callback` to match multiple urls:\n\n.. code-block:: python\n\n import re, json\n\n from functools import reduce\n\n import responses\n import requests\n\n operators = {\n 'sum': lambda x, y: x+y,\n 'prod': lambda x, y: x*y,\n 'pow': lambda x, y: x**y\n }\n\n @responses.activate\n def test_regex_url():\n\n def request_callback(request):\n payload = json.loads(request.body)\n operator_name = request.path_url[1:]\n\n operator = operators[operator_name]\n\n resp_body = {'value': reduce(operator, payload['numbers'])}\n headers = {'request-id': '728d329e-0e86-11e4-a748-0c84dc037c13'}\n return (200, headers, json.dumps(resp_body))\n\n responses.add_callback(\n responses.POST,\n re.compile('http://calc.com/(sum|prod|pow|unsupported)'),\n callback=request_callback,\n content_type='application/json',\n )\n\n resp = requests.post(\n 'http://calc.com/prod',\n json.dumps({'numbers': [2, 3, 4]}),\n headers={'content-type': 'application/json'},\n )\n assert resp.json() == {'value': 24}\n\n test_regex_url()\n\n\nIf you want to pass extra keyword arguments to the callback function, for example when reusing\na callback function to give a slightly different result, you can use ``functools.partial``:\n\n.. code-block:: python\n\n from functools import partial\n\n ...\n\n def request_callback(request, id=None):\n payload = json.loads(request.body)\n resp_body = {'value': sum(payload['numbers'])}\n headers = {'request-id': id}\n return (200, headers, json.dumps(resp_body))\n\n responses.add_callback(\n responses.POST, 'http://calc.com/sum',\n callback=partial(request_callback, id='728d329e-0e86-11e4-a748-0c84dc037c13'),\n content_type='application/json',\n )\n\n\nResponses as a context manager\n------------------------------\n\n.. code-block:: python\n\n import responses\n import requests\n\n def test_my_api():\n with responses.RequestsMock() as rsps:\n rsps.add(responses.GET, 'http://twitter.com/api/1/foobar',\n body='{}', status=200,\n content_type='application/json')\n resp = requests.get('http://twitter.com/api/1/foobar')\n\n assert resp.status_code == 200\n\n # outside the context manager requests will hit the remote server\n resp = requests.get('http://twitter.com/api/1/foobar')\n resp.status_code == 404\n\nResponses as a pytest fixture\n-----------------------------\n\n.. code-block:: python\n\n @pytest.fixture\n def mocked_responses():\n with responses.RequestsMock() as rsps:\n yield rsps\n\n def test_api(mocked_responses):\n mocked_responses.add(\n responses.GET, 'http://twitter.com/api/1/foobar',\n body='{}', status=200,\n content_type='application/json')\n resp = requests.get('http://twitter.com/api/1/foobar')\n assert resp.status_code == 200\n\nAssertions on declared responses\n--------------------------------\n\nWhen used as a context manager, Responses will, by default, raise an assertion\nerror if a url was registered but not accessed. This can be disabled by passing\nthe ``assert_all_requests_are_fired`` value:\n\n.. code-block:: python\n\n import responses\n import requests\n\n def test_my_api():\n with responses.RequestsMock(assert_all_requests_are_fired=False) as rsps:\n rsps.add(responses.GET, 'http://twitter.com/api/1/foobar',\n body='{}', status=200,\n content_type='application/json')\n\n\nMultiple Responses\n------------------\n\nYou can also add multiple responses for the same url:\n\n.. code-block:: python\n\n import responses\n import requests\n\n @responses.activate\n def test_my_api():\n responses.add(responses.GET, 'http://twitter.com/api/1/foobar', status=500)\n responses.add(responses.GET, 'http://twitter.com/api/1/foobar',\n body='{}', status=200,\n content_type='application/json')\n\n resp = requests.get('http://twitter.com/api/1/foobar')\n assert resp.status_code == 500\n resp = requests.get('http://twitter.com/api/1/foobar')\n assert resp.status_code == 200\n\n\nUsing a callback to modify the response\n---------------------------------------\n\nIf you use customized processing in `requests` via subclassing/mixins, or if you\nhave library tools that interact with `requests` at a low level, you may need\nto add extended processing to the mocked Response object to fully simulate the\nenvironment for your tests. A `response_callback` can be used, which will be\nwrapped by the library before being returned to the caller. The callback\naccepts a `response` as it's single argument, and is expected to return a\nsingle `response` object.\n\n.. code-block:: python\n\n import responses\n import requests\n\n def response_callback(resp):\n resp.callback_processed = True\n return resp\n\n with responses.RequestsMock(response_callback=response_callback) as m:\n m.add(responses.GET, 'http://example.com', body=b'test')\n resp = requests.get('http://example.com')\n assert resp.text == \"test\"\n assert hasattr(resp, 'callback_processed')\n assert resp.callback_processed is True\n\n\nPassing thru real requests\n--------------------------\n\nIn some cases you may wish to allow for certain requests to pass thru responses\nand hit a real server. This can be done with the 'passthru' methods:\n\n.. code-block:: python\n\n import responses\n\n @responses.activate\n def test_my_api():\n responses.add_passthru('https://percy.io')\n\nThis will allow any requests matching that prefix, that is otherwise not registered\nas a mock response, to passthru using the standard behavior.\n\n\nViewing/Modifying registered responses\n--------------------------------------\n\nRegistered responses are available as a private attribute of the RequestMock\ninstance. It is sometimes useful for debugging purposes to view the stack of\nregistered responses which can be accessed via ``responses.mock._matches``.\n\nThe ``replace`` function allows a previously registered ``response`` to be\nchanged. The method signature is identical to ``add``. ``response``s are\nidentified using ``method`` and ``url``. Only the first matched ``response`` is\nreplaced.\n\n.. code-block:: python\n\n import responses\n import requests\n\n @responses.activate\n def test_replace():\n\n responses.add(responses.GET, 'http://example.org', json={'data': 1})\n responses.replace(responses.GET, 'http://example.org', json={'data': 2})\n\n resp = requests.get('http://example.org')\n\n assert resp.json() == {'data': 2}\n\n\n``remove`` takes a ``method`` and ``url`` argument and will remove *all*\nmatched ``response``s from the registered list.\n\nFinally, ``clear`` will reset all registered ``response``s\n\n\n\nContributing\n------------\n\nResponses uses several linting and autoformatting utilities, so it's important that when\nsubmitting patches you use the appropriate toolchain:\n\nClone the repository:\n\n.. code-block:: shell\n\n git clone https://github.com/getsentry/responses.git\n\nCreate an environment (e.g. with ``virtualenv``):\n\n.. code-block:: shell\n\n virtualenv .env && source .env/bin/activate\n\nConfigure development requirements:\n\n.. code-block:: shell\n\n make develop\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/getsentry/responses", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "responses", "package_url": "https://pypi.org/project/responses/", "platform": "", "project_url": "https://pypi.org/project/responses/", "project_urls": { "Homepage": "https://github.com/getsentry/responses" }, "release_url": "https://pypi.org/project/responses/0.10.6/", "requires_dist": [ "requests (>=2.0)", "six", "mock ; python_version < \"3.3\"", "cookies ; python_version < \"3.4\"", "pytest ; extra == 'tests'", "coverage (<5.0.0,>=3.7.1) ; extra == 'tests'", "pytest-cov ; extra == 'tests'", "pytest-localserver ; extra == 'tests'", "flake8 ; extra == 'tests'" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "summary": "A utility library for mocking out the `requests` Python library.", "version": "0.10.6" }, "last_serial": 4944851, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "338e6907f9b8fe5642aa81381bd88544", "sha256": "a75a1e138064ee708c12a176cb00a652d9c522d37b5d9038d10a1c98e8412dd5" }, "downloads": -1, "filename": "responses-0.1.0.tar.gz", "has_sig": false, "md5_digest": "338e6907f9b8fe5642aa81381bd88544", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3202, "upload_time": "2013-11-25T19:51:39", "url": "https://files.pythonhosted.org/packages/fe/e2/0759bf77845fb42b90f5cf7dccb2f2c2f343c9ef84ce094a90ca06b4ba0e/responses-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d9c10527d1ddccb3bbd41ca6547f651b", "sha256": "79e9d989134c193cecc458907f5ceb2190f89929264fe6d56e7c0f8240ae77b2" }, "downloads": -1, "filename": "responses-0.1.1.tar.gz", "has_sig": false, "md5_digest": "d9c10527d1ddccb3bbd41ca6547f651b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3426, "upload_time": "2013-12-16T19:35:18", "url": "https://files.pythonhosted.org/packages/48/0a/b3af2395b8853193f4e36d9e9c2d7700b23d267301486baccffce115cc72/responses-0.1.1.tar.gz" } ], "0.10.0": [ { "comment_text": "", "digests": { "md5": "83d7d648e62c0c97ba91dfe34f6e160f", "sha256": "56b1593a7b0efbdaab15160864943f8f74ace86e97a9464a0af092cff26a09a4" }, "downloads": -1, "filename": "responses-0.10.0.tar.gz", "has_sig": false, "md5_digest": "83d7d648e62c0c97ba91dfe34f6e160f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20785, "upload_time": "2018-10-18T14:04:01", "url": "https://files.pythonhosted.org/packages/5a/0c/1fd13e59630beb0f46a9e548ae159e62a271983ec4bd9752a1b4d96ba69f/responses-0.10.0.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "e4c9b6c8541a3ea0d968a185186af4a7", "sha256": "f171f3cc74a6550b68c600c89f913e59337360ac7c1e563cee44a980833a0354" }, "downloads": -1, "filename": "responses-0.10.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e4c9b6c8541a3ea0d968a185186af4a7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17148, "upload_time": "2018-10-18T17:55:15", "url": "https://files.pythonhosted.org/packages/1b/d4/aaf1ce65e817f889fc44f7cc3213045f7fa885e386103d278a66d063f0a3/responses-0.10.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43776a3006324ee949c2d2c48b224ac7", "sha256": "9a165718944c0ac3215e2507f4d63b5a6a44da883df8949a7ae659516f4ef883" }, "downloads": -1, "filename": "responses-0.10.1.tar.gz", "has_sig": false, "md5_digest": "43776a3006324ee949c2d2c48b224ac7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20777, "upload_time": "2018-10-18T17:55:17", "url": "https://files.pythonhosted.org/packages/d1/e0/efa44203ac74739d4e9f383a9c560882e038853ba43a81eed6e00735f9ab/responses-0.10.1.tar.gz" } ], "0.10.2": [ { "comment_text": "", "digests": { "md5": "b39464983be7472f16fef236fa52328b", "sha256": "9b1c14871c66329f509711627e3de5779a2ae50bd532ac162297623424288756" }, "downloads": -1, "filename": "responses-0.10.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b39464983be7472f16fef236fa52328b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17201, "upload_time": "2018-10-25T15:08:05", "url": "https://files.pythonhosted.org/packages/61/ff/3dd8d74c02c0834e9ee424a2ebdf808b88a4c970f732d4f7b99cc4f4b4fe/responses-0.10.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "620bddf99969036ad915bc6c061023aa", "sha256": "682fafb124e799eeee67ec15c9678d955a88affda5613b09788ef80c03987cf0" }, "downloads": -1, "filename": "responses-0.10.2.tar.gz", "has_sig": false, "md5_digest": "620bddf99969036ad915bc6c061023aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21615, "upload_time": "2018-10-25T15:08:06", "url": "https://files.pythonhosted.org/packages/58/88/02584faf6a89ec96b7a389f5c3091df2124e7fa69df331d46470c2cde8d0/responses-0.10.2.tar.gz" } ], "0.10.3": [ { "comment_text": "", "digests": { "md5": "b40fbfaa7b3b4f6b7af3c1e76b628778", "sha256": "25df51df9ed5d879160c60129696603b9143a7e1a850616b8c7943ecccc676d3" }, "downloads": -1, "filename": "responses-0.10.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b40fbfaa7b3b4f6b7af3c1e76b628778", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17262, "upload_time": "2018-11-08T16:20:05", "url": "https://files.pythonhosted.org/packages/a6/6a/e586e13f51aaa2e1bb85547901518badcbc8ff572e8484a62373cab7ecda/responses-0.10.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d2f3a089a470d141a2f0785a171a3bd7", "sha256": "5b99beef28dd177da180604be2e849a16c3a40605bfda7c8d792a9924dd3d60e" }, "downloads": -1, "filename": "responses-0.10.3.tar.gz", "has_sig": false, "md5_digest": "d2f3a089a470d141a2f0785a171a3bd7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21710, "upload_time": "2018-11-08T16:20:07", "url": "https://files.pythonhosted.org/packages/b1/b9/5d6cd5b7c07bdf51841ac09518168010a9f836db7066caa18d312480a8a0/responses-0.10.3.tar.gz" } ], "0.10.4": [ { "comment_text": "", "digests": { "md5": "1e218a79b4656878c6b936e55598eabe", "sha256": "b9b31d9b1fcf6d48aea044c9fdd3d04199f6d227b0650c15d2566b0135bc1ed7" }, "downloads": -1, "filename": "responses-0.10.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1e218a79b4656878c6b936e55598eabe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17685, "upload_time": "2018-11-15T02:29:38", "url": "https://files.pythonhosted.org/packages/11/a8/c5931d254bdd9430f3cc4269e305df5ec212e54f79e2461aecdcf9e911f3/responses-0.10.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ca373a8297fc7da404d82b3573074baa", "sha256": "16ad4a7a914f20792111157adf09c63a8dc37699c57d1ad20dbc281a4f5743fb" }, "downloads": -1, "filename": "responses-0.10.4.tar.gz", "has_sig": false, "md5_digest": "ca373a8297fc7da404d82b3573074baa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22291, "upload_time": "2018-11-15T02:29:40", "url": "https://files.pythonhosted.org/packages/84/b7/a868941426ea5e9f8fd986dbf935c2068cb491d0e4de9fc4764952c9fb99/responses-0.10.4.tar.gz" } ], "0.10.5": [ { "comment_text": "", "digests": { "md5": "675116cbc552be7f329e84f3f64250fd", "sha256": "ea5a14f9aea173e3b786ff04cf03133c2dabd4103dbaef1028742fd71a6c2ad3" }, "downloads": -1, "filename": "responses-0.10.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "675116cbc552be7f329e84f3f64250fd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 17898, "upload_time": "2018-12-17T19:42:55", "url": "https://files.pythonhosted.org/packages/2f/d8/a77cbd4cb8366ad0e275f2c642b50b401da22a2f5714e003e499fddca106/responses-0.10.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "113af13dbdc36b64dbb6a49b38113ab5", "sha256": "c85882d2dc608ce6b5713a4e1534120f4a0dc6ec79d1366570d2b0c909a50c87" }, "downloads": -1, "filename": "responses-0.10.5.tar.gz", "has_sig": false, "md5_digest": "113af13dbdc36b64dbb6a49b38113ab5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 19314, "upload_time": "2018-12-17T19:42:57", "url": "https://files.pythonhosted.org/packages/c9/3b/bea0bfc243072a3d910befae4d1fb585276260abcac2a62109e01064c551/responses-0.10.5.tar.gz" } ], "0.10.6": [ { "comment_text": "", "digests": { "md5": "e9dbcd421fa17ced1f97ac54877e2a5a", "sha256": "97193c0183d63fba8cd3a041c75464e4b09ea0aff6328800d1546598567dde0b" }, "downloads": -1, "filename": "responses-0.10.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e9dbcd421fa17ced1f97ac54877e2a5a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 13917, "upload_time": "2019-03-15T16:01:05", "url": "https://files.pythonhosted.org/packages/d1/5a/b887e89925f1de7890ef298a74438371ed4ed29b33def9e6d02dc6036fd8/responses-0.10.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ff92cecffa2d4495f51fcaa5ce258843", "sha256": "502d9c0c8008439cfcdef7e251f507fcfdd503b56e8c0c87c3c3e3393953f790" }, "downloads": -1, "filename": "responses-0.10.6.tar.gz", "has_sig": false, "md5_digest": "ff92cecffa2d4495f51fcaa5ce258843", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 22102, "upload_time": "2019-03-15T16:01:07", "url": "https://files.pythonhosted.org/packages/cb/83/9a79053228532392949542bb21ee3e685e089ac8dc2fe7f0a9dfbbced0e5/responses-0.10.6.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "2e9ce398d5de6ad9a43abe16d4d7ae06", "sha256": "d0e390392838766a063d895ab197896f732a66778c6ee5e2fd17b7f5b3d2f5ce" }, "downloads": -1, "filename": "responses-0.2.0.tar.gz", "has_sig": false, "md5_digest": "2e9ce398d5de6ad9a43abe16d4d7ae06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3652, "upload_time": "2013-12-16T19:53:20", "url": "https://files.pythonhosted.org/packages/4c/f0/f668807c0fcb799d0d360fc1d5c89fa4f559415f97bc7ab7e9d93ff4d17a/responses-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "a44c59db196ec624233d1217e0df4577", "sha256": "8270157c640e500a703bb86d55b87e9f4cfeb5d54c8dd1ae9c6901f2c08a8d75" }, "downloads": -1, "filename": "responses-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a44c59db196ec624233d1217e0df4577", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3720, "upload_time": "2014-05-13T18:26:40", "url": "https://files.pythonhosted.org/packages/f9/4e/9dd2e3b04cccf93a5a264b4d04e137597f91fa84dc53d3fe97f7edaf46c5/responses-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "5d79fd425cf8d858dfc8afa6475395d3", "sha256": "7256c8206522c8056462dc06a6bcc9eba60196cdf6e97d1297ec6207c59e491a" }, "downloads": -1, "filename": "responses-0.2.2.tar.gz", "has_sig": false, "md5_digest": "5d79fd425cf8d858dfc8afa6475395d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3745, "upload_time": "2014-05-24T23:57:51", "url": "https://files.pythonhosted.org/packages/66/1a/62eb00b5a5d0d35a5a5eff3e1460b0ba14d12c64ded34a09eec913ff00c2/responses-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "0181b98153639dccdb5c5daa2ce317da", "sha256": "6c5eb915bcf763b677b8e51cdb68c8474127a9b60e49e6e240b05ec5e449c43b" }, "downloads": -1, "filename": "responses-0.3.0.tar.gz", "has_sig": false, "md5_digest": "0181b98153639dccdb5c5daa2ce317da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5139, "upload_time": "2014-10-13T13:02:01", "url": "https://files.pythonhosted.org/packages/86/17/0a6277c79b9ec53eccc90df1be0d26642ff7893d897166a331e0e33550a1/responses-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "e3e8171997e22f46387908df30c621c0", "sha256": "a5df7b5e060eaa919d7eb77faeacf0acc7e10074bb34c9a0ac2238e21851473b" }, "downloads": -1, "filename": "responses-0.4.0.tar.gz", "has_sig": false, "md5_digest": "e3e8171997e22f46387908df30c621c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5474, "upload_time": "2015-05-27T13:58:24", "url": "https://files.pythonhosted.org/packages/1f/1c/f69a258bfa157ee23f355c0a5ce23dbd4e2866762501f9d286c94ac4e2f1/responses-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d907191de711491a1535459d8f31a571", "sha256": "a68183dbf700c2b9977ceafb7e299d0e2450673265ef60efd504d6956034ea0d" }, "downloads": -1, "filename": "responses-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d907191de711491a1535459d8f31a571", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7691, "upload_time": "2015-10-14T21:40:21", "url": "https://files.pythonhosted.org/packages/68/be/976ff624abfaa3355a376858aaa6b27140fb44985673477d66aa0f8af0e3/responses-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "107a732bba2657c14e7f771befba9c50", "sha256": "4c76c560eefb42fb5f0ac59f39f90c295cf6e4f080562c124e3ad247a2be11cf" }, "downloads": -1, "filename": "responses-0.5.0.tar.gz", "has_sig": false, "md5_digest": "107a732bba2657c14e7f771befba9c50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5957, "upload_time": "2015-10-14T21:40:01", "url": "https://files.pythonhosted.org/packages/35/d6/7eeadfb56f5619c37c3388f6ef63b142bf96a06e76b0e2974fbf8d074d38/responses-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "1833cc5ae0fcfb5954c53a6ae79caa16", "sha256": "3a907f7aae2fd2286d06cfdf238957786c38bbcadc451adceecc769a4ef882b7" }, "downloads": -1, "filename": "responses-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1833cc5ae0fcfb5954c53a6ae79caa16", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7509, "upload_time": "2016-01-25T21:17:18", "url": "https://files.pythonhosted.org/packages/60/ff/d99b0ef8e5169fbde76f9de6bcc7cad4e4b60e07ff8077cb64ad992314f8/responses-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f1962b295b18128c522e83901556deac", "sha256": "8cad64c45959a651ceaf0023484bd26180c927fea64a81e63d334ddf6377ecea" }, "downloads": -1, "filename": "responses-0.5.1.tar.gz", "has_sig": false, "md5_digest": "f1962b295b18128c522e83901556deac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10164, "upload_time": "2016-01-25T21:17:06", "url": "https://files.pythonhosted.org/packages/09/e4/ae639e37d9d35903fdeda416d7f9c9e3a0331895d574b4fe6632a27c9190/responses-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "cbbc16862374114165388443d49c5de7", "sha256": "5e3887c400050cccc1b9909d3167eddabc6ff14590bebfc49bbe80ac5cb6766a" }, "downloads": -1, "filename": "responses-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cbbc16862374114165388443d49c5de7", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12734, "upload_time": "2017-07-25T21:46:53", "url": "https://files.pythonhosted.org/packages/a2/50/a655b34fbcf531456cb082ebe4883eff1f18be942b41b4c9122afa34f9c4/responses-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11d6052302f17f30895ca7d6e3191ed9", "sha256": "b38dad355d49c2e40d96b9bdf6ca8e402dfc27cc286b002c6021fbf47113ce58" }, "downloads": -1, "filename": "responses-0.6.0.tar.gz", "has_sig": false, "md5_digest": "11d6052302f17f30895ca7d6e3191ed9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14367, "upload_time": "2017-07-25T21:46:55", "url": "https://files.pythonhosted.org/packages/4c/fe/dd92047b8be4cba6776a6c07dd8e01e36c881c7537ac2f22ac30f336fe38/responses-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "bc5e02a78060fb529543542b261b4c13", "sha256": "6669409d475fb439577dd10d9e40389fd00ee074cb4fe2b829d0ac223324815f" }, "downloads": -1, "filename": "responses-0.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bc5e02a78060fb529543542b261b4c13", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12857, "upload_time": "2017-08-03T18:24:26", "url": "https://files.pythonhosted.org/packages/14/cb/b11a41b6e09d1284ed4e64a574422f77e47ef128ec94868849a8a6fa3820/responses-0.6.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "94d1b706b1d4cb83a04a181fd69a164e", "sha256": "f9485ab2c9380b85f98ee15ed28fc9f6e4911082acec28b1e42c60f19935bf19" }, "downloads": -1, "filename": "responses-0.6.1.tar.gz", "has_sig": false, "md5_digest": "94d1b706b1d4cb83a04a181fd69a164e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14515, "upload_time": "2017-08-03T18:24:23", "url": "https://files.pythonhosted.org/packages/2d/79/d817a3176fdeaa33deb0642b25198fbb4956c7a0eea2ee477039b09a3079/responses-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "78ed113a1e2375ffcd62339e30648299", "sha256": "d41d5b1b61530863b7d795572c50c84e0d620dc2704d521097cff84f8850de19" }, "downloads": -1, "filename": "responses-0.6.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "78ed113a1e2375ffcd62339e30648299", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13036, "upload_time": "2017-08-08T17:24:45", "url": "https://files.pythonhosted.org/packages/35/2c/969021e85463519df4e15627204650a996f04e95d3d10aadc44eca364feb/responses-0.6.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3802a1313ff414953173276123d51974", "sha256": "d51f2a91a01c2309d03d414013b93a8fdfa3ef6fe9d3f94f623f4f7af7db25f6" }, "downloads": -1, "filename": "responses-0.6.2.tar.gz", "has_sig": false, "md5_digest": "3802a1313ff414953173276123d51974", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14784, "upload_time": "2017-08-08T17:24:46", "url": "https://files.pythonhosted.org/packages/11/f4/d79b9ec5dca176341b5c3230f69237d8fdce98165c9769af4d91076bd536/responses-0.6.2.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "47b4582d1c7624d494db1f816320dfa5", "sha256": "860f2ac3aed6954b6dfc79ee27a229d423c77ad7a4c242f26c1489bdd702d8e4" }, "downloads": -1, "filename": "responses-0.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "47b4582d1c7624d494db1f816320dfa5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13174, "upload_time": "2017-08-08T22:03:22", "url": "https://files.pythonhosted.org/packages/b9/a0/34a963e592b645ab7b9a072f003b84b300e7bafed63058f071c9dfd4a737/responses-0.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8e3926c519cf5eb855c50ac931fe4e3e", "sha256": "912da86d9d9ca6e02f00e5ecd61d08992ab1511858260bd5df8b2b1e51a6dc9f" }, "downloads": -1, "filename": "responses-0.7.0.tar.gz", "has_sig": false, "md5_digest": "8e3926c519cf5eb855c50ac931fe4e3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14979, "upload_time": "2017-08-08T22:03:23", "url": "https://files.pythonhosted.org/packages/40/3a/bccc47f14d2ac1daeab1f574fbe985b9858ce343188fdbbfe2cea8c1ce4e/responses-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "4896324a005cabcfe28a2d882068409b", "sha256": "2a4822d890aaf00f0011c440d05122417bfbd8a2c8daa36c5221862682536272" }, "downloads": -1, "filename": "responses-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4896324a005cabcfe28a2d882068409b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14945, "upload_time": "2017-09-26T22:03:08", "url": "https://files.pythonhosted.org/packages/03/63/c5d0f5f7218aafa0ee5f4fa83674b604330a9f9314c672a98370ea8cf108/responses-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "77e48e377032f898f9dad012880aa232", "sha256": "a7f8947875d8f0f44c35627bf86bc6fc38cb474dacd8a19497a8a4b4ac13888c" }, "downloads": -1, "filename": "responses-0.8.0.tar.gz", "has_sig": false, "md5_digest": "77e48e377032f898f9dad012880aa232", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16597, "upload_time": "2017-09-26T22:03:10", "url": "https://files.pythonhosted.org/packages/df/85/73b9d3eef3fe34bcac11bdb6a958b0463e728611c6453a7cc66283333c56/responses-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "55bd291d10f561741c9a4f4f8071aef1", "sha256": "98e1c0eb5a7a03d59e73c8ac774428664f319ef35c6ac59479436bbb9c3499be" }, "downloads": -1, "filename": "responses-0.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "55bd291d10f561741c9a4f4f8071aef1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15003, "upload_time": "2017-10-02T17:02:40", "url": "https://files.pythonhosted.org/packages/0c/5e/6c995768c35c622651aeb83c227dfc88c15fa42483a2d2a9ead705ff018a/responses-0.8.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59717ee0c134ce4a58af349ed624a63c", "sha256": "a64029dbc6bed7133e2c971ee52153f30e779434ad55a5abf40322bcff91d029" }, "downloads": -1, "filename": "responses-0.8.1.tar.gz", "has_sig": false, "md5_digest": "59717ee0c134ce4a58af349ed624a63c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16681, "upload_time": "2017-10-02T17:02:44", "url": "https://files.pythonhosted.org/packages/2e/18/20a4a96365d42f02363ec0062b70ff93f7b6639e569fd0cb174209d59a3a/responses-0.8.1.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "48c28f541a3932d37385deb618f86c48", "sha256": "f23a29dca18b815d9d64a516b4a0abb1fbdccff6141d988ad8100facb81cf7b3" }, "downloads": -1, "filename": "responses-0.9.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "48c28f541a3932d37385deb618f86c48", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12525, "upload_time": "2018-04-04T16:59:34", "url": "https://files.pythonhosted.org/packages/d9/a2/1cf64651ca0837ea627fbf0455231611bec85dbb7a9ffe761365950cabe5/responses-0.9.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9be9a02af54bdcbf227d5ef5fd4e286", "sha256": "c6082710f4abfb60793899ca5f21e7ceb25aabf321560cc0726f8b59006811c9" }, "downloads": -1, "filename": "responses-0.9.0.tar.gz", "has_sig": false, "md5_digest": "c9be9a02af54bdcbf227d5ef5fd4e286", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19766, "upload_time": "2018-04-04T16:59:33", "url": "https://files.pythonhosted.org/packages/67/cb/0a5390f7b8944cfa7e4079a839adba964d858d27a60af7b2683248148339/responses-0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e9dbcd421fa17ced1f97ac54877e2a5a", "sha256": "97193c0183d63fba8cd3a041c75464e4b09ea0aff6328800d1546598567dde0b" }, "downloads": -1, "filename": "responses-0.10.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e9dbcd421fa17ced1f97ac54877e2a5a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 13917, "upload_time": "2019-03-15T16:01:05", "url": "https://files.pythonhosted.org/packages/d1/5a/b887e89925f1de7890ef298a74438371ed4ed29b33def9e6d02dc6036fd8/responses-0.10.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ff92cecffa2d4495f51fcaa5ce258843", "sha256": "502d9c0c8008439cfcdef7e251f507fcfdd503b56e8c0c87c3c3e3393953f790" }, "downloads": -1, "filename": "responses-0.10.6.tar.gz", "has_sig": false, "md5_digest": "ff92cecffa2d4495f51fcaa5ce258843", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 22102, "upload_time": "2019-03-15T16:01:07", "url": "https://files.pythonhosted.org/packages/cb/83/9a79053228532392949542bb21ee3e685e089ac8dc2fe7f0a9dfbbced0e5/responses-0.10.6.tar.gz" } ] }