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
Built Distribution
Hashes for typerighter-0.1.4-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f2bb8ead917859834d75b51a4b6c2c9639d5f00d0ea3e7341bce004f426c446 |
|
MD5 | 2209502ceb41f0bcd55b413868847f4d |
|
BLAKE2b-256 | c5e665d2a055f492fb27744360820b06c136286db662a41fde5fe9712787e283 |