0.23.1
------

* Remove `tomli` import. See #630

0.23.0
------

* Add Python 3.11 support
* Fix type annotations of `CallList`. See #593
* `request` object is attached to any custom exception provided as `Response` `body` argument. See #588
* Fixed mocked responses leaking between tests when `assert_all_requests_are_fired` and a request was not fired.
* [BETA] Default recorder format was changed to YAML.  Added `responses.RequestsMock._parse_response_file` and
  `responses._recorder.Recorder.dump_to_file` methods that allow users to override default parser to eg toml, json

0.22.0
------

* Update `requests` dependency to the version of 2.22.0 or higher. See #584.
* [BETA] Added possibility to record responses to TOML files via `@_recorder.record(file_path="out.toml")` decorator.
* [BETA] Added possibility to replay responses (populate registry) from TOML files
  via `responses._add_from_file(file_path="out.toml")` method.
* Fix type for the `mock`'s patcher object. See #556
* Fix type annotation for `CallList`
* Add `passthrough` argument to `BaseResponse` object. See #557
* Fix `registries` leak. See #563
* `OriginalResponseShim` is removed. See #585
* Add support for the `loose` version of `json_params_matcher` via named argument `strict_match`. See #551
* Add lists support as JSON objects in `json_params_matcher`. See #559
* Added project links to pypi listing.
* `delete`, `get`, `head`, `options`, `patch`, `post`, `put` shortcuts are now implemented using `functools.partialmethod`.
* Fix `MaxRetryError` exception. Replace exception by `RetryError` according to `requests` implementation. See #572.
* Adjust error message when `Retry` is exhausted. See #580.

0.21.0
------

* Add `threading.Lock()` to allow `responses` working with `threading` module.
* Add `urllib3` `Retry` mechanism. See #135
* Removed internal `_cookies_from_headers` function
* Now `add`, `upsert`, `replace` methods return registered response.
  `remove` method returns list of removed responses.
* Added null value support in `urlencoded_params_matcher` via `allow_blank` keyword argument
* Added strict version of decorator. Now you can apply `@responses.activate(assert_all_requests_are_fired=True)`
  to your function to validate that all requests were executed in the wrapped function. See #183


0.20.0
------

* Deprecate `responses.assert_all_requests_are_fired`, `responses.passthru_prefixes`, `responses.target`
  since they are not actual properties of the class instance.
  Use `responses.mock.assert_all_requests_are_fired`,
  `responses.mock.passthru_prefixes`, `responses.mock.target` instead.
* Fixed the issue when `reset()` method was called in not stopped mock. See #511

0.19.0
------

* Added a registry that provides more strict ordering based on the invocation index.
  See `responses.registries.OrderedRegistry`.
* Added shortcuts for each request method: delete, get, head, options, patch, post, put.
  For example, to add response for POST request you can use `responses.post()` instead
  of `responses.add(responses.POST)`.
* Prevent `responses.activate` decorator to leak, if wrapped function called from within another
  wrapped function. Also, allow calling of above mentioned chain. See #481 for more details.
* Expose `get_registry()` method of `RequestsMock` object. Replaces internal `_get_registry()`.
* `query_param_matcher` can now accept dictionaries with `int` and `float` values.
* Add support for the `loose` version of `query_param_matcher` via named argument `strict_match`.
* Added support for `async/await` functions.
* `response_callback` is no longer executed on exceptions raised by failed `Response`s
* Change logic of `_get_url_and_path` to comply with RFC 3986. Now URL match occurs by matching
  schema, authority and path, where path is terminated by the first question mark ("?") or
  number sign ("#") character, or by the end of the URI.
* An error is now raised when both `content_type` and `headers[content-type]` are provided as parameters.
* When a request isn't matched the passthru prefixes are now included in error messages.


0.18.0
------

* Dropped support of Python 2.7, 3.5, 3.6
* Fixed issue with type annotation for `responses.activate` decorator. See #468
* Removed internal `_is_string` and `_ensure_str` functions
* Removed internal `_quote` from `test_responses.py`
* Removed internal `_matches` attribute of `RequestsMock` object.
* Generated decorator wrapper now uses stdlib features instead of strings and exec
* Fix issue when Deprecation Warning was raised with default arguments
  in `responses.add_callback` due to `match_querystring`. See #464

0.17.0
------

