0.26.0
------

* When using `assert_all_requests_are_fired=True`, assertions about
  unfired requests are now raised even when an exception occurs in the context manager or
  decorated function. Previously, these assertions were suppressed when exceptions occurred.
  This new behavior provides valuable debugging context about which mocked requests were
  or weren't called.
* Consider the `Retry-After` header when handling retries


0.25.8
------

* Fix bug where the content type is always recorded as either text/plain or application/json. See #770
* Allow asserts on add_callback() matches. See #727

0.25.7
------

* Added support for python 3.13

0.25.6
------

* Added py.typed to package_data

0.25.5
------

* Fix readme issue that prevented 0.25.4 from being published to pypi.

0.25.4
------

* Responses can now match requests that use `data` with file-like objects.
  Files will be read as bytes and stored in the request mock. See #736
* `RequestsMock.matchers` was added. This property is an alias to `responses.matchers`. See #739
* Removed tests from packaged wheels. See #746
* Improved recorder API to ease use in REPL environments. See #745

0.25.3
------

* Fixed `recorder` not saving and loading response headers with yaml files. See #715

0.25.2
------

* Mulligan on 0.25.1 to run release pipeline correctly.
* Added `matchers.body_matcher` for matching string request bodies. See #717

0.25.1
------

* Fixed tests failures during RPM package builds. See #706
* Fix mocked HEAD responses that have `Content-Length` set. See #712
* Fixed error messages when matches fail: inputs are not sorted or reformatted. See #704

0.25.0
------

* Added support for Python 3.12
* Fixed `matchers.header_matcher` not failing when a matched header is missing from the request. See #702


0.24.1
------

* Reverted overloads removal
* Added typing to `Call` attributes.
* Fix socket issues (see #693)


0.24.0
------

* Added `BaseResponse.calls` to access calls data of a separate mocked request. See #664
* Added `real_adapter_send` parameter to `RequestsMock` that will allow users to set
  through which function they would like to send real requests
* Added support for re.Pattern based header matching.
* Added support for gzipped response bodies to `json_params_matcher`.
* Fix `Content-Type` headers issue when the header was duplicated. See #644
* Moved types-pyyaml dependency to `tests_requires`
* Removed Python3.7 support

0.23.3
------

* Allow urllib3>=1.25.10


0.23.2
------

> This release is the last to support Python 3.7

* Updated dependency to urllib3>=2 and requests>=2.30.0. See #635
* Fixed issue when custom adapters were sending only positional args. See #642
* Expose `unbound_on_send` method in `RequestsMock` class. This method returns new function
  that is called by `RequestsMock` instead of original `send` method defined by any adapter.


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)
