Skip to main content
https://travis-ci.org/zzzsochi/zini.svg?branch=master https://coveralls.io/repos/github/zzzsochi/zini/badge.svg?branch=master

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?

  1. Configparser is ugly;

  2. Configparser is overengineered;

  3. Configparser is not have type casting;

  4. Configparser is not have type checking;

  5. 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

  • YYYY-MM-DD

  • YYYY-MM-DD hh:mm

  • YYYY-MM-DD hh:mm:ss

  • YYYY-MM-DD hh:mm:ss.sss

When the time, you can set timezone as Z or ±hh:mm.

E.g.:

  • key = 2005-01-13

  • key = 2005-01-13 18:05:00

  • key = 2005-01-13 15:05:00 +03:00

  • key = 2005-01-13 15:00Z

timedelta:

durations:

  • key = 20m — 20 minutes

  • key = 10h2m — 10 hours and 2 minutes

  • key = 1w2s — one week (7 days) and 2 seconds

  • key = 1s20ms — one 2 second and 20 milliseconds

  • key = 1w1d1h1m1s1ms — 694861001 milliseconds

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'

Metadata

Release files for zini 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zini 1.1.0
File Size Uploaded
zini-1.1.0.tar.gz 5.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for zini 1.1.0
File Interpreter ABI Platform
zini-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.4 kB

Release files / zini-1.1.0.tar.gz

Download URL zini-1.1.0.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
ac1e91180b8d483eff1697332c774860983cf927c24810aae47011f00279c554
BLAKE2b-256 checksum
How to use checksums
eee800051aae34d941df588e45b82f86d0602df90da6ed129ed77c43a74e502b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / zini-1.1.0-py3-none-any.whl

Download URL zini-1.1.0-py3-none-any.whl
Size 5.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3525836ec7e59d964fa691a964a424ce3c2e5b2ff33ee33832bbb4af434cb4c9
BLAKE2b-256 checksum
How to use checksums
2228f74d3931788d26e45d7f28d1469ee5a6811b2bd7ea4ebd998a1cacbdbfde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.2

1 release file

1.0.1

1 release file

1.0.0

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page