* This release is the last to support Python 2.7.
* Fixed issue when `response.iter_content` when `chunk_size=None` entered infinite loop
* Fixed issue when `passthru_prefixes` persisted across tests.
  Now `add_passthru` is valid only within a context manager or for a single function and
  cleared on exit
* Deprecate `match_querystring` argument in `Response` and `CallbackResponse`.
  Use `responses.matchers.query_param_matcher` or `responses.matchers.query_string_matcher`
* Added support for non-UTF-8 bytes in `responses.matchers.multipart_matcher`
* Added `responses.registries`. Now user can create custom registries to
  manipulate the order of responses in the match algorithm
  `responses.activate(registry=CustomRegistry)`
* Fixed issue with response match when requests were performed between adding responses with
  same URL. See Issue #212

0.16.0
------

* Fixed regression with `stream` parameter deprecation, requests.session() and cookie handling.
* Replaced adhoc URL parsing with `urllib.parse`.
* Added ``match`` parameter to ``add_callback`` method
* Added `responses.matchers.fragment_identifier_matcher`. This matcher allows you
  to match request URL fragment identifier.
* Improved test coverage.
* Fixed failing test in python 2.7 when `python-future` is also installed.

0.15.0
------

* Added `responses.PassthroughResponse` and
  `reponses.BaseResponse.passthrough`. These features make building passthrough
  responses more compatible with dynamcially generated response objects.
* Removed the unused ``_is_redirect()`` function from responses internals.
* Added `responses.matchers.request_kwargs_matcher`. This matcher allows you
  to match additional request arguments like `stream`.
* Added `responses.matchers.multipart_matcher`. This matcher allows you
  to match request body and headers for ``multipart/form-data`` data
* Added `responses.matchers.query_string_matcher`. This matcher allows you
  to match request query string, similar to `responses.matchers.query_param_matcher`.
* Added `responses.matchers.header_matcher()`. This matcher allows you to match
  request headers. By default only headers supplied to `header_matcher()` are checked.
  You can make header matching exhaustive by passing `strict_match=True` to `header_matcher()`.
* Changed all matchers output message in case of mismatch. Now message is aligned
  between Python2 and Python3 versions
* Deprecate ``stream`` argument in ``Response`` and ``CallbackResponse``
* Added Python 3.10 support

0.14.0
------

* Added `responses.matchers`.
* Moved `responses.json_params_matcher` to `responses.matchers.json_params_matcher`
* Moved `responses.urlencoded_params_matcher` to
  `responses.matchers.urlencoded_params_matcher`
* Added `responses.matchers.query_param_matcher`. This matcher allows you
  to match query strings with a dictionary.
* Added `auto_calculate_content_length` option to `responses.add()`. When
  enabled, this option will generate a `Content-Length` header
  based on the number of bytes in the response body.

0.13.4
------

* Improve typing support
* Use URLs with normalized hostnames when comparing URLs.

0.13.3
------

* Switch from Travis to GHA for deployment.

0.13.2
------

* Fixed incorrect type stubs for `add_callback`

0.13.1
------

* Fixed packages not containing type stubs.

0.13.0
------

* `responses.upsert()` was added. This method will `add()` a response if one
  has not already been registered for a URL, or `replace()` an existing
  response.
* `responses.registered()` was added. The method allows you to get a list of
  the currently registered responses. This formalizes the previously private
  `responses.mock._matches` method.
* A more useful `__repr__` has been added to `Response`.
* Error messages have been improved.

0.12.1
------

* `responses.urlencoded_params_matcher` and `responses.json_params_matcher` now
  accept None to match empty requests.
* Fixed imports to work with new `urllib3` versions.
* `request.params` now allows parameters to have multiple values for the same key.
* Improved ConnectionError messages.

0.12.0
------

- Remove support for Python 3.4.

0.11.0
------

- Added the `match` parameter to `add()`.
- Added `responses.urlencoded_params_matcher()` and `responses.json_params_matcher()`.

0.10.16
-------

- Add a requirements pin to urllib3. This helps prevent broken install states where
  cookie usage fails.

0.10.15
-------

- Added `assert_call_count` to improve ergonomics around ensuring a mock was called.
- Fix incorrect handling of paths with query strings.
- Add Python 3.9 support to CI matrix.

0.10.14
-------

- Retag of 0.10.13

0.10.13
-------

