boltons v0.3.0 Release Notes
-
(October 19, 2014)
๐ First alpha release. Practically, everything not mentioned above was โ added in this release.
- tbutils: add ContextualTracebackInfo and ContextualExceptionInfo
- cacheutils: a few minor changes to the BasicCache
- update tbutils with some critical bits. still need to add convenience method for ExceptionInfo -> default exception print, also need to add more docstrings.
- adding initial jsonutils with JSONL support
- added [cacheutils.LRU][cacheutils.LRU]
- added [timeutils.parse_timedelta][timeutils.parse_timedelta]
- fixing iteritems with multi=False in the [dictutils.OrderedMultiDict][dictutils.OrderedMultiDict] (should return first key, but last value not first)
- debugutils: add pdb excepthook and debugutils.pdb_on_signal
- add [fileutils.mkdir_p][fileutils.mkdir_p]
- tableutils: add maxlen to table text stuff
- fix date citation for gob's
- adding pure-Python implementation of Gob's algorithm
- fix object header guessing
- namedutils: add namedtuple support
- fix a headers bug in tableutils
- tableutils: add a couple more do-not-recurse types, add UnsupportedData exception for better recursion, insert recursive entries in-line, improve 'Object' strategy heuristic
- wrap up html tag customization and fix a related bug
- make html configurable via class attributes
- strengthen the max_depth check
- InputType classes are just shorter and clearer, imo
- new from_dict, from_list, from_object, removing old ones. almost used a MetaClass for this
- starting new table
- only update the integer for the field being updated
- fixing a verbalization/pronunciation issue
- no regex for better error messages
- being opinionated about some FilePerms things
- adding initial version of fileutils/FilePerms
- update formatutils
- fix a slightly nasty namedlist bug
- make OrderedMultiDict.get()'s default allow singulars
- sync over ExceptionInfo
- add from_current() classmethod with depth option to [Callpoint][tbutils.Callpoint] class for easier instantiation
- it's called a numeronym
- add a repr to ParsedTB. A bit verbose, but better than nothing.
- add ParsedTB, which provides the ability to parse tracebacks dumped out to logs, the command line, etc.
- improve test output and make assertion that new except hook is the same as the builtin.
- update tbutils to use the more-powerful [Callpoint][tbutils.Callpoint] type.
- copy_function
- partially clean up partial stuff
- first version of the namedlist
- fixing up namedtuple, groundwork for namedlist. humorously named module.
- embed value in cell for incremental iteration boost on OMD
- reorganize code, add 'default' argument to poplast()
- make key argument optional to OMD.poplast
- rectifying inconsistent names and adjusting respective tests accordingly. using smashcase because that's what builtin dict() uses.
- fix reverse; missing yield from!
- add initial table biz
- add get_counts
- add [dictutils.OrderedMultiDict.get_inverted]dictutils.OrderedMultiDict.get_inverted for those handy reverse lookups
- break out skip list to FastIter OMD + bench
- add [strutils.a10n]strutils.a10n
- fix a bug in [dictutils.OrderedMultiDict][dictutils.OrderedMultiDict]'s .add()
- adding initial reimplementation of OMD
- adding some tests to dictutils
- update boltons formatutils to match what's going on in lithoxyl
- remove infer_pos_args() from strutils (already in formatutils)
- add formatutils to boltons
- fix a potential infinite recursion in LocalTZ
- use more explicit names for Local/Constant tzinfo types
- add a basic but handy file finder
- add infer_positional_args() to strutils (from lithoxyl)
- split BasicCache out of dictutils into cacheutils
- update median calculation slightly
- add appropriate stacklevel to deprutils warning
- add an initial version of deprutils (basic utils for facilitating deprecation)
- add bytes2human
- first version of some basic timezone utils which came in handy for a train scheduling application I wrote (etavta)
- reorder imports for pep8
- redo plain-english relative_time() to have a decimal rounding factor and handle future dates
- swap the order of cardinalize()'s arguments after intuiting the wrong order a couple times. gotta be consistent, this isn't PHP.
- a weird little relative time approach
- add total_seconds() implementation for Python <2.7, rename relative_datetime to relative_time
- add a relative datetime function in a new module: timeutils
- a little more transparency with orderedmultidict's maphistory
- add a test for BasicCache
- add the super simple BasicCache, a size-limited defaultdict-like thing
- add a cheesy little splay list construct that can be used for splay- like manual reordering for eventual optimization
- traceback utils, first draft
- add [strutils.strip_ansi][strutils.strip_ansi] (need to make a cliutils or something)
- add ansi strip task
- mess with list tuning
- add ordinalize()
- add all to statsutils
- add more stats docs and doctests
- add some stats functions
- add unit_len()
- add pluralize/singularize/cardinalize to strutils
- add alls all around, clean up imports a bit
- adding license
- add sorted queue type, make it the default
- fix little bug in insert
- inheriting from list necessitates overriding the deprecated __get-, __set-, and __del- slice methods
- hacky refactor to have a BasePriorityQueue to make room for SortedPriorityQueue with peek_n, etc.
- add a little docstring and update sort method in BarrelList
- add HeapPriorityQueue
- tidy up listutils comments and imports
- move treeutils out of boltons since I don't really think a pure python version actually adds much. i'll make an academic one-off repo for less practical data structure experiments like that.
- inherit from list
- add reverse() to blist
- add index() to blist
- cheesy setitem() for blist
- add delitem() to BarrelList
- change the way the in-place sort works with just one list
- tune the list size a bit
- add slicing to BarrelList
- add initial version of BarrelList, a pure-python b-list-y thing to approximate O(log(n)) behavior by multiplexing the fast O(n) list operations
- switch to new dead index interval approach; the IndexedSet is about half the speed of a list in the ultra-pathological case of random popping on the low end of the IndexedSet
- made BisectTree's get() defaulting work a bit more like a dict's
- added get_adjacent and miscellaneous to BisectTree
- added a default name and always-falsy nonzero to Sentinel
- add pop() for BisectTree and export the generic Tree
- make a bisect tree, because O(n) is still pretttttty fast up to about 100k items
- add a little hack to chunked/chunked_iter to make it work nicely with strings
- tidy up ki_vs_vi_lrh usage just a titch
- revamp indices behavior (key_size and value_size)
- switch to new multi-key mode
- pretty much done porting insert, delete, balance (the basic operations)
- switch to negative refs, arbitrary length nodes
- add sentinel utility thing
- add .index() for list compat, updated exception messages, and added a silly test to show off slicing and indexing
- add slicing support and .clear()
- remove ifilter dependency (using generator expression)
- add .reverse and .sort() to IndexedSet, fix bisection related bug exposing MISSING (insort requested index, not real_index)
- pretty much all fundy IndexedSet bugs hit and fixed, looks like
- IndexedSet getting much closer
- initial rough draft of IndexedSet with a short docstring and a bunch of fixes already (still not workin tho)
- add dictutils (OrderedMultiDict)
- it was a long time coming, but I'm finally halfway happy with this wrapped exception
- add uniqueification capabilities
- go back to using new and positional arguments
- exception wrapping green path mostly working
- working on a wrapping exception mixin thing for less lossy nonraising.
- add asciify and update slugify with ascii flag
- add basic docs and doctests to strutils
- scratch that, regexes still faster
- add under2camel, camel2under, and slugify (and split_punct_ws, which is much faster than re-based punctuation splitting)
- python3-compatible doctest for bucketize_bool
- bucketize and bucketize_bool, with docs
- add examples to chunked and chunked_iter
- update split() docs with more examples.
- [iterutils.chunked_iter][iterutils.chunked_iter] and [iterutils.chunked][iterutils.chunked]
- [iterutils.split][iterutils.split] and [iterutils.split_iter][iterutils.split_iter] work
๐ [os.replace]: https://docs.python.org/3/library/os.html#os.replace ๐ [functools.total_ordering]: https://docs.python.org/2/library/functools.html#functools.total_ordering ๐ [StringIO]: https://docs.python.org/2/library/stringio.html
โ [cacheutils]: http://boltons.readthedocs.org/en/latest/cacheutils.html โ [cacheutils.LRI]: http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.LRI โ [cacheutils.LRU]: http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.LRU โ [cacheutils.ThresholdCounter]: http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.ThresholdCounter โ [cacheutils.cached]: http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.cached โ [cacheutils.cachedmethod]: http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.cachedmethod โ [cacheutils.cachedproperty]: http://boltons.readthedocs.org/en/latest/cacheutils.html#boltons.cacheutils.cachedproperty
โ [dictutils]: http://boltons.readthedocs.org/en/latest/dictutils.html โ [dictutils.OMD]: http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OMD โ [dictutils.OMD.pop]: http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OrderedMultiDict.pop โ [dictutils.OMD.popall]: http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OrderedMultiDict.popall โ [dictutils.OMD.setdefault]: http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OrderedMultiDict.setdefault โ [dictutils.OrderedMultiDict]: http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OrderedMultiDict โ [dictutils.OrderedMultiDict.get_inverted]: http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OrderedMultiDict.get_inverted โ [dictutils.OneToOne]: http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.OneToOne โ [dictutils.ManyToMany]: http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.ManyToMany โ [dictutils.FrozenDict]: http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.FrozenDict โ [dictutils.subdict]: http://boltons.readthedocs.org/en/latest/dictutils.html#boltons.dictutils.subdict โ [ecoutils]: http://boltons.readthedocs.org/en/latest/ecoutils.html โ [excutils.ParsedException]: http://boltons.readthedocs.org/en/latest/excutils.html#boltons.excutils.ParsedException โ [fileutils]: http://boltons.readthedocs.org/en/latest/fileutils.html โ [fileutils.replace]: http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.replace โ [fileutils.atomic_rename]: http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.atomic_rename ๐พ [fileutils.atomic_save]: http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.atomic_save โ [fileutils.AtomicSaver]: http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.AtomicSaver โ [fileutils.FilePerms]: http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.FilePerms
โ [fileutils.mkdir_p]: http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.mkdir_p โ [fileutils.DummyFile]: http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.DummyFile โ [formatutils]: http://boltons.readthedocs.org/en/latest/formatutils.html โ [formatutils.DeferredValue]: http://boltons.readthedocs.org/en/latest/formatutils.html#boltons.fileutils.DeferredValue โ [funcutils.FunctionBuilder]: http://boltons.readthedocs.org/en/latest/funcutils.html#boltons.funcutils.FunctionBuilder ๐ [funcutils.FunctionBuilder.remove_arg]: https://boltons.readthedocs.io/en/latest/funcutils.html#boltons.funcutils.FunctionBuilder.remove_arg โ [funcutils.FunctionBuilder.add_arg]: https://boltons.readthedocs.io/en/latest/funcutils.html#boltons.funcutils.FunctionBuilder.add_arg โ [funcutils.partial_ordering]: http://boltons.readthedocs.org/en/latest/funcutils.html#boltons.funcutils.partial_ordering โ [funcutils.total_ordering]: http://boltons.readthedocs.org/en/latest/funcutils.html#boltons.funcutils.total_ordering โก๏ธ [funcutils.update_wrapper]: http://boltons.readthedocs.org/en/latest/funcutils.html#boltons.funcutils.update_wrapper โ [funcutils.wraps]: http://boltons.readthedocs.org/en/latest/funcutils.html#boltons.funcutils.wraps โ [gcutils.GCToggler]: http://boltons.readthedocs.org/en/latest/gcutils.html#boltons.gcutils.GCToggler โ [gcutils.get_all]: http://boltons.readthedocs.org/en/latest/gcutils.html#boltons.gcutils.get_all โ [gcutils.is_tracked]: http://boltons.readthedocs.org/en/latest/gcutils.html#boltons.gcutils.is_tracked
โ [ioutils]: http://boltons.readthedocs.org/en/latest/ioutils.html โ [ioutils.MultiFileReader]: http://boltons.readthedocs.org/en/latest/ioutils.html#boltons.ioutils.MultiFileReader โ [ioutils.SpooledBytesIO]: http://boltons.readthedocs.org/en/latest/ioutils.html#boltons.ioutils.SpooledBytesIO โ [ioutils.SpooledStringIO]: http://boltons.readthedocs.org/en/latest/ioutils.html#boltons.ioutils.SpooledStringIO โ [iterutils]: http://boltons.readthedocs.org/en/latest/iterutils.html โ [iterutils.backoff]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.backoff โ [iterutils.backoff_iter]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.backoff_iter โ [iterutils.chunked]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.chunked โ [iterutils.chunked_iter]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.chunked_iter โ [iterutils.first]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.first โ [iterutils.flatten]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.flatten โ [iterutils.flatten_iter]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.flatten_iter โ [iterutils.backoff]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.backoff โ [iterutils.frange]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.frange โ [iterutils.GUIDerator]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.GUIDerator โ [iterutils.SequentialGUIDerator]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.SequentialGUIDerator โ [iterutils.is_container]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.is_container โ [iterutils.bucketize]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.bucketize โ [iterutils.one]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.one โ [iterutils.pairwise]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.pairwise โ [iterutils.same]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.same โ [iterutils.remap]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.remap โ [iterutils.research]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.research โ [iterutils.soft_sorted]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.soft_sorted โ [iterutils.untyped_sorted]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.untyped_sorted โ [iterutils.split]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.split โ [iterutils.split_iter]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.split_iter โ [iterutils.strip]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.strip โ [iterutils.rstrip]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.rstrip โ [iterutils.lstrip]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.lstrip โ [iterutils.unique]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.unique โ [iterutils.windowed_iter]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.windowed_iter โ [iterutils.xfrange]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.xfrange โ [jsonutils.JSONLIterator]: http://boltons.readthedocs.org/en/latest/jsonutils.html#boltons.jsonutils.JSONLIterator โ [mathutils.Bits]: http://boltons.readthedocs.org/en/latest/mathutils.html#boltons.mathutils.Bits โ [mathutils.ceil]: http://boltons.readthedocs.org/en/latest/mathutils.html#boltons.mathutils.ceil โ [mathutils.floor]: http://boltons.readthedocs.org/en/latest/mathutils.html#boltons.mathutils.floor โ [mathutils.clamp]: http://boltons.readthedocs.org/en/latest/mathutils.html#boltons.mathutils.clamp โ [queueutils]: http://boltons.readthedocs.org/en/latest/queueutils.html โ [setutils.complement]: http://boltons.readthedocs.org/en/latest/setutils.html#boltons.setutils.complement โ [IndexedSet]: http://boltons.readthedocs.org/en/latest/setutils.html#boltons.setutils.IndexedSet โ [socketutils]: http://boltons.readthedocs.org/en/latest/socketutils.html โ [socketutils.BufferedSocket]: http://boltons.readthedocs.org/en/latest/socketutils.html#boltons.socketutils.BufferedSocket โ [socketutils.BufferedSocket.recv]: http://boltons.readthedocs.org/en/latest/socketutils.html#boltons.socketutils.BufferedSocket.recv โ [socketutils.BufferedSocket.recv_until]: http://boltons.readthedocs.org/en/latest/socketutils.html#boltons.socketutils.BufferedSocket.recv_until โ [socketutils.BufferedSocket.recv_close]: http://boltons.readthedocs.org/en/latest/socketutils.html#boltons.socketutils.BufferedSocket.recv_close โ [socketutils.NetstringSocket]: http://boltons.readthedocs.org/en/latest/socketutils.html#boltons.socketutils.NetstringSocket โ [statsutils]: http://boltons.readthedocs.org/en/latest/statsutils.html โ [statsutils.Stats]: http://boltons.readthedocs.org/en/latest/statsutils.html#boltons.statsutils.Stats โ [statsutils.Stats.clear_cache]: http://boltons.readthedocs.org/en/latest/statsutils.html#boltons.statsutils.Stats.clear_cache โ [statsutils.Stats.describe]: http://boltons.readthedocs.org/en/latest/statsutils.html#boltons.statsutils.Stats.describe โ [statsutils.Stats.format_histogram]: http://boltons.readthedocs.org/en/latest/statsutils.html#boltons.statsutils.Stats.format_histogram โ [statsutils.Stats.get_zscore]: http://boltons.readthedocs.org/en/latest/statsutils.html#boltons.statsutils.Stats.get_zscore โ [statsutils.median]: http://boltons.readthedocs.org/en/latest/statsutils.html#boltons.statsutils.median โ [statsutils.trimean]: http://boltons.readthedocs.org/en/latest/statsutils.html#boltons.statsutils.trimean โ [strutils]: http://boltons.readthedocs.org/en/latest/strutils.html โ [strutils.HTMLTextExtractor]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.HTMLTextExtractor โ [strutils.a10n]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.a10n โ [strutils.args2cmd]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.args2cmd โ [strutils.args2sh]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.args2sh
โ [strutils.find_hashtags]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.find_hashtags โ [strutils.gzip_bytes]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.gzip_bytes โ [strutils.gunzip_bytes]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.gunzip_bytes โ [strutils.html2text]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.html2text โ [strutils.indent]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.indent โ [strutils.iter_splitlines]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.iter_splitlines โ [strutils.ordinalize]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.ordinalize โ [strutils.pluralize]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.pluralize โ [strutils.is_ascii]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.is_ascii โ [strutils.is_uuid]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.is_uuid
โ [strutils.slugify]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.slugify โ [strutils.strip_ansi]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.strip_ansi โ [tableutils]: http://boltons.readthedocs.org/en/latest/tableutils.html โ [tableutils.Table]: http://boltons.readthedocs.org/en/latest/tableutils.html#boltons.tableutils.Table โ [tbutils]: http://boltons.readthedocs.org/en/latest/tbutils.html โ [tbutils.Callpoint]: http://boltons.readthedocs.org/en/latest/tbutils.html#boltons.tbutils.Callpoint โ [tbutils.ExceptionInfo]: http://boltons.readthedocs.org/en/latest/tbutils.html#boltons.tbutils.ExceptionInfo โ [tbutils.ParsedException]: http://boltons.readthedocs.org/en/latest/tbutils.html#boltons.tbutils.ParsedException โ [tbutils.ParsedException.to_string]: http://boltons.readthedocs.org/en/latest/tbutils.html#boltons.tbutils.ParsedException.to_string โ [tbutils.TracebackInfo]: http://boltons.readthedocs.org/en/latest/tbutils.html#boltons.tbutils.TracebackInfo โ [timeutils.daterange]: http://boltons.readthedocs.org/en/latest/timeutils.html#boltons.timeutils.daterange
โ [timeutils.isoparse]: http://boltons.readthedocs.org/en/latest/timeutils.html#boltons.timeutils.isoparse โ [timeutils.parse_timedelta]: http://boltons.readthedocs.org/en/latest/timeutils.html#boltons.timeutils.parse_timedelta โ [timeutils.strpdate]: http://boltons.readthedocs.org/en/latest/timeutils.html#boltons.timeutils.strpdate
โ [typeutils.make_sentinel]: http://boltons.readthedocs.org/en/latest/typeutils.html#boltons.typeutils.make_sentinel โ [urlutils]: http://boltons.readthedocs.org/en/latest/urlutils.html