Skip to main content

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.12+.

Pip:

pip install flashback

Uv:

uv pip install flashback

Build from sources:

git clone git@github.com:PaulRenvoise/flashback.git
cd flashback
uv build

Contents

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

  • accessing/
    • dig() recursively fetch keys and indices in a nested mapping or sequence
    • values_at() retrieves values from each given keys in dictionary
    • pick() fetches key/value pairs with given keys from a dictionary
  • 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
    • uniq_by() removes duplicates defined via a user-supplied callable 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
  • EncryptedFile exposes a mechanism to read and write encrypted contents to a file
  • 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:

uv run pytest tests

Run the typechecker with:

uv run pyrefly check flashback tests

Run the lint with:

uv run ruff check flashback tests

Run the formatter with:

uv run ruff format flashback tests

License

Flashback is released under the MIT License.

Metadata

Release files for flashback 4.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flashback 4.1.0
File Size Uploaded
flashback-4.1.0.tar.gz 54.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for flashback 4.1.0
File Interpreter ABI Platform
flashback-4.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 137.9 kB

Release files / flashback-4.1.0.tar.gz

Download URL flashback-4.1.0.tar.gz
Size 54.4 kB
Tags Source
SHA-256 checksum
How to use checksums
0a4390d3cf58b9e045cf122f558b9eb010468192ada71cee1d24709b84de9bf9
BLAKE2b-256 checksum
How to use checksums
2926bc133c057a8391ca8849e94ef7233d8d8ae7f5ed171a6640e2bc9c481228
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / flashback-4.1.0-py3-none-any.whl

Download URL flashback-4.1.0-py3-none-any.whl
Size 83.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
03091af98d80bfb09764e5b33e0ed6d425d331febef23a00a84651d27a161e65
BLAKE2b-256 checksum
How to use checksums
cd4e05ca2e604eb30ac0eea14ca96a834f1ff553ec0e22bca52e4b872636c916
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

4.1.0 This release

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.2.0

2 release files

3.1.5

2 release files

3.1.4

2 release files

3.1.3

2 release files

3.1.2

2 release files

3.1.1

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.4.2

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page