Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wishlist for 3.0 milestone #3

Closed
Ousret opened this issue Aug 30, 2023 · 5 comments
Closed

Wishlist for 3.0 milestone #3

Ousret opened this issue Aug 30, 2023 · 5 comments

Comments

@Ousret
Copy link
Member

Ousret commented Aug 30, 2023

List of curated issues that we may solve in the next major.

✔️ Trust store

psf#2966

A possible option is to include sethmlarson/truststore optionally (depending on given platform)
and fallback to certifi if not available.

✔️ Advanced connection inspection

urllib3/urllib3#1071
https://niquests.readthedocs.io/en/latest/user/advanced.html#event-hooks

✔️ Default timeout

psf#3070

Async mode

psf#1390

Complicated. But planning to enable full multiplexing capabilities in urllib3.future to replace the async needs.

✔️ Certificates

psf#2519

There are numerous pains that can be removed. Let's plan something that answers most demands.

  • Will probably rethink the whole environment variables. edit: will discard environment variables when os trust ca-bundle is used. niquests is not a CLI.. should never have accepted environment variables (but constraints imposed it)
  • Try to find an appropriate/secure way to accept path and bytes for certs/ca/keys

✔️ Make chardet/charset-normalizer optional

psf#5871

chardet support will be removed,
charset-normalizer will be kept,
apparent_encoding will be removed,
algorithm that decides whether to rely on it will be reviewed.
should definitely have a kill switch for those who want to override it.

✔️ BasicAuth and Unicode

psf#4564

Make Unicode the default,
accept a third optional item in tuple for encoding override. edit: still accept bytes directly.

Special headers

psf#6167

Should not need this anymore,
but could be interesting to overrule them,
Thinking needed.

won't do. does not really need it for now.

✔️ Charset fallback

psf#2086

In case we were unable to propose a viable way to decode the text.
We should make .text() return None or even throw an exception.
More in favor of (i).

Proxies

psf#2061

Make its usage more friendly.

✔️ Multi-dict like support

psf#1155

We may introduce kiss-headers as a potential replacement for the simple dict.
Or forward the HTTPHeaderDict from urllib3.

update: will remove the internal insensible dict and forward HTTPHeaderDict from urllib3. (headers default property) it is backward compatible. Then we will introduce a oheaders as for object oriented headers.

edit: HTTPHeaderDict from urllib3 isn't ready to be used instead of InsensibleDict. Postponing this to the next minor.
oheaders is available.

✔️ Type annotation

Must have for the next major.

@Ousret Ousret pinned this issue Aug 30, 2023
@Ousret
Copy link
Member Author

Ousret commented Sep 19, 2023

Fixed psf#6123 btw.

@Ousret
Copy link
Member Author

Ousret commented Sep 19, 2023

For truststore, I am not comfortable with the custom SSLContext.
The public API does not provide us a way to simply get a PEM-like output of the store.

I am inclined to use https://github.com/rustls/rustls-native-certs in a dedicated package.
Will be more compatible out of the box with qh3.

And we can make this work on Python 3.7+ instead of 3.10+
This would be awesome.

@Ousret
Copy link
Member Author

Ousret commented Sep 21, 2023

First publication (preview) https://github.com/jawah/niquests/releases/tag/v3.0.0b0

pip install niquests==3.0.0b0

@Ousret
Copy link
Member Author

Ousret commented Sep 22, 2023

I consider that list to be fulfilled.
v3.0 is ready to be released.

@Ousret Ousret closed this as completed Sep 22, 2023
@Ousret Ousret unpinned this issue Oct 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant