Skip to main content

Various Python utility functions

Project description

Boxine - bx_py_utils

Various Python utility functions

Quickstart

pip install bx_py_utils

Existing stuff

Here only a simple list about existing utilities. Please take a look into the sources and tests for deeper informations.

bx_py_utils.anonymize

  • anonymize() - Anonymize the given string with special handling for eMail addresses.

bx_py_utils.auto_doc

  • assert_readme() - Check and update README file with generate_modules_doc()
  • generate_modules_doc() - Generate a list of function/class information via pdoc.

bx_py_utils.aws.client_side_cert_manager

  • ClientSideCertManager() - Helper to manage client-side TLS certificate via AWS Secrets Manager by

bx_py_utils.aws.secret_manager

  • SecretsManager() - Access AWS Secrets Manager values

bx_py_utils.compat

  • removeprefix() - Backport of removeprefix from PEP-616 (Python 3.9+)
  • removesuffix() - Backport of removesuffix from PEP-616 (Python 3.9+)

bx_py_utils.dict_utils

  • dict_get() - nested dict get()
  • pluck() - Extract values from a dict, if they are present

bx_py_utils.environ

  • cgroup_memory_usage() - Returns the memory usage of the cgroup the Python interpreter is running in.

bx_py_utils.error_handling

  • print_exc_plus() - Print traceback information with a listing of all the local variables in each frame.

bx_py_utils.graphql_introspection

  • introspection_query() - Generate GraphQL introspection query with variable nested depth.

bx_py_utils.hash_utils

  • url_safe_encode() - Encode bytes into a URL safe string.
  • url_safe_hash() - Generate a URL safe hash with max_size from given string/bytes.

bx_py_utils.humanize.pformat

  • pformat() - Format given object: Try JSON fist and fallback to pformat()

bx_py_utils.humanize.time

  • human_timedelta() - Converts a time duration into a friendly text representation.

bx_py_utils.iteration

  • chunk_iterable() - Returns a generator that yields slices of iterable of the given chunk_size.

bx_py_utils.path

  • assert_is_dir() - Check if given path is a directory
  • assert_is_file() - Check if given path is a file

bx_py_utils.processify

  • processify() - Decorator to run a function as a process.

bx_py_utils.stack_info

  • FrameNotFound() - Base class for lookup errors.
  • last_frame_outside_path() - Returns the stack frame that is the direct successor of given "file_path".

bx_py_utils.test_utils.assertion

  • assert_equal() - Check if the two objects are the same. Display a nice diff, using pformat()
  • assert_text_equal() - Check if the two text strings are the same. Display a error message with a diff.
  • pformat_ndiff() - Generate a ndiff from two objects, using pformat()
  • pformat_unified_diff() - Generate a unified diff from two objects, using pformat()
  • text_ndiff() - Generate a ndiff between two text strings.
  • text_unified_diff() - Generate a unified diff between two text strings.

bx_py_utils.test_utils.datetime

  • parse_dt() - Helper for easy generate a datetime instance via string.

bx_py_utils.test_utils.filesystem_utils

  • FileWatcher() - Helper to record which new files have been created.

bx_py_utils.test_utils.mock_aws_secret_manager

  • SecretsManagerMock() - Mock for bx_py_utils.aws.secret_manager.SecretsManager()

bx_py_utils.test_utils.mock_boto3session

  • MockedBoto3Session() - Mock for boto3.session.Session()

bx_py_utils.test_utils.requests_mock_assertion

  • assert_json_requests_mock() - Check the requests history.

bx_py_utils.test_utils.snapshot

Assert complex output via auto updated snapshot files with nice diff error messages.

  • assert_py_snapshot() - Assert complex python objects vio PrettyPrinter() snapshot file.
  • assert_snapshot() - Assert given data serialized to JSON snapshot file.
  • assert_text_snapshot() - Assert "text" string via snapshot file

bx_py_utils.test_utils.time

  • MockTimeMonotonicGenerator() - Helper to mock time.monotonic() in tests.

Backwards-incompatible changes

v36 -> v37 - Outsourcing Django stuff

We split bx_py_utils and moved all Django related utilities into the separated project:

So, bx_py_utils is better usable in non-Django projects, because Django will not installed as decency of "bx_py_utils"

developing

To start developing e.g.:

~$ git clone https://github.com/boxine/bx_py_utils.git
~$ cd bx_py_utils
~/bx_py_utils$ make
help                 List all commands
install-poetry       install or update poetry
install              install via poetry
update               Update the dependencies as according to the pyproject.toml file
lint                 Run code formatters and linter
fix-code-style       Fix code formatting
tox-listenvs         List all tox test environments
tox                  Run pytest via tox with all environments
tox-py36             Run pytest via tox with *python v3.6*
tox-py37             Run pytest via tox with *python v3.7*
tox-py38             Run pytest via tox with *python v3.8*
tox-py39             Run pytest via tox with *python v3.9*
pytest               Run pytest
pytest-ci            Run pytest with CI settings
publish              Release new version to PyPi
clean                Remove created files from the test project

License

MIT. Patches welcome!

Links

Project details


Release history Release notifications | RSS feed

This version

38

Download files

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

Source Distribution

bx_py_utils-38.tar.gz (18.5 kB view details)

Uploaded Source

Built Distribution

bx_py_utils-38-py3-none-any.whl (22.3 kB view details)

Uploaded Python 3

File details

Details for the file bx_py_utils-38.tar.gz.

File metadata

  • Download URL: bx_py_utils-38.tar.gz
  • Upload date:
  • Size: 18.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.3.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.5

File hashes

Hashes for bx_py_utils-38.tar.gz
Algorithm Hash digest
SHA256 a2e492ef0d6fc8441bf2a84825f13d197305aa09ce797833f2a23b6d5ab83981
MD5 69be7bb8fcc1703e64c2cd4a2d34639f
BLAKE2b-256 1fbb49e99741924c847d5b0e7ba8885329b38ceaea2682d0b06fecea2291a371

See more details on using hashes here.

File details

Details for the file bx_py_utils-38-py3-none-any.whl.

File metadata

  • Download URL: bx_py_utils-38-py3-none-any.whl
  • Upload date:
  • Size: 22.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.3.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.5

File hashes

Hashes for bx_py_utils-38-py3-none-any.whl
Algorithm Hash digest
SHA256 5cd6d1d1758c5cc96d17b3f42ea289c59d2d94740bc2a33d7dae88bde6022b99
MD5 424b743cfcb9f8f85a818d3656974892
BLAKE2b-256 fe61eb7aa6b9f2ce7ee92af0d064d46165b36b38b4d63f37a4242d823210e565

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