Skip to main content

Random useful stuff

Project description

trickkiste

trickkiste is a collection of convenience functionality I use quite often that are too small to give them their own project on the one side but prone to changes due to changes to the Python ecosystem to just copy&paste them and leave them as they are.

So they are here now, enjoy.

Beware: most of this is not part of any standard library for a reason. That reason might be there are better built in solutions which are harder (but more flexible) to use or I just didn't find them back then. In most cases you're advised to build them your own (to avoid dependencies and bugs).

Content

Here is an overview of what's in here, see the docstings for a better description (some even have a doctest!):

misc

  • throw(BaseException): functional raise for closed expressions

  • md5from(Path): convenient wrapper returning an MD5 file checksum

  • cwd(Path): path changing context manager

  • process_output(cmd): short form for 'run a command and return it's output as one string'

  • asyncify: decorator turning a sync method or function into an async one

  • async_chain: like chain but async

  • async_filter: like filter but async

  • date_str(timestamp, [datefmt]): convenience wrapper for strftime

  • def date_from(timestamp: float | str): : convenience wrapper for strptime

  • dur_str(seconds, [fixed]): short human readable representation of a duration

  • age_str(now, age, [fixed]): like dur_str but with an age context

  • parse_age(string: str): inverse of age_str

  • smart_split(string: str, delimiter: str = ","): like split but parenthesis aware!

  • multi_replace(string: str, *substitutions: tuple[str, str]): short form for chainging replace

  • compact_dict(mapping, [maxlen], [delim]): create a short one-string map

  • def split_params(string: str): inverse of compact_dict

logging

  • apply_common_logging_cli_args(ArgumentParser): enrich a given parser to recognize default stuff like --verbose, etc.
  • setup_logging: sets up a rich enhanced logger with useful stuff like call stack and posix thread id
  • logging filters: internally used by setup_logging but can be re-used of course
    • markup_escape_filter: escapes (accidental) markup elements in the message
    • thread_id_filter: adds the (posix) thread id
    • callstack_filter: adds a short call stack
    • logger_name_filter: adds the logger name (rich edition)
    • logger_funcname_filter: adds the function name (rich edition)
    • logger_levelname_filter: adds the level name (rich edition)

Textual stuff / TuiBaseApp

  • TuiBaseApp: like textual.App but with convenience stuff mostly regarding logging
  • RichLogHandler: a logging handler for a textual widget
  • LockingRichLog: locks your log view scroll position until you scroll to the bottom
  • HeatBar: a colorful heat bar widget for things like CPU monitoring

std_suppress

std_suppress (with it's own shell entry point suppress) can be prefixed to a command and acts like adding >/dev/null 2>&1 but will print the output if the command needs 'longer than expected' something bad happens (i.e. nonzero exit). Use it in scripts where you don't need the output to spam your log but you still want to know if something unusual happend.

License

See License.md.

Contribution

Initialize

git clone https://github.com/frans-fuerst/trickkiste
cd trickkiste
uv run pre-commit install

Version bump and publishing

uv version --bump <patch|minor|major>
uv build

# do manual tests here

git push
uv publish --token <TOKEN>

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

trickkiste-0.3.1.tar.gz (42.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trickkiste-0.3.1-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file trickkiste-0.3.1.tar.gz.

File metadata

  • Download URL: trickkiste-0.3.1.tar.gz
  • Upload date:
  • Size: 42.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.11

File hashes

Hashes for trickkiste-0.3.1.tar.gz
Algorithm Hash digest
SHA256 e5f1d6d521cfd549aa741d77626d80a127b2093f0997952538ac998ba4238b52
MD5 7834b96c855d797d80d467b6bdcfa04f
BLAKE2b-256 3c6db62afc33e34e9d492571288114ac616e5da851a291f26c88ff4c03b6760f

See more details on using hashes here.

File details

Details for the file trickkiste-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: trickkiste-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.11

File hashes

Hashes for trickkiste-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e13155b18a4c8089e08335d234c0d46b8dfdfab9da15a6cfc5be9c7f24ceb165
MD5 dd3e67fb59fc1faf615b76940cc1b5f5
BLAKE2b-256 c0cb4050c06e163d1821d7e718d38f63b4c8896be0d7baa9af2c79829d71a996

See more details on using hashes here.

Supported by

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