Conficus v1.0.0
Python INI Configuration
conficus is a python toml configuration wrapper. providing some extra type coercions (e.g. str -> Path) easier access and section inheritance.
conficus python 3.11+.
Installation
Install conficus with pip.
pip install conficus
Quick Start
Basic usage
>>>
>>> import conficus
>>>
Configurations can be loaded directly from a string variable or read via file path string or Path object:
>>> config = conficus.load('/Users/mgemmill/config.ini', toml=True)
>>>
Easier Selection
Accessing nested sections is made easier with chained selectors:
>>> # regular dictionary access:
...
>>> config['app']['debug']
True
>>>
>>> # chained selector access:
...
>>> config['app.debug']
True
Inheritance
Inheritance pushes parent values down to any child section:
# config.ini
[app]
debug = true
[email]
_inherit = 0
host = "smtp.mailhub.com"
port = 2525
sender = "emailerdude@mailhub.com"
[email.alert]
to = ["alert-handler@service.com"]
subject = "THIS IS AN ALERT"
body = "Alerting!"
It is turned on via the inheritance option:
>>> config = conficus.load("config.ini", inheritance=True)
Sub-sections will now contain parent values:
>>> alert_config = config["email.alert"]
>>> alert_config["host"]
>>> "smtp.mailhub.com"
>>> alert_config["subject"]
>>> "THIS IS AN ALERT"
Inheritence can be controled per section via the _inherit option. _inherit = 0 will block the section from inheriting parent values. _inherit = 1 would only allow inheritance from the sections immediate parent; _inherit = 2 would allow both the immediate parent and grandparent inheritance.
_inherit values are stripped from the resulting configuration dictionary.
Additional Conversion Options
In addition to toml’s standard type conversions, conficus has two builtin conversion options and also allows for adding custom conversions.
Conversions only work with string values.
Path Conversions
The pathlib option will convert any toml string value that looks like a path to a python pathlib.Path object:
>>> config = conficus.load("path = '/home/user/.dir'", pathlib=True)
>>> isinstance(config["path"], Path)
>>> True
Decimal Conversions
The decimal option will convert any toml string value that matches \d+\.\d+ to a python Decimal object:
>>> config = conficus.load("number = '12.22'", decimal=True)
>>> isinstance(config["number"], Decimal)
>>> True
Custom Conversions
A custom coercer consists of 3 valus:
a name string
a regular expression string
a conversion function that takes a string value and returns the coerced value
This a contrived example, where we’re defining a notation (“upper::”) to identify a custom value we want to convert. You could easily take this example and do something similar that decrypts an encrypted value.
>>> def convert_to_caps(raw_value: str) -> str:
... return raw_value.upper()
>>> config = conficus.load("address = 'upper::121 fleet street'", coercers=[("upper-case", (r"^upper::(?P<value>.*)$", convert_to_caps))])
>>> config["address"]
... "121 FLEET STREET"
Metadata
Release files for conficus 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| conficus-1.0.0.tar.gz | 7.3 kB | Without provenance | Details for conficus-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| conficus-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for conficus-1.0.0-py3-none-any.whl |
Total release size: 16.9 kB
Release files / conficus-1.0.0.tar.gz
| Download URL | conficus-1.0.0.tar.gz |
|---|---|
| Size | 7.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11dd676ca8dca2bd80820d13048568480ebaeee7f0d117dc4a49bb2b1292eba4
|
|
BLAKE2b-256 checksum How to use checksums |
dac17ac0e78672854e8e88c68a093ec4ac63e26d371c0cb0d9914d3155065d11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.10.6 Darwin/24.6.0
|
Release files / conficus-1.0.0-py3-none-any.whl
| Download URL | conficus-1.0.0-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8c9d368d4bdbe744372718075a3b9942abf5730e2e3ed6ac7a47d2f3a48305f7
|
|
BLAKE2b-256 checksum How to use checksums |
6db46d8821d2d7286035b3df001fd962382062e66f23f44a8fad4c7003a65a49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.10.6 Darwin/24.6.0
|
Security for conficus 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.