Skip to main content

A simple, type-safe, and extensible Python parsing and validation framework

Project description

🔍 V6E

PyPI version License PyPI - Python Version PyPI - Downloads Contributors

A simple, type-safe, and extensible Python parsing and validation framework

Why the name?

v6e comes from the numeronym of "validate".

Examples

Check out the examples in ./examples! You can run them locally with:

uv run examples/parsers.py

Usage

import v6e as v

my_parser = v.int().gte(18).lte(21)

# Use it only to check if the value conforms
my_parser.check(18)  # True
my_parser.check(21)  # True
my_parser.check(54)  # False

# Use `.parse()` to validate and get the parsed value
my_parser.parse(21)  # Ok -> Returns 21 (int)
my_parser.parse("21")  # Ok -> Returns 21 (int)
my_parser.parse(54)  # Err -> Raises a ParseException

v6e also supports custom parsers, custom reusable types, unions of parsers, and more. See more in our docs!

🐍 Type-checking

This library is fully type-checked. This means that all types will be correctly inferred from the arguments you pass in.

In this example your editor will correctly infer the type:

my_parser = v.int().gte(8).lte(4)
t.reveal_type(my_parser)  # Type of "my_parser" is "V6eInt"
t.reveal_type(my_parser.check)  # Type of "my_parser.check" is "(raw: Any) -> bool"
t.reveal_type(my_parser.safe_parse)  # Type of "my_parser" is "(raw: Any) -> V6eResult[int]"
t.reveal_type(my_parser.parse)  # Type of "my_parser" is "(raw: Any) -> int"

Why do I care?

Type checking will help you catch issues way earlier in the development cycle. It will also provide nice autocomplete features in your editor that will make you faster ⚡.

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

v6e-0.1.9.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

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

v6e-0.1.9-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file v6e-0.1.9.tar.gz.

File metadata

  • Download URL: v6e-0.1.9.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for v6e-0.1.9.tar.gz
Algorithm Hash digest
SHA256 f83511e7103fcbc57c245c84d44a1a26f52a4b4d2c173fa709b7742daa518025
MD5 e211dc73290afb2dd0341b8123b3ac5a
BLAKE2b-256 efd4eb9f0a8af2968307ef9c8c146de798e8356cec0dbc54e9d0dedbae4a2858

See more details on using hashes here.

Provenance

The following attestation bundles were made for v6e-0.1.9.tar.gz:

Publisher: release.yml on danimelchor/v6e

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file v6e-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: v6e-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for v6e-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 52efe20b237a274576d1aec47e05e96f58efab487a9a824c0ad1994c0cb42480
MD5 a1a996028cf8bb74503ecf7e3cb418d7
BLAKE2b-256 367c9f73209f519e8377bece2ec293be4c9ad147dd9046449cdabd6b84c97139

See more details on using hashes here.

Provenance

The following attestation bundles were made for v6e-0.1.9-py3-none-any.whl:

Publisher: release.yml on danimelchor/v6e

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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