CleanChausie
CleanChausie is a data validation and transformation library for Python. It is a successor to CleanCat.
Check out the docs!
Interested in working on projects like this? Close is looking for great engineers to join our team.
Key features:
- Operate on/with type-checked objects that have good IDE/autocomplete support
- Annotation-based declarations for simple fields
- Composable/reusable fields and field validation logic
- Support (but not require) passing around a context (to avoid global state)
- Context pattern is compatible with explicit sqlalchemy-based session management. i.e. pass in a session when validating
- Cleanly support intra-schema field dependencies (i.e. one field can depend on the validated value of another)
- Explicit nullability/omission parameters
- Errors returned for multiple fields at a time, with field attribution
CleanChausie by example
This is a short example of how a schema might be used to support a flask endpoint. More detailed examples can be found in the docs.
from typing import List
from cleanchausie import (
clean, ListField, URLField, EmailField, field, ValidationError, Schema
)
from flask import app, request, jsonify
class JobApplication(Schema):
first_name: str
last_name: str
email: str = field(EmailField())
urls: List[str] = field(ListField(URLField(default_scheme='http://')))
@app.route('/job_application', methods=['POST'])
def test_view():
result = clean(JobApplication, request.json)
if isinstance(result, ValidationError):
return jsonify(result.serialize()), 400
# Now "result" has the validated data, in the form of a `JobApplication` instance.
assert isinstance(result, JobApplication)
name = f'{result.first_name} {result.last_name}'
Release process
- Make sure to thoroughly review and test the code changes.
- Prepare for a new release
- Update the package version within
cleanchausie/__init__.py. - Add a changelog entry for the new version.
- Merge to master
- Update the package version within
- Dispatch a new "build and release" workflow action within the github actions tab.
The resulting workflow will build and publish the new version to PyPi.
Metadata
Release files for cleanchausie 1.17.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cleanchausie-1.17.8.tar.gz | 26.5 kB | Without provenance | Details for cleanchausie-1.17.8.tar.gz |
Release files / cleanchausie-1.17.8.tar.gz
| Download URL | cleanchausie-1.17.8.tar.gz |
|---|---|
| Size | 26.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a85315230c7614f92d2115c08c1b8990757e91b6e87eb2e756321a301a620f3e
|
|
BLAKE2b-256 checksum How to use checksums |
23b26547073a1d53e2ed8ad010983e4e6e9db305205db11f6e38a9c9b8097b8e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.11.9
|
Security for cleanchausie 1.17.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.