All Versions
45
Latest Version
Avg Release Cycle
102 days
Latest Release
430 days ago

Changelog History
Page 1

  • v20.2.1 Changes

    August 12, 2020

    (August 11, 2020)

    • ๐Ÿ‘Œ Improve import time of [iterutils][iterutils] by deferring hashlib/socket imports
    • Add custom repr parameter to [funcutils.format_invocation][funcutils.format_invocation]
  • v20.2.0 Changes

    June 22, 2020

    (June 21, 2020)

    • โž• Added [iterutils.lstrip][iterutils.lstrip], [iterutils.rstrip][iterutils.rstrip], [iterutils.strip][iterutils.strip]
    • More robust and complete [strutils.strip_ansi][strutils.strip_ansi]
    • Add [iterutils.untyped_sorted][iterutils.untyped_sorted]
    • ๐Ÿ›  Fixes to [IndexedSet][IndexedSet] rsub and index methods
    • ๐Ÿ”ฆ Expose text mode flag in [fileutils.AtomicSaver][fileutils.AtomicSaver]
    • Add [strutils.int_list_complement][strutils.int_list_complement] and [strutils.int_list_to_int_tuples][strutils.int_list_to_int_tuples] to the int_list suite.
    • ๐Ÿ“„ Docs: intersphinx links finally point to Python 3 docs
  • v20.1.0 Changes

    March 30, 2020

    (March 29, 2020)

    • โšก๏ธ Add [funcutils.update_wrapper][funcutils.update_wrapper], used to make a wrapper function reflect various aspects of the wrapped function's API.
    • Fix [FunctionBuilder][FunctionBuilder] handling of functions without __module__
    • โž• Add partial support to [FunctionBuilder][FunctionBuilder]
    • ๐Ÿ›  Fix [NetstringSocket][socketutils.NetstringSocket]'s handling of arguments in read_ns
    • ๐Ÿ›  Fix [IndexedSet][IndexedSet]'s index() method to account for removals
    • โž• Add seekable, readable, and writable to SpooledIOBase
    • โž• Add a special case to singularize
    • ๐Ÿ›  Fix various warnings for Py3.9
  • v20.0.0 Changes

    January 08, 2020

    ๐Ÿš€ First release of the year! Also the first release in a while to add a new module, pathutils!

    ๐Ÿ‘€ See complete details for in the CHANGELOG

  • v19.4.0 Changes

    ๐Ÿš€ (Unreleased)

    ๐Ÿ†• New module [pathutils][pathutils]:

    • [pathutils.augpath][pathutils.augpath] augments a path by modifying its components
    • [pathutils.shrinkuser][pathutils.shrinkuser] inverts :func:os.path.expanduser.
    • [pathutils.expandpath][pathutils.expandpath] shell-like environ and tilde expansion

    โœ… [pathutils.augpath]: https://boltons.readthedocs.io/en/latest/funcutils.html#boltons.pathutils.augpath โœ… [pathutils.shrinkuser]: https://boltons.readthedocs.io/en/latest/funcutils.html#boltons.pathutils.shrinkuser โœ… [pathutils.expandpath]: https://boltons.readthedocs.io/en/latest/funcutils.html#boltons.pathutils.expandpath

  • v19.3.0 Changes

    October 29, 2019

    (October 28, 2019)

    Three funcutils:

    • [funcutils.format_invocation][funcutils.format_invocation] for formatting simple function calls func(pos1, pos2, kw_k=kw_v)
    • funcutils.format_exp_repr for formatting a repr like Type(pos, kw_k=kw_v)
    • funcutils.format_nonexp_repr for formatting a repr like <Type k=v>

    โœ… [funcutils.format_invocation]: https://boltons.readthedocs.io/en/latest/funcutils.html#boltons.funcutils.format_invocation

  • v19.2.0 Changes

    October 19, 2019

    (October 19, 2019)

    ๐Ÿ›  A bunch of small fixes and enhancements.

    • [tbutils.TracebackInfo][tbutils.TracebackInfo]'s from_frame now respects level arg
    • [OrderedMultiDict.sorted()][OrderedMultiDict.sorted] now maintains all items, not just the most recent
    • [setutils.complement()][setutils.complement] now supports __rsub__ for better interop with the builtin set
    • โš  [FunctionBuilder][FunctionBuilder] fixed a few py3 warnings related to inspect module usage (formatargspec)
    • [iterutils.bucketize][iterutils.bucketize] now takes a string key which works like an attribute getter, similar to other iterutils functions
    • ๐Ÿ“„ Docstring fixes across the board
    • 0๏ธโƒฃ CI fixes for Travis default dist change

    โœ… [OrderedMultiDict.sorted]: http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OrderedMultiDict.sorted

  • v19.1.0 Changes

    March 01, 2019

    (February 28, 2019)

    Couple of enhancements, couple of cleanups.

    • ๐Ÿ‘ [queueutils][queueutils] now supports float-based priorities (#204)
    • [FunctionBuilder][funcutils.FunctionBuilder] has a new get_arg_names() method, and its get_defaults_dict() method finally includes kwonly argument defaults.
    • [strutils.gzip_bytes][strutils.gzip_bytes] arrives to match [strutils.gunzip_bytes][strutils.gunzip_bytes]
  • v19.0.1 Changes

    March 01, 2019

    (February 12, 2019)

    ๐Ÿš€ Quick release to enhance [FunctionBuilder][funcutils.FunctionBuilder] and [funcutils.wraps][funcutils.wraps] to maintain function annotations on Python 3+. (#133, #134, #203)

  • v19.0.0 Changes

    February 11, 2019

    (February 10, 2019)

    ๐Ÿš€ A very big release indeed, perhaps the biggest yet. A big, big thank you to all the contributors!

    • ๐Ÿ†• New types and utilities
      • [dictutils.ManyToMany][dictutils.ManyToMany] arrives, to complement [dictutils.OneToOne][dictutils.OneToOne]
      • [dictutils.FrozenDict][dictutils.FrozenDict] brings immutable mapping to a module near you (#105)
      • [setutils.complement()][setutils.complement] introduces "negative" sets, useful for exclusion and many other set operations
      • [iterutils.soft_sorted()][iterutils.soft_sorted] allows for looser, more flexible sorting of sequences
      • [iterutils.flatten_iter()][iterutils.flatten_iter] and [iterutils.flatten()][iterutils.flatten], to collapse nested iterables. (#118)
      • [mathutils.Bits][mathutils.Bits] type for representing a bitstring and translating between integer, bytestring, hex, and boolean sequence representations.
    • funcutils improvements
      • [FunctionBuilder][funcutils.FunctionBuilder] and [funcutils.wraps][funcutils.wraps] now support coroutines/async (#194)
      • [FunctionBuilder.add_arg()][funcutils.FunctionBuilder.add_arg] allows the addition of arguments to the signature, to match [FunctionBuilder.remove_arg()][funcutils.FunctionBuilder.remove_arg] (#201)
      • Similarly [funcutils.wraps()][funcutils.wraps] now takes an "expected" argument, to complement "injected" (#161)
    • ๐Ÿ›  Other bugfixes and improvements
      • [cacheutils.LRI][cacheutils.LRI] is now threadsafe and correctly evicts when duplicate keys are added (#155, #157)
      • [dictutils.subdict()][dictutils.subdict] now does its best to return the same type of dictionary it was passed.
      • [urlutils][urlutils] now has better IPv6 support and URL can be used more natively like a string
      • Improve singularization in [strutils][strutils]
      • Fix some deprecation warnings in Python 3.7 (#165, #196)
      • Document the change in dict constructor behavior affecting [dictutils.OMD][dictutils.OMD] under Python 3.7+ (#179)