A typed configuration language and serialization format. Imagine YAML with types.
debug :bool: false
name :str: My Name
graphics:
target_framerate :int: 60
fullscreen :bool: false
resolution:
width :int: 1920
height :int: 1080
Indentation is done via tabs only
See sample.thsl for more.
This is currently a beta level project
pip install thsl
>>> from pathlib import Path
>>> import thsl
>>> data = thsl.load(Path("data.thsl"))
{
'debug': False,
'name': 'My Name',
'graphics': {
'target_framerate': 60,
'fullscreen': False,
'resolution': {
'width': 1920,
'height': 1080
}
}
}
Not finalized. Subject to change
- YAML like syntax
- Type safety (avoids the Norway problem)
- Comments
- Trailing Commas
- String templating
- Compound Types
- Dictionaries
- Lists
- Sets
- Tuples
- Scalar Types
- Bools
- Ints
- Floats
- inf
- -inf
- -0
- nan
- scientific notation
- Decimals
- inf
- -inf
- -0
- nan
- scientific notation
- Strings
- Chars
- Binary
- Hexes
- Octals
- Base64
- encoding
- decoding
- Complex numbers
- Ranges
- exclusive
- inclusive
- Dates (with the help of the dateutil library)
- Times (with the help of the dateutil library)
- DateTimes (with the help of the dateutil library)
- Intervals (with the help of the tempora library)
- IP Addresses
- URLs
- Environment Variables
- Paths
- Semantic Version Numbers (using the semantic_version library)
- Regex
- YAML and JSON output
- conversion would be lossy unless only compatible types are used
- YAML or JSON input
- type addon system
- dump to file