INI-files parser with schemes and types
Project Description
INI-files parser with schemes and types
Philosophy of Zini
Application’s settings must be simple! In it should be a code or complex structures. Must be only a simple types.
Why not…
JSON?
JSON is uncomfortable and unextendable.
YAML?
The YAML is like a garden of rakes. It’s very complex format. I do not need all it’s futures.
Configparser?
- Configparser is ugly;
- Configparser is overengineered;
- Configparser is not have type casting;
- Configparser is not have type checking;
- Configparser is… configparser.
Supported types
boolean: | simple true or false, e.g. key = true |
---|---|
int: | simple numeric type, e.g. key = 13 |
float: | float type, e.g. key = 3.14 |
string: | strings always uses quotes, e.g. key = "some string" |
datetime: | datetime formated like as ISO 8601
When the time, you can set timezone as Z or ±hh:mm. E.g.:
|
timedelta: | durations:
|
list: | list of values: key = "string value" 2005-01-13 18:00:05 13 |
Examples
$ cat tests/test.ini
# first comment [first] boolean = false integer = 13 [second] ; second comment boolean = true string = "some string" [complex] list = "string" "string too" "else string"
Simple reading
>>> from zini import Zini >>> ini = Zini() >>> result = ini.read('tests/test.ini') >>> isinstance(result, dict) True >>> result['first']['boolean'] is False # automatic type casting True >>> result['first']['integer'] == 13 True >>> result['second']['string'] == "some string" True >>> result['complex']['list'] == ["string", "string too", "else string"] True
Types and defaults
>>> from zini import Zini >>> ini = Zini() >>> ini['first']['integer'] = str # set type >>> result = ini.read('tests/test.ini') zini.ParseError: error in line 3: 'integer = 13'
>>> from zini import Zini >>> ini = Zini() >>> ini['second']['boolean'] = "string" # set type and default value >>> result = ini.read('tests/test.ini') zini.ParseError: error in line 7: 'boolean = true'
Lists of values
>>> import zini >>> ini = zini.Zini() >>> ini['third']['generic'] = [str] >>> result = ini.read('tests/test.ini') ParseError: error in line 20: ' 10'
Release history Release notifications
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size & hash SHA256 hash help | File type | Python version | Upload date |
---|---|---|---|
zini-1.1.0-py3-none-any.whl (5.1 kB) Copy SHA256 hash SHA256 | Wheel | 3.5 | Oct 22, 2016 |
zini-1.1.0.tar.gz (5.2 kB) Copy SHA256 hash SHA256 | Source | None | Oct 22, 2016 |