All Versions
Latest Version
Avg Release Cycle
117 days
Latest Release
1538 days ago

Changelog History

  • v2.1.0 Changes

    September 20, 2019

    โž• Added : a dont_quote= parameter to Query.encode() and a
    query_dont_quote= parameter to furl.tostr() that exempt valid query
    characters from being percent-encoded, either in their entirety with
    dont_quote=True, or selectively with dont_quote=<string>, like

    ๐Ÿ”„ Changed : Move package info from into the more standard

    ๐Ÿ›  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 and quote_plus=False.

  • v2.0.0 Changes

    October 16, 2018

    โž• Added: All URL components (scheme, host, path, etc) to furl()'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.

  • v1.2.1 Changes

    August 22, 2018
    • ๐Ÿ›  Fixed: Join URLs without an authority (e.g. foo:blah) consistently with
      ๐Ÿ“œ urllib.parse.urljoin().
  • v1.2 Changes

    June 29, 2018
    • 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=; new encoding: ? Equal
      signs remain decoded in query values where the key is empty to allow for, and
      preserve, queries like ?==3==.
  • v1.1 Changes

    May 31, 2018
    • ๐Ÿ›  Fixed: Support and preserve all query strings as provided. For example, preserve
      the query &&== of 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.
  • v1.0.2 Changes

    May 28, 2018
    • Added: strip_scheme() public function.
    • Changed: Make get_scheme() and set_scheme() functions public.
    • โž• Added: Support all schemes without a netloc/authority, like
      mailto:[email protected], without an explicit whitelist of such schemes
      (e.g. tel:, sms:, mailto:, etc).
    • Fixed: Restore furl.url's setter method. E.g. furl.url = ''.
    • โœ‚ Removed: Support for Python 3.3, which reached EOL on 2017-09-29.
  • v1.0.1 Changes

    November 20, 2017
    • โž• Added: Add dictionary representations of Path, Query, Fragment, and furl
      objects via an asdict() method.
  • v1.0.0 Changes

    November 20, 2017
    • โž• 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 for a
      long time anyhow -- it's high time for the version number to catch up.
  • v0.5.7 Changes

    March 01, 2017
    • ๐Ÿ›  Fixed: Only percent-decode percent-encoded path strings once, not twice.