-
-
Notifications
You must be signed in to change notification settings - Fork 356
/
CHANGES
460 lines (344 loc) · 15.3 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
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
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)