Data Types for Cynical Humans
Project description
Data Types for Cynical Humans
Overview
Welcome to Typerighter, a project that makes it easy to with common types of data using roughly the same ideas as type systems. Instead of defining what a string is, it uses strings to define what URLs or datetimes are.
Its concepts are simple and built around ideas that require little effort for effective data management.
Schematics Rethink
I am the original author of https://github.com/schematics/schematics.
A community took over the Schematics project a while back, but I found I needed to solve the roughly the same validation and conversion problems in every new system I encountered, giving me an opportunity to continue learning about the problem space.
Typerighter is how I think about the problem ten years after Schematics.
Read The Docs
Learn more about it with our great documentation.
Example
Define a type by instantiating it with config parameters.
>>> string_type = types.StringType(max_length=12)
Validate data with that type definition.
>>> short_string = 'Take Five'
>>> string_type.validate(short_string)
Define a record with fields and instantiate it.
>>> class Artist(types.Record):
... name = types.StringType(required=True)
... website = types.URLType()
...
>>> artist_type = Artist()
Validate data with that record.
>>> band_data = {
... 'name': u'American Food',
... 'website': 'https://soundcloud.com/americanfood'
... })
>>> artist_type.validate(band_data)
Use a mutable structure instead of a dict for the data.
>>> american_food = artist_type.make_view(band_data)
>>> # Promote the reinterpretation of Take On Me
>>> american_food.website = 'https://soundcloud.com/americanfood/my-take-on-take-on-me'
>>> american_food.validate()
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
File details
Details for the file typerighter-0.2.0.tar.gz
.
File metadata
- Download URL: typerighter-0.2.0.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
1bad18d08573fb6616017645759c321b6d55b7af9e24897812a440f337f6e086
|
|
MD5 |
045045b00b739a85d837e697ce729ec7
|
|
BLAKE2b-256 |
049935ea9803a4a3307d69c26f9662fe5943eef1cf1c4d94ffe5c3e341b6dd43
|