2015-03-22 00:12:50 +00:00
|
|
|
.. boltons documentation master file, created on Sat Mar 21 00:34:18 2015.
|
|
|
|
boltons
|
|
|
|
=======
|
|
|
|
|
|
|
|
*boltons should be builtins.*
|
|
|
|
|
2019-02-24 02:33:40 +00:00
|
|
|
|release| |calver| |changelog|
|
2016-06-24 09:14:58 +00:00
|
|
|
|
2015-04-09 04:24:57 +00:00
|
|
|
**Boltons** is a set of pure-Python utilities in the same spirit as —
|
2016-11-04 20:00:04 +00:00
|
|
|
and yet conspicuously missing from — `the standard library`_,
|
2015-04-09 04:24:57 +00:00
|
|
|
including:
|
|
|
|
|
|
|
|
* :func:`Atomic file saving <boltons.fileutils.atomic_save>`, bolted on with
|
|
|
|
:mod:`~boltons.fileutils`
|
|
|
|
* A highly-optimized :class:`~boltons.dictutils.OrderedMultiDict`,
|
2015-04-09 21:34:58 +00:00
|
|
|
in :mod:`~boltons.dictutils`
|
2015-04-09 04:24:57 +00:00
|
|
|
* Two types of :class:`~boltons.queueutils.PriorityQueue`, in
|
2015-04-09 07:36:48 +00:00
|
|
|
:mod:`~boltons.queueutils`
|
|
|
|
* :func:`Chunked <boltons.iterutils.chunked>` and
|
2015-04-16 07:29:00 +00:00
|
|
|
:func:`windowed <boltons.iterutils.windowed>` iteration, in
|
2015-04-09 07:36:48 +00:00
|
|
|
:mod:`~boltons.iterutils`
|
2015-04-09 04:24:57 +00:00
|
|
|
* A full-featured :class:`~boltons.tbutils.TracebackInfo` type, for
|
2015-04-09 07:36:48 +00:00
|
|
|
representing stack traces, in :mod:`~boltons.tbutils`
|
2016-04-28 06:07:35 +00:00
|
|
|
* A lightweight :class:`UTC timezone <boltons.timeutils.UTC>`
|
|
|
|
available in :mod:`~boltons.timeutils`.
|
2015-09-24 10:00:56 +00:00
|
|
|
* Recursive mapping for nested data transforms, with :func:`remap
|
|
|
|
<boltons.iterutils.remap>`
|
2015-04-06 09:36:58 +00:00
|
|
|
|
2015-04-08 03:18:16 +00:00
|
|
|
And that's just a small selection. As of |today|, ``boltons`` is
|
2016-04-28 06:07:35 +00:00
|
|
|
|b_type_count| types and |b_func_count| functions, spread across
|
2019-01-12 04:24:57 +00:00
|
|
|
|b_mod_count| modules. See them all in the :ref:`genindex`, and see
|
|
|
|
what's new by `checking the CHANGELOG`_.
|
2015-04-08 03:18:16 +00:00
|
|
|
|
2015-04-09 04:24:57 +00:00
|
|
|
.. counts are appx 50, 75, and 23, respectively, as of initial docs writing
|
2016-04-28 06:07:35 +00:00
|
|
|
.. in mid 2016, the counts are now 62, 112, and 25, respectively
|
2015-04-08 03:18:16 +00:00
|
|
|
|
2024-02-03 16:43:36 +00:00
|
|
|
.. _the standard library: https://docs.python.org/3/library/index.html
|
2015-08-23 12:52:51 +00:00
|
|
|
.. _checking the CHANGELOG: https://github.com/mahmoud/boltons/blob/master/CHANGELOG.md
|
2015-04-06 09:36:58 +00:00
|
|
|
|
2016-06-24 09:14:58 +00:00
|
|
|
.. |release| image:: https://img.shields.io/pypi/v/boltons.svg
|
|
|
|
:target: https://pypi.python.org/pypi/boltons
|
|
|
|
|
|
|
|
.. |calver| image:: https://img.shields.io/badge/calver-YY.MINOR.MICRO-22bfda.svg
|
|
|
|
:target: http://calver.org
|
|
|
|
|
2019-02-24 02:33:40 +00:00
|
|
|
.. |changelog| image:: https://img.shields.io/badge/CHANGELOG-UPDATED-b84ad6.svg
|
|
|
|
:target: https://github.com/mahmoud/boltons/blob/master/CHANGELOG.md
|
2016-06-24 09:14:58 +00:00
|
|
|
|
2015-04-06 09:36:58 +00:00
|
|
|
Installation and Integration
|
|
|
|
----------------------------
|
|
|
|
|
|
|
|
Boltons can be added to a project in a few ways. There's the obvious one::
|
2015-03-22 00:12:50 +00:00
|
|
|
|
2015-04-06 09:36:58 +00:00
|
|
|
pip install boltons
|
2015-03-22 00:12:50 +00:00
|
|
|
|
2020-09-07 04:12:04 +00:00
|
|
|
On macOS, it can also be installed via `MacPorts`_::
|
|
|
|
|
|
|
|
sudo port install py-boltons
|
|
|
|
|
2015-04-08 03:18:16 +00:00
|
|
|
Then dozens of boltons are just an import away::
|
2015-03-22 09:56:24 +00:00
|
|
|
|
2015-04-06 09:36:58 +00:00
|
|
|
from boltons.cacheutils import LRU
|
2016-04-28 06:07:35 +00:00
|
|
|
lru_cache = LRU()
|
|
|
|
lru_cache['result'] = 'success'
|
2015-03-22 09:56:24 +00:00
|
|
|
|
2015-04-11 10:14:15 +00:00
|
|
|
Due to the nature of utilities, application developers might want to
|
|
|
|
consider other integration options. See the :ref:`Integration
|
|
|
|
<arch_integration>` section of the architecture document for more
|
|
|
|
details.
|
|
|
|
|
2024-02-03 16:43:36 +00:00
|
|
|
Boltons is tested against Python 3.7-3.12, as well as PyPy3.
|
2015-03-22 00:12:50 +00:00
|
|
|
|
2020-09-07 04:12:04 +00:00
|
|
|
.. _MacPorts: https://ports.macports.org/port/py-boltons/summary
|
|
|
|
|
2015-03-22 00:12:50 +00:00
|
|
|
Third-party packages
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
The majority of boltons strive to be "good enough" for a wide range of
|
2015-04-09 04:24:57 +00:00
|
|
|
basic uses, leaving advanced use cases to Python's `myriad specialized
|
|
|
|
3rd-party libraries`_. In many cases the respective ``boltons`` module
|
|
|
|
will describe 3rd-party alternatives worth investigating when use
|
|
|
|
cases outgrow ``boltons``. If you've found a natural "next-step"
|
|
|
|
library worth mentioning, :ref:`consider filing an issue <Gaps>`!
|
|
|
|
|
|
|
|
.. _myriad specialized 3rd-party libraries: https://pypi.python.org/pypi
|
|
|
|
|
|
|
|
.. _gaps:
|
2015-03-22 00:12:50 +00:00
|
|
|
|
|
|
|
Gaps
|
|
|
|
----
|
|
|
|
|
2015-04-07 08:21:59 +00:00
|
|
|
Found something missing in the standard library that should be in
|
2015-04-09 04:24:57 +00:00
|
|
|
``boltons``? Found something missing in ``boltons``? First, take a
|
|
|
|
moment to read the very brief :doc:`architecture` statement to make
|
|
|
|
sure the functionality would be a good fit.
|
2015-04-07 08:21:59 +00:00
|
|
|
|
2015-04-09 04:24:57 +00:00
|
|
|
Then, if you are very motivated, submit `a Pull Request`_. Otherwise,
|
|
|
|
submit a short feature request on `the Issues page`_, and we will
|
|
|
|
figure something out.
|
2015-04-07 08:21:59 +00:00
|
|
|
|
|
|
|
.. _a Pull Request: https://github.com/mahmoud/boltons/pulls
|
|
|
|
.. _the Issues Page: https://github.com/mahmoud/boltons/issues
|
2015-03-22 00:12:50 +00:00
|
|
|
|
2015-04-06 09:36:58 +00:00
|
|
|
Section listing
|
|
|
|
---------------
|
2015-03-22 00:12:50 +00:00
|
|
|
|
|
|
|
.. toctree::
|
|
|
|
:maxdepth: 2
|
|
|
|
|
2015-04-07 08:21:59 +00:00
|
|
|
architecture
|
2015-03-22 00:12:50 +00:00
|
|
|
cacheutils
|
|
|
|
debugutils
|
|
|
|
dictutils
|
2016-05-23 17:08:06 +00:00
|
|
|
ecoutils
|
2015-03-22 00:12:50 +00:00
|
|
|
fileutils
|
|
|
|
formatutils
|
|
|
|
funcutils
|
|
|
|
gcutils
|
2016-11-08 21:00:50 +00:00
|
|
|
ioutils
|
2015-03-22 00:12:50 +00:00
|
|
|
iterutils
|
|
|
|
jsonutils
|
|
|
|
listutils
|
2015-04-18 14:42:05 +00:00
|
|
|
mathutils
|
2015-03-22 00:12:50 +00:00
|
|
|
mboxutils
|
|
|
|
namedutils
|
2020-01-08 23:32:03 +00:00
|
|
|
pathutils
|
2015-03-22 00:12:50 +00:00
|
|
|
queueutils
|
|
|
|
setutils
|
2016-04-29 03:46:25 +00:00
|
|
|
socketutils
|
2015-03-22 00:12:50 +00:00
|
|
|
statsutils
|
2015-03-22 06:18:45 +00:00
|
|
|
strutils
|
2015-03-22 00:12:50 +00:00
|
|
|
tableutils
|
|
|
|
tbutils
|
|
|
|
timeutils
|
2015-04-16 08:56:05 +00:00
|
|
|
typeutils
|
2017-03-16 07:00:52 +00:00
|
|
|
urlutils
|
2019-01-12 04:24:57 +00:00
|
|
|
|
|
|
|
(For a quick reference you can ctrl-F, see the :ref:`genindex`.)
|