Releases: gruns/furl
Furl v2.1.2.
Fixed: Support Python 3.9's changed urllib.parse.urljoin() behavior.
- < py3.9:
furl('wss://slrp.com/').join('foo:1')
->'wss://slrp.com/foo:1'
- >= py3.9:
furl('wss://slrp.com/').join('foo:1')
->'foo:1'
Changed: Drop semicolon query delimiters. See https://bugs.python.org/issue42967.
Changed: Drop support for EOL Python 3.4 and Python 3.5.
Furl v2.1.1.
Fixed: Export metadata variables (furl.__title__
, furl.__version__
, etc).
Added: scheme
, host
, netloc
, and origin
as parameters to furl.remove()
.
Changed: Homogenize parameter order across furl.add()
, furl.set()
, and furl.remove()
.
Changed: furl.origin
can be assigned None
. This has the same behavior as furl.remove(origin=True)
.
Furl v2.1.0.
-
Added: a
dont_quote=
parameter toQuery.encode()
and a
query_dont_quote=
parameter tofurl.tostr()
that exempt valid query
characters from being percent-encoded, either in their entirety with
dont_quote=True
, or selectively withdont_quote=<string>
, like
dont_quote='/?@_'
. -
Changed: Move package info from
__init__.py
into the more standard
__version__.py
. -
Fixed: Support Unicode usernames and passwords in Python 2.
-
Fixed: Update orderedmultdict to v1.0.1 to resolve a DeprecationWarning.
-
Fixed: Encode
'/'
consistently in query strings across both
quote_plus=True
andquote_plus=False
.
Furl v2.0.0
-
Added: All URL components (
scheme
,host
,path
, etc) tofurl()
's constructor as
keyword arguments. E.g.f = furl(scheme='http', host='host', path='/lolsup')
. -
Changed: furl.truediv() and Path.truediv() now mirror Pathlib.truediv()'s
behavior and return a new instance. The original instance is no longer modified.
Old behavior:f = furl('1'); f / '2' -> str(f) == '1'
. New behavior:
f = furl('1'); f /= '2' -> str(f) == '1/2'
. -
Fixed: Path.load() now accepts Path instances, e.g.
f.path.load(Path('hi'))
. -
Removed: Support for Python 2.6, which reached EOL on 2013-10-29.
Furl v1.2.1
- Fixed: Join URLs without an authority (e.g.
foo:blah
) consistently with
urllib.parse.urljoin().
Furl v1.2
- Added: Path segment appending via the division operator (__truediv__()).
- Changed: Bump orderedmultidict dependency to v1.0.
- Changed: Check code style with flake8 instead of pycodestyle.
- Changed: Percent-encode all non-unreserved characters in Query key=value pairs,
including valid query characters (e.g.=
,?
, etc). Old encoding:
?url=http://foo.com/
; new encoding:?url=http%3A%2F%2Ffoo.com%2F
. Equal
signs remain decoded in query values where the key is empty to allow for, and
preserve, queries like?==3==
.
Furl v1.1
- Fixed: Support and preserve all query strings as provided. For example, preserve
the query&&==
ofhttp://foo.com?&&==
as-is. Empty key=value pairs are
stored as('', None)
in Query.params, e.g.[('', None), ('', None)]
for the
query&
. - Changed: Don't encode equal signs (
=
) in query values if the key is empty.
That is, allow and preserve queries like?==3==
while also percent encoding
equal signs in query values with an associted key, as expected. E.g.
?a=1%3D1
.
Furl v1.0.2
- Added: strip_scheme() public function.
- Changed: Make get_scheme() and set_scheme() functions public.
- Added: Support all schemes without a netloc/authority, like
mailto:hi@email.com
, without an explicit whitelist of such schemes
(e.g.tel:
,sms:
,mailto:
, etc). - Fixed: Restore furl.url's setter method. E.g.
furl.url = 'http://www.foo.com/'
. - Removed: Support for Python 3.3, which reached EOL on 2017-09-29.
Furl v1.0.1
- Added: Add dictionary representations of Path, Query, Fragment, and furl
objects via an asdict() method.
Furl v1.0.0
- Added: Test against Python 3.6.
- Changed: Bumped the version number to v1.0 to signify that furl is a mature
and stable library. Furl has been marked Production/Stable in setup.py for a
long time anyhow -- it's high time for the version number to catch up.