_(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][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 **all**s 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
[zscore]: https://en.wikipedia.org/wiki/Standard_score
[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
[debugutils.pdb_on_signal]: http://boltons.readthedocs.org/en/latest/debugutils.html#boltons.debugutils.pdb_on_signal
[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.iter_find_files]: http://boltons.readthedocs.org/en/latest/fileutils.html#boltons.fileutils.iter_find_files
[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
[i12]: https://github.com/mahmoud/boltons/issues/12
[i13]: https://github.com/mahmoud/boltons/issues/13
[i15]: https://github.com/mahmoud/boltons/issues/15
[i20]: https://github.com/mahmoud/boltons/issues/20
[i21]: https://github.com/mahmoud/boltons/issues/21
[i30]: https://github.com/mahmoud/boltons/issues/30
[i41]: https://github.com/mahmoud/boltons/issues/41
[i79]: https://github.com/mahmoud/boltons/pull/79
[i83]: https://github.com/mahmoud/boltons/issues/83
[i84]: https://github.com/mahmoud/boltons/issues/84
[i86]: https://github.com/mahmoud/boltons/issues/86
[i128]: https://github.com/mahmoud/boltons/issues/128
[i135]: https://github.com/mahmoud/boltons/issues/135
[i150]: https://github.com/mahmoud/boltons/issues/150
[i161]: https://github.com/mahmoud/boltons/issues/161
[i162]: https://github.com/mahmoud/boltons/issues/162
[i164]: https://github.com/mahmoud/boltons/issues/164
[i294]: https://github.com/mahmoud/boltons/issues/294
[i302]: https://github.com/mahmoud/boltons/issues/302
[i303]: https://github.com/mahmoud/boltons/issues/303
[i305]: https://github.com/mahmoud/boltons/issues/305
[i312]: https://github.com/mahmoud/boltons/issues/312
[i315]: https://github.com/mahmoud/boltons/issues/315
[i320]: https://github.com/mahmoud/boltons/issues/320
[i323]: https://github.com/mahmoud/boltons/issues/323
[i326]: https://github.com/mahmoud/boltons/issues/326
[i327]: https://github.com/mahmoud/boltons/issues/327
[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.chunk_ranges]: http://boltons.readthedocs.org/en/latest/iterutils.html#boltons.iterutils.chunk_ranges
[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.escape_shell_args]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.escape_shell_args
[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.parse_int_list]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.parse_int_list
[strutils.format_int_list]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.format_int_list
[strutils.int_list_complement]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.int_list_complement
[strutils.int_list_to_int_tuples]: http://boltons.readthedocs.org/en/latest/strutils.html#boltons.strutils.int_list_to_int_tuples
[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.decimal_relative_time]: http://boltons.readthedocs.org/en/latest/timeutils.html#boltons.timeutils.decimal_relative_time
[timeutils.dt_to_timestamp]: http://boltons.readthedocs.org/en/latest/timeutils.html#boltons.timeutils.dt_to_timestamp
[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.get_all_subclasses]: http://boltons.readthedocs.org/en/latest/typeutils.html#boltons.typeutils.get_all_subclasses
[typeutils.make_sentinel]: http://boltons.readthedocs.org/en/latest/typeutils.html#boltons.typeutils.make_sentinel
[urlutils]: http://boltons.readthedocs.org/en/latest/urlutils.html
[urlutils.SCHEME_PORT_MAP]: http://boltons.readthedocs.org/en/latest/urlutils.html#boltons.urlutils.SCHEME_PORT_MAP
[urlutils.find_all_links]: http://boltons.readthedocs.org/en/latest/urlutils.html#boltons.urlutils.find_all_links