- Fix 1.7.0 build error
- Add __bytes__() magic method so that bytes(url) will work and use optimal ASCII encoding. (#582)
- Started shipping platform-specific arm64 wheels for Apple Silicon. (#622)
- Started shipping platform-specific wheels with the
musl
tag targeting typical Alpine Linux runtimes. (#622) - Added support for Python 3.10. (#622)
- No longer loose characters when decoding incorrect percent-sequences (like
%e2%82%f8
). All non-decodable percent-sequences are now preserved. #517 - Provide x86 Windows wheels. #535
- Provide generated
.c
files in TarBall distribution. #530
- Provide wheels for
aarch64
,i686
,ppc64le
,s390x
architectures on Linux as well asx86_64
. #507 - Provide wheels for Python 3.9. #526
human_repr()
now always produces valid representation equivalent to the original URL (if the original URL is valid). #511- Fixed requoting a single percent followed by a percent-encoded character in the Cython implementation. #514
- Fix ValueError when decoding
%
which is not followed by two hexadecimal digits. #516 - Fix decoding
%
followed by a space and hexadecimal digit. #520 - Fix annotation of
with_query()
/update_query()
methods forkey=[val1, val2]
case. #528
- Drop Python 3.5 support; Python 3.6 is the minimal supported Python version.
- Allow for int and float subclasses in query, while still denying bool. #492
- Do not requote arguments in
URL.build()
,with_xxx()
and in/
operator. #502 - Keep IPv6 brackets in
origin()
. #504
- Fix including relocated internal
yarl._quoting_c
C-extension into published PyPI dists. #485
Convert host to lowercase on URL building. #386
Allow using
mod
operator (%) for updating query string (an alias forupdate_query()
method). #435Allow use of sequences such as
list
andtuple
in the values of a mapping such asdict
to represent that a key has many values:url = URL("http://example.com") assert url.with_query({"a": [1, 2]}) == URL("http://example.com/?a=1&a=2")
Support URL.build() with scheme and path (creates a relative URL). #464
Cache slow IDNA encode/decode calls. #476
Add
@final
/Final
type hints #477Support URL authority/raw_authority properties and authority argument of
URL.build()
method. #478Hide the library implementation details, make the exposed public list very clean. #483
- Fix tests with newer Python (3.7.6, 3.8.1 and 3.9.0+). #409
- Fix a bug where query component, passed in a form of mapping or sequence, is unquoted in unexpected way. #426
- Hide Query and QueryVariable type aliases in __init__.pyi, now they are prefixed with underscore. #431
- Keep ipv6 brackets after updating port/user/password. #451
- Workaround for missing str.isascii() in Python 3.6 #389
- Fix regression, make the library work on Python 3.5 and 3.6 again.
- Distinguish an empty password in URL from a password not provided at all (#262)
- Fixed annotations for optional parameters of
URL.build
(#309) - Use None as default value of
user
parameter ofURL.build
(#309) - Enforce building C Accelerated modules when installing from source tarball, use
YARL_NO_EXTENSIONS
environment variable for falling back to (slower) Pure Python implementation (#329) - Drop Python 3.5 support
- Fix quoting of plus in path by pure python version (#339)
- Don't create a new URL if fragment is unchanged (#292)
- Included in error msg the path that produces starting slash forbidden error (#376)
- Skip slow IDNA encoding for ASCII-only strings (#387)
- Fix annotations for
query
parameter (#207) - An incoming query sequence can have int variables (the same as for Mapping type) (#208)
- Add
URL.explicit_port
property (#218) - Give a friendlier error when port cant be converted to int (#168)
bool(URL())
now returnsFalse
(#272)
- Drop Python 3.4 trove classifier (#205)
- Fix annotations for
build
(#199)
- Fix annotations for
cached_property
(#195)
- Accept
str
subclasses inURL
constructor (#190)
- Fix build
- Pin minimal required Python to 3.5.3 (#189)
- Forbid inheritance, replace
__init__
with__new__
(#171) - Support PEP-561 (provide type hinting marker) (#182)
- Fix performance regression: don't encode enmpty netloc (#170)
- Make pure Python quoter consistent with Cython version (#162)
- Use fast path if quoted string does not need requoting (#154)
- Speed up quoting/unquoting by
_Quoter
and_Unquoter
classes (#155) - Drop
yarl.quote
andyarl.unquote
public functions (#155) - Add custom string writer, reuse static buffer if available (#157) Code is 50-80 times faster than Pure Python version (was 4-5 times faster)
- Don't recode IP zone (#144)
- Support
encoded=True
inyarl.URL.build()
(#158) - Fix updating query with multiple keys (#160)
- Fallback to IDNA 2003 if domain name is not IDNA 2008 compatible (#152)
- Use IDNA 2008 for domain name processing (#149)
- Fix raising
TypeError
byurl.query_string()
afterurl.with_query({})
(empty mapping) (#141)
- Add
raw_path_qs
attribute (#137)
- Restore
strict
parameter as no-op inquote
/unquote
- Restore
strict
parameter as no-op for sake of compatibility with aiohttp 2.2
- Drop strict mode (#123)
- Fix
"ValueError: Unallowed PCT %"
when there's a"%"
in the url (#124)
- Document
encoded
parameter (#102) - Support relative urls like
'?key=value'
(#100) - Unsafe encoding for QS fixed. Encode
;
char in value param (#104) - Process passwords without user names (#95)
- Properly support paths without leading slash in
URL.with_path()
(#90) - Enable type annotation checks
- Normalize path (#86)
- Clear query and fragment parts in
.with_path()
(#85)
- Prevent double URL args unquoting (#83)
- Unexpected hash behaviour (#75)
- Unexpected compare behaviour (#73)
- Do not quote or unquote + if not a query string. (#74)
- Added
URL.build
class method (#58) - Added
path_qs
attribute (#42)
- Do not quote
:
in path
- Load from pickle without _cache (#56)
- Percent-encoded pluses in path variables become spaces (#59)
- Revert backward incompatible change (BaseURL)
- Fix BaseURL rich comparison support
- Use BaseURL
- Added BaseURL
- Remove debug print
- Do not lose tail chars (#45)
- Allow to quote
%
in non strict mode (#21) - Incorrect parsing of query parameters with %3B (;) inside (#34)
- Fix core dumps (#41)
- tmpbuf - compiling error (#43)
- Added
URL.update_path()
method - Added
URL.update_query()
method (#47)
- Fix broken aiohttp: revert back
quote
/unquote
.
- Support more verbose error messages in
.with_query()
(#24) - Don't percent-encode
@
and:
in path (#32) - Don't expose
yarl.quote
andyarl.unquote
, these functions are part of private API
- Accept not only
str
but all classes inherited fromstr
also (#25)
- Accept
int
as value for.with_query()
- Explicitly use UTF8 encoding in setup.py (#20)
- Properly unquote non-UTF8 strings (#19)
- Don't use namedtuple fields but indexes on URL construction
- Inline
_encode
class method
- Make URL construction faster by removing extra classmethod calls
- Add cython optimization for quoting/unquoting
- Provide binary wheels
- Fix typing stubs
- Expose
quote()
andunquote()
as public API
- Support empty values in query (
'/path?arg'
)
- Introduce
relative()
(#16)
- Typo fixes #15
- Support sequence of pairs as
with_query()
parameter
- Introduce
is_default_port()
- Raise ValueError for URLs like 'http://:8080/'
- Avoid doubling slashes when joining paths (#13)
- Appending path starting from slash is forbidden (#12)
- Add kwargs support for
with_query()
(#10)
- Document
with_query()
,with_fragment()
andorigin()
- Allow
None
forwith_query()
andwith_fragment()
- Fix links, tune docs theme.
- Update README, old version used obsolete API
- The library was deeply refactored, bytes are gone away but all accepted strings are encoded if needed.
- The first release.