Changelog History
Page 2
-
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)
- ๐ New types and utilities
-
v18.0.1 Changes
February 11, 2019(August 29, 2018)
๐ A few bugfixes and a handy text utility.
- โ Add MultiSub for multiple string substitutions in a single call ([#162][i162])
tableutils.Table.to_text()
is more Markdown compatible- โ Add LICENSE to package ([#164][i164])
- ๐
atomic_save
works better withoverwrite=True
([#161][i161]) - Reduced memory footprint on
tbutils._DeferredLine
with__slots__
-
v18.0.0 Changes
February 11, 2019(March 2, 2018)
- โ Add
<thead>
and<tbody>
structure to tableutils.Table HTML output, which helps with styling and other functionality (e.g., jQuery datatables). - โ Add [dictutils.subdict()][dictutils.subdict] to get a filtered version of a dictionary based on a subset of keys. ([#150][i150])
- โ Add beta version of cacheutils.MinIDMap.
- โ Add
-
v17.2.0 Changes
February 11, 2019(December 16, 2017)
๐ A big release with a lot of features and bugfixes, big and small. Just in time for the holidays!
- ๐ Better handling of
file
andfile
-like objects in [remap][iterutils.remap]'sdefault_enter
- ๐ Fix line-by-line iteration in [ioutils][ioutils] types
- ๐ Change [strutils.slugify][strutils.slugify] to always output at least a single-character slug (in cases of all-punctuation/whitespace inputs).
- ๐ Fix [DeferredValue][formatutils.DeferredValue] caching in [formatutils][formatutils]
- โ Add [OneToOne][dictutils.OneToOne] to [dictutils][dictutils]
- โ Add [MultiFileReader][ioutils.MultiFileReader] to [ioutils][ioutils] (see [#135][i135])
- ๐ Support passing
dir
argument to [ioutils][ioutils] SpooledIO types - ๐ fix default arguments for [mathutils.clamp][mathutils.clamp] (see [#128][i128])
- โ Add [iterutils.research][iterutils.research], a [remap][iterutils.remap]-based recursive search function for nested data
- Improved and expanded [urlutils.SCHEME_PORT_MAP][urlutils.SCHEME_PORT_MAP]
- Simplify [urlutils.find_all_links][urlutils.find_all_links] signature
- ๐ Better handling of
-
v17.1.0 Changes
February 11, 2019(February 27, 2017)
Add urlutils module, with URL type and find_all_links function. also
โก๏ธ update Sentinel for Python 3 falsiness- โ Add urlutils module, complete with RFC3986-compliant
URL
type - Also add
urlutils.find_all_links
function, which heuristically
finds all links in plaintext, and creates URLs out of them. - โก๏ธ Update typeutils.Sentinel to be appropriately falsy on Python 3
- โ Add urlutils module, complete with RFC3986-compliant
-
v17.0.0 Changes
January 25, 2017(January 24, 2017)
Several tweaks and enhancements to ring in the new year.
- [tbutils][tbutils] objects like the [ExceptionInfo][tbutils.ExceptionInfo] are now more easily JSON-serializable thanks to a tweak to [Callpoint][tbutils.Callpoint].
- SpooledIO objects like
[ioutils.SpooledBytesIO][ioutils.SpooledBytesIO] are now
bool
-able. - [iterutils.bucketize][iterutils.bucketize] gains the
value_transform
andkey_filter
arguments. - [cachedproperty][cacheutils.cachedproperty] properly maintains docstring
- [funcutils.wraps][funcutils.wraps] maintains a reference to the
wrapped function with
__wrapped__
attribute. - A bit of cleanup to be backwards compatible to Python 3.3
-
v16.5.1 Changes
(November 6, 2016)
๐ Mostly bug fixes and various tweaks, optimizations, and ๐ documentation. Also added a bit of functionality in the form of [ioutils][ioutils] and some GUID stuff.
- โ Add [ioutils][ioutils] with [SpooledStringIO][ioutils.SpooledStringIO] and [SpooledBytesIO][ioutils.SpooledBytesIO], two in-memory file-like objects, like the stdlib [StringIO][StringIO], except that they automatically spill over to disk when they reach a configurable size.
- โ Add [iterutils.GUIDerator][iterutils.GUIDerator] and [iterutils.SequentialGUIDerator][iterutils.SequentialGUIDerator], two methods of getting random iterables.
- โ Add [mathutils.clamp][mathutils.clamp], a combined min-max function, like numpy's clip.
- โก๏ธ Optimized [iterutils.first][iterutils.first].
- Enabled spillover kwargs in [funcutils.wraps][funcutils.wraps]
- ๐ fix for default [remap][iterutils.remap] set support, fixes [#84][i84]
- โ improving and testing exceptions around classmethod and staticmethod for [funcutils.wraps][funcutils.wraps] and [FunctionBuilder][funcutils.FunctionBuilder], fixes [#86][i86] to the degree possible.
-
v16.5.0 Changes
(July 16, 2016)
A few minor changes, and medium-sized breaking change to [cacheutils][cacheutils].
- [cacheutils][cacheutils] caching decorators now take the function/method into account by default. This was done by adding the scoped argument to [@cached][cacheutils.cached] and [@cachedmethod][cacheutils.cachedmethod] (and removing selfish from cachedmethod). also fixed a bug in a cachedmethod test, as well as added docs for scoped and key arguments. all of this to fix [#83][i83].
- [tableutils.Table][tableutils.Table] cell html can be customized by
overriding
get_cell_html
method. - [funcutils.total_ordering][funcutils.total_ordering], a [functools.total_ordering][functools.total_ordering] backport for python 2.6.
- [funcutils.FunctionBuilder][funcutils.FunctionBuilder] function names are now configurable.
-
v16.4.1 Changes
(June 14, 2016)
๐ This release primarily contains several [statsutils][statsutils] updates.
- The biggest change was the addition of [Stats.format_histogram][statsutils.Stats.format_histogram] complete with Freedman bin selection and other useful options.
- โ Added inter-quartile range (iqr) to [statsutils.Stats][statsutils.Stats]
- โ Adding mad (median absolute deviation) to [Stats.describe][statsutils.Stats.describe], since median and std_dev were already there.
-
v16.4.0 Changes
(June 8, 2016)
๐ another significant release, thanks to the addition of funcutils.wraps and funcutils.FunctionBuilder. also iterutils.chunked speedup, and ๐ tbutils.ParsedException.to_string.
- [funcutils.wraps][funcutils.wraps]: Just like functools.wraps, but can preserve the function signature as well.
- [funcutils.FunctionBuilder][funcutils.FunctionBuilder]: The basis for [funcutils.wraps][funcutils.wraps], this full-featured type enables programmatically creating functions, from scratch or from existing functions. Supports all Python 2 and 3 function features.
- [ecoutils][ecoutils]: Python 2.4 and 2.5 support.
- [iterutils][iterutils]: optimize [iterutils.chunked_iter][iterutils.chunked_iter] (2-5x faster depending on runtime). [See #79][i79].
- [tbutils][tbutils]: add the [ParsedException.to_string][tbutils.ParsedException.to_string] method, to convert parsed exceptions back into strings, possibly after manipulation
- switch FunctionBuilder on Python 2 to be congruent with Python 3 (keywords attribute renamed to varkw, preview users might have to adjust)