Skip to main content

An utility library for python

Project description

Flashback

Flashback

You've probably already implemented it.


Flashback is a collection of python utilities: it contains classes, metaclasses, decorators, functions, constants, etc. that you might have written a couple times already.

Installing

Flashback supports python 3.6+.

Pip:

pip install flashback

Build from sources:

git clone git@github.com:PaulRenvoise/flashback.git
cd flashback
python setup.py install

Contents

Flashback's helpers are currently organised within 7 modules, and global helpers:

  • accessing/
    • dig() recursively fetch keys in a nested dict
  • caching/
    • Cache supports several cache stores: in-memory, disk, Redis, and Memcached
    • @cached caches a callable's return value based on its arguments
  • debugging/
    • xp() prints debug information about its given arguments
    • @profiled collects and dumps profiling stats over a callable's execution
    • caller() allows a developer to print debug information about a callable's caller
    • get_callable() extracts a callable instance from a frame
    • get_call_context() finds and returning the code context around a call made in a frame
    • get_frameinfo() implements a faster inspect.stack()[x]
  • formatting/
    • oxford_join() joins strings in a human-readable way
    • transliterate() represents unicode text in ASCII (using Unidecode)
    • camelize() transforms any case to camelCase
    • pascalize() transforms any case to PascalCase
    • snakeize() transforms any case to snake_case
    • kebabize() transforms any case to kebab-case
    • parameterize() formats a given string to be used in URLs
    • ordinalize() represents numbers in their ordinal representations
    • adverbize() represents numbers in their numeral adverb representations
    • truncate() truncates long sentences at a given limit and append a suffix if needed
    • singularize() returns the singular form of a given word
    • pluralize() returns the plural form of a given word
  • iterating/
    • renumerate() enumerates an iterable starting from its end
    • chunks() splits an iterable into smaller chunks, padding them if requested
    • partition() splits an iterable into items validating a predicate and the ones that don't
    • uniq() removes duplicates from an iterable while keeping the items' order
    • compact() removes None values from an iterable
    • flatten() unpacks nested iterable into the given iterable
    • flat_map() applies a function to every item and nested item of the given iterable
  • i16g/
    • Locale dynamically loads localization files from a package path
  • importing/
    • import_class_from_path() fetches a class from a package path and returns it
    • import_module_from_path() exposes the contents of a module as globals from a package path
  • logging/
    • DEFAULT_CONSOLE_CONFIGURATION logs to stderr with a sensible set of information
    • DJANGO_CONSOLE_CONFIGURATION logs to stderr with the same formatting as Django's logger
    • FLASK_CONSOLE_CONFIGURATION logs to stderr with the same formatting as Flask's logger
    • PYRAMID_CONSOLE_CONFIGURATION logs to stderr with the same formatting as Pyramid's logger
    • RAILS_CONSOLE_CONFIGURATION logs to stderr with the same formatting as RoR's logger
    • AffixedStreamHandler allows custom affixes to log records
    • @muted silences all (or selected) loggers during a callable's execution
  • Borg exposes a class useful to produce a singleton behaviour across multiple instances
  • Sentinel exposes a class that can be used to implement the Sentinel design pattern
  • Singleton exposes a metaclass useful to implement the Singleton design pattern
  • @classproperty combines @classmethod and @property (with support for @attr.setter)
  • @deprecated documents deprecated callables with a explicit message
  • @retryable retries failing executing of a callable
  • @sampled implements sampling strategies to filter calls made to a callable
  • @timed measures and prints the execution time of a callable
  • @timeoutable stops the execution of a callable if its run time is too long

Contributing

The Pull Request template has a checklist containing everything you need to submit a new PR.

Run the tests with pytest:

pytest tests

Run the lint with pylint:

pylint flashback/ tests/

License

Flashback is released under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flashback-1.2.1.tar.gz (53.6 kB view details)

Uploaded Source

Built Distribution

flashback-1.2.1-py3-none-any.whl (73.6 kB view details)

Uploaded Python 3

File details

Details for the file flashback-1.2.1.tar.gz.

File metadata

  • Download URL: flashback-1.2.1.tar.gz
  • Upload date:
  • Size: 53.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for flashback-1.2.1.tar.gz
Algorithm Hash digest
SHA256 596f8d4dbf8c4e4a18f07a534c29330b48b895ed5d65b5216d9629282b9e1b0b
MD5 ffa95fbc561e96d5c99bd66e6258140f
BLAKE2b-256 c8096a847e4a6f574264ca852ce6b3b53e3c4c343696cabb8a389a61a82abac5

See more details on using hashes here.

File details

Details for the file flashback-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: flashback-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 73.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for flashback-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ac688b523d1cb6be3a22ba6a99e73a31166455236f56ad48d6c815e3a60e117e
MD5 b28d2097d3f4aef1e3415467d2948450
BLAKE2b-256 5bf9dae896834d07e070728ebb7b21c00b579e3d816f131d2cbf3e770476e6a8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page