| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 26.2.0 source code.tar.gz | 2026-09-07 | 264.4 kB | |
| 26.2.0 source code.zip | 2026-09-07 | 321.4 kB | |
| README.md | 2026-09-07 | 11.0 kB | |
| Totals: 3 Items | 596.9 kB | 0 | |
- Added
statsutils.mode(boltons.readthedocs.io) to return the most common value, breaking ties by first appearance (#453) - Fixed
setutils.IndexedSet.update(boltons.readthedocs.io) adding the iterables themselves instead of their elements when given multiple inputs (#474) - Fixed
strutils.iter_splitlinesandstrutils.indent(boltons.readthedocs.org) splitting dates containing28or29instead of recognizing Unicode line separators (#475) - Added
strutils.ellipsize(boltons.readthedocs.org) for word-boundary-aware text truncation with an ellipsis - Fixed
funcutils.wraps(boltons.readthedocs.org) passing arguments positionally to wrappers that only accept them as keywords (#261) - Fixed
tableutils.Table.to_textcrashes on empty tables,Noneheaders, and short header rows; empty headers now render no header row, matchingto_html - Fixed
timeutils.isoparse(boltons.readthedocs.org) misreading fractional seconds (.851parsed as 851µs instead of 851000µs); >6-digit fractions now truncate instead of raising - Fixed
timeutils.daterange(boltons.readthedocs.org) looping forever on non-advancing steps: zero and self-cancelling month/day steps now raiseValueError, wrong-direction steps yield nothing likerange() - Fixed
strutils.MultiReplace(boltons.readthedocs.io) raisingKeyErroron empty substitution maps (now a no-op) - Fixed
jsonutils.JSONLIterator(boltons.readthedocs.org) hanging when a seek lands past the last newline, and negativerel_seekvalues seeking past EOF (sign bug) - Fixed
iterutils.xfrange(boltons.readthedocs.org) yielding nothing for descending ranges; now sharesfrange's count-based semantics, so both agree at inexact float boundaries - Fixed
urlutils.parse_qslignoring itsencodingargument when decoding keys and values (#455) - Fixed
dictutils.OrderedMultiDict.addlist(boltons.readthedocs.io) dropping values from one-shot iterables, including the vendored copy inurlutils(#458) - Fixed
ecoutils.get_profilelooking up identifying host, username, and working-directory information whenscrub=True(#461) - Fixed
namedutils.namedtuple(boltons.readthedocs.io) andnamedutils.namedlist(boltons.readthedocs.io) raisingIndexErrorinstead ofValueErrorfor empty type and field names (#462) - Fixed
iterutils.GUIDerator(boltons.readthedocs.org) error text to reflect the inclusive minimum size of 20 (#451) - Fixed
timeutils.decimal_relative_timeandrelative_timerejecting aware datetimes when the comparison time is omitted (#469) - Fixed
timeutils.USTimeZone(boltons.readthedocs.io) handling of repeated and missing DST hours, includingfoldon UTC conversion (#441) - Fixed
mathutils.Bits(boltons.readthedocs.org) negative indexing (#450) - Fixed
mathutils.Bits(boltons.readthedocs.org) empty binary, hexadecimal, and byte round trips (#468) - Sped up
setutils.IndexedSet(boltons.readthedocs.io) bulk difference and intersection updates with a single-pass rebuild (#440) - Fixed
listutils.BarrelList(boltons.readthedocs.org) out-of-range indexing returning unrelated values (#440) - Fixed
listutils.BarrelList(boltons.readthedocs.org) insertion clamping across multiple internal lists (#440) - Fixed
listutils.BarrelList(boltons.readthedocs.org) popping after an internal list was emptied by indexed removals (#440) - Fixed
listutils.BarrelList.iter_sliceslice normalization and reverse steps (#471) - Fixed
listutils.BarrelList.del_slicedeletion across internal lists and through the end of the list (#472) - Fixed
jsonutils.JSONLIterator(boltons.readthedocs.org) rejecting the documentedrel_seek=1.0endpoint (#465) - Fixed
jsonutils.JSONLIterator(boltons.readthedocs.org) relative seeking in binary streams (#464) - Fixed
statsutils.Stats.get_histogram_countsdivision by zero for data with no interquartile spread (#467) - Fixed
jsonutils.reverse_iter_linesignoring explicit and stream encodings (#463) - Fixed
jsonutils.reverse_iter_linesdetaching the caller's text stream, preventing later reads and context-manager cleanup (#466) - Fixed
cacheutils.ThresholdCounter.update(boltons.readthedocs.io) ignoring mapping and keyword counts (#476) - Fixed
cacheutils.LRI.update(boltons.readthedocs.io) andcacheutils.LRU.update(boltons.readthedocs.io) rejecting empty and keyword-only updates, and ignoring keywords when the source is the cache itself (#478) - Fixed
cacheutils.ThresholdCounter.most_commonreturning no pairs when the limit is omitted (#460) - Fixed
strutils.bytes2humanfailing to use theYsuffix for yottabyte-sized values (#459) - Fixed
urlutils.URL.get_authoritydropping passwords when the username is empty (#477) - Fixed
strutils.args2shandstrutils.args2cmdignoring thesepargument (#454) - Fixed
statsutils.Stats.pearson_typeraisingRuntimeErrorinstead of classifying Pearson types IV, V, and VI (#434) - Fixed
statsutils.Stats.pearson_typedivision by zero at the exact coefficient boundary, preserving the existing Normal and Gamma cases (#434) - Fixed
setutils.complement(boltons.readthedocs.org) subset and superset comparisons raisingAttributeError(#438) - Fixed
mathutils.Bits(boltons.readthedocs.org) accepting values too large for the requested bit length - Fixed
tbutils.ParsedException(boltons.readthedocs.org) dropping Python 3.11+ traceback anchor lines during round trips (#333) - Fixed
strutils.pluralize(boltons.readthedocs.org) handling of words ending inx, such asbox - Fixed
iterutils.backoff_iterdivision by zero withfactor=1.0and no count; equal bounds yield once, and unequal bounds raiseValueError
Full Changelog: https://github.com/mahmoud/boltons/compare/26.1.0...26.2.0