* Preserve individual headers with the same name on responses
* Rename RequestHeadersDict to HTTPHeadersDict
* Update tests/utils/http_server.py
* Update tests/utils/http_server.py
* Update httpie/adapters.py
Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
* Fix encoding error with non-prettified encoded responses
Removed `--format-option response.as` an promote `--response-as`: using
the format option would be misleading as it is now also used by non-prettified
responses.
* Encoding refactoring
* split --response-as into --response-mime and --response-charset
* add support for Content-Type charset for requests printed to terminal
* add support charset detection for requests printed to terminal without a Content-Type charset
* etc.
* `test_unicode.py` → `test_encoding.py`
* Drop sequence length check
* Clean-up tests
* [skip ci] Tweaks
* Use the compatible release clause for `charset_normalizer` requirement
Cf. https://www.python.org/dev/peps/pep-0440/#version-specifiers
* Clean-up
* Partially revert d52a4833e4
* Changelog
* Tweak tests
* [skip ci] Better test name
* Cleanup tests and add request body charset detection
* More test suite cleanups
* Cleanup
* Fix code style in test
* Improve detect_encoding() docstring
* Uniformize pytest.mark.parametrize() calls
* [skip ci] Comment out TODOs (will be tackled in a specific PR)
Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
* Make sure there’s no trailing \n in test files for easier output inspection
* Refactor output matching test utils
* More robust `test_http_307_allow_redirect_post_verbose()`
* Changelog
* Mention HTTP 307 Temporary Redirect re-post behaviour in README
https://docs.python.org/3.10/whatsnew/3.10.html#enum
Python 3.10 changed the repr of enum members, and the doctest of tests.utils.http failed.
Exact reprs are unfortunately not considered stable API between Python releases:
=================================== FAILURES ===================================
__________________________ [doctest] tests.utils.http __________________________
209
210 Example:
211
212 $ http --auth=user:password GET pie.dev/basic-auth/user/password
213
214 >>> httpbin = getfixture('httpbin')
215 >>> r = http('-a', 'user:pw', httpbin.url + '/basic-auth/user/pw')
216 >>> type(r) == StrCLIResponse
217 True
218 >>> r.exit_status
Expected:
<ExitStatus.SUCCESS: 0>
Got:
ExitStatus.SUCCESS
A simple replacement of the expected output however breaks the doctest on Python 3.9.
This is the best solution I could think of
that keeps the docstring readable and doctest working in Pythons both old and new.