Metadata-Version: 2.1
Name: pyaux
Version: 2.10.0
Summary: pyaux
Home-page: https://gitlab.com/hoverhell/pyaux
Author: HoverHell
Author-email: hoverhell@gmail.com
License: UNKNOWN
Download-URL: https://gitlab.com/hoverhell/pyaux/-/archive/2.10.0/pyaux-2.10.0.tar.bz2
Platform: UNKNOWN
Provides-Extra: known
Requires-Dist: django; extra == 'known'
Requires-Dist: Twisted; extra == 'known'
Requires-Dist: Cython; extra == 'known'
Requires-Dist: pandas; extra == 'known'
Requires-Dist: Pygments; extra == 'known'
Requires-Dist: pylzma; extra == 'known'
Requires-Dist: simplejson; extra == 'known'
Requires-Dist: line-profiler; extra == 'known'
Provides-Extra: recommended
Requires-Dist: ipython; extra == 'recommended'
Requires-Dist: ipdb; extra == 'recommended'
Requires-Dist: PyYAML; extra == 'recommended'
Requires-Dist: atomicfile; extra == 'recommended'
Requires-Dist: cdecimal; extra == 'recommended'
Requires-Dist: simplejson; extra == 'recommended'
Provides-Extra: req
Requires-Dist: requests[ssl]; extra == 'req'
Requires-Dist: six; extra == 'req'


Collection of helpers and useful things for Python

pyaux
=====

Personal collection of helpers and often-useful snippets for Python

Install the latest version with
`pip install -U "git+https://gitlab.com/hoverhell/pyaux.git#egg=pyaux"`


Contains:

* **bubble**: syntactic sugar for super(...)
* **window**: iterator over a 'window' of N adjacent elements
* **SmartDict**: attr→item dict subclass (e.g. for `d.key` instead of
  `d['key']`)
* **DebugPlug**: recursive duck-object for debug and testing
  purposes
* **repr_call**: convenient syntactically-appropriate representation of
  call arguments (also used in DebugPlug)
* **fxrange**, **frange**, **dxrange**, **drange**: `xrange()` / `range()`
  equivalents for float (without error accumulation) and Decimal
* **dict_fget**, **dict_fsetdefault**: versions of `dict.get` and
  `dict.setdefault` with lazy-computation of the default value
* **interp**, **edi**: two versions (simplified and format-supporting) of
  convenient string interpolation (or simplified templating)
* **split_list**: simple one-pass splitting of list into two by a condition
* **use_cdecimal**: forced instance-wide use (by monkey-hack) of `cdecimal`
  instead of `decimal` (for performance)
* **use_exc_ipdb**: set unhandled exception handler to run `ipdb.pm()`
* **use_exc_log**: set unhandled exception handler to log (by `logging`) the
  exception and the stack trace including (when possible) the local
  variables.
* **use_colorer**: monkey-patch `logging` for colored logging
* **obj2dict**: recursive converter of tree-structure of classes into a
  tree-structure of dicts, e.g. for pretty-printing the result
* **mk_logging_property**: make a property that debug-logs the value and
  caller info when set
* Some other things that are too minor to be listed here.

Also, in separate submodules:

* **psql**: helpers for saving Django ORM objects into an SQL 'COPY'-like
  file and loading it in one SQL command (for high-performance loading of
  large amounts of data into the database)
* **lzmah**: lzma compress (as function and as an executable file); also
  provides a function `unjsllzma` to stream-read (json) lines from a
  pylzma-compressed file
* **lzcat**: lzcat for pylzma-specific format (as function and as an
  executale file)
* **runlib**: various things for runscripts:

  * **init_logging**: logging.basicConfig with useful defaults (for
    development runscripts).
  * **sigeventer**: list-based signal handler for SIGINT and SIGTERM (for
    appending handler functions, similarly to `atexit`)
  * **make_manhole**: init a Twisted SSH manhole with set up locals,
    key-based auth, etc.

* **twisted_aux**: use_exc_log-equivalent for twisted (and a helper to
  remove the default logger).


