Skip to main content

Safe assert for Python that can be used together with optimised mode

Project description

safe-assert

wemake.services test codecov Python Version wemake-python-styleguide

Allows users to write composable asserts that are not stripped away in optimized mode.

Features

  • Single simple, pythonic, fast, tested, typed, documented function. That's it!
  • Because safe_assert is a function, it can be easily composed with other functions
  • Fully typed with annotations and checked with mypy, PEP561 compatible

Installation

pip install safe-assert

Examples

The usage is identical to assert keyword, but a function:

from safe_assert import safe_assert

def sort_positive_numbers(numbers: List[int]) -> List[int]:
    safe_assert(all(num >= 0 for num in numbers), 'found negative')
    return sorted(numbers)

sort_positive_numbers([1, 2, 3])  # => will work
sort_positive_numbers([-1, 2, 3])
# => will fail in runtime with `AssertionError`

How is it different from regular assert? The major one is that it would not be stripped away with -O flag. So, it still allows to write declarative checks that are safe in production.

The second one is that you can compose it as any other regular function. Useful in conjunction with dry-python projects.

Internals

How does it work internally? It internally raises AssertionError that is also used by the assert keyword itself.

See docs to learn more.

License

MIT.

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

safe_assert-0.5.0.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

safe_assert-0.5.0-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file safe_assert-0.5.0.tar.gz.

File metadata

  • Download URL: safe_assert-0.5.0.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.1 CPython/3.11.5 Darwin/23.0.0

File hashes

Hashes for safe_assert-0.5.0.tar.gz
Algorithm Hash digest
SHA256 3d04d92d28ec6885246c8ed068dfca4109e4dbfb7c12bc1d3f9d825a86907cc9
MD5 00188479b8bb764588ad99d033fc6b00
BLAKE2b-256 e5bba61f3ff476b4448532978d828a030c8f9bf81b4e04179dadc98df512c0bd

See more details on using hashes here.

File details

Details for the file safe_assert-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: safe_assert-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 4.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.1 CPython/3.11.5 Darwin/23.0.0

File hashes

Hashes for safe_assert-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aec1348bf6baac240d263b1c69eb0c00c0d9dc90c9d73c76cb9ad30d98ea8fd1
MD5 f51e3ab835e371a09081a5604858f5b3
BLAKE2b-256 f0c5096a78bca1285c92384adf4d6517cfbcc1e52ce156583b962ca7fa93f2ab

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