- Improved README examples.
- Improved handling of unicode bodies. The inferred content-type for unicode
  bodies is now `text/plain; charset=utf-8`.
- Streamlined querysting matching code.

0.10.12
-------

- Fixed incorrect content-type in `add_callback()` when headers are provided as a list of tuples.

0.10.11
-------

- Fixed invalid README formatted.
- Fixed string formatting in error message.

0.10.10
------

- Added Python 3.8 support
- Remove Python 3.4 from test suite matrix.
- The `response.request` object now has a `params` attribute that contains the query string parameters from the request that was captured.
- `add_passthru` now supports `re` pattern objects to match URLs.
- ConnectionErrors raised by responses now include more details on the request that was attempted and the mocks registered.

0.10.9
------

- Fixed regression with `add_callback()` and content-type header.
- Fixed implicit dependency on urllib3>1.23.0

0.10.8
------

- Fixed cookie parsing and enabled multiple cookies to be set by using a list of
  tuple values.

0.10.7
------

- Added pypi badges to README.
- Fixed formatting issues in README.
- Quoted cookie values are returned correctly now.
- Improved compatibility for pytest 5
- Module level method names are no longer generated dynamically improving IDE navigation.

0.10.6
------

- Improved documentation.
- Improved installation requirements for py3
- ConnectionError's raised by responses now indicate which request
  path/method failed to match a mock.
- `test_responses.py` is no longer part of the installation targets.

0.10.5
------

- Improved support for raising exceptions from callback mocks. If a mock
  callback returns an exception object that exception will be raised.

0.10.4
------

- Fixed generated wrapper when using `@responses.activate` in Python 3.6+
  when decorated functions use parameter and/or return annotations.

0.10.3
------

- Fixed deprecation warnings in python 3.7 for inspect module usage.

0.10.2
------

- Fixed build setup to use undeprecated `pytest` bin stub.
- Updated `tox` configuration.
- Added example of using responses with `pytest.fixture`
- Removed dependency on `biscuits` in py3. Instead `http.cookies` is being used.

0.10.1
------

- Packaging fix to distribute wheel (#219)

0.10.0
------

- Fix passing through extra settings (#207)
- Fix collections.abc warning on Python 3.7 (#215)
- Use 'biscuits' library instead of 'cookies' on Python 3.4+ (#218)

0.9.0
-----

- Support for Python 3.7 (#196)
- Support streaming responses for BaseResponse (#192)
- Support custom patch targets for mock (#189)
- Fix unicode support for passthru urls (#178)
- Fix support for unicode in domain names and tlds (177)

0.8.0
-----

- Added the ability to passthru real requests via ``add_passthru()``
  and ``passthru_prefixes`` configurations.

0.7.0
-----

- Responses will now be rotated until the final match is hit, and
  then persist using that response (GH-171).

0.6.2
-----

- Fixed call counting with exceptions (GH-163).
- Fixed behavior with arbitrary status codes (GH-164).
- Fixed handling of multiple responses with the same match (GH-165).
- Fixed default path behavior with ``match_querystring`` (GH-166).

0.6.1
-----

- Restored ``adding_headers`` compatibility (GH-160).

0.6.0
-----

- Allow empty list/dict as json object (GH-100).
- Added `response_callback` (GH-151).
- Added ``Response`` interfaces (GH-155).
- Fixed unicode characters in querystring (GH-153).
- Added support for streaming IO buffers (GH-154).
- Added support for empty (unset) Content-Type (GH-139).
- Added reason to mocked responses (GH-132).
- ``yapf`` autoformatting now enforced on codebase.

0.5.1
-----

- Add LICENSE, README and CHANGES to the PyPI distribution (GH-97).

0.5.0
-----

- Allow passing a JSON body to `response.add` (GH-82)
- Improve ConnectionError emulation (GH-73)
- Correct assertion in assert_all_requests_are_fired (GH-71)

0.4.0
-----

- Requests 2.0+ is required
- Mocking now happens on the adapter instead of the session

0.3.0
-----

- Add the ability to mock errors (GH-22)
- Add responses.mock context manager (GH-36)
- Support custom adapters (GH-33)
- Add support for regexp error matching (GH-25)
- Add support for dynamic bodies via `responses.add_callback` (GH-24)
- Preserve argspec when using `responses.activate` decorator (GH-18)
