Manage your configuration files.
Project description
Config File
Manage and manipulate your configuration files
This python package is currently a work in progress and is in a pre-alpha phase. The API is liable to break until v1.
Config File allows you to use the same simple API for manipulating INI, JSON, YAML, and TOML configuration files. For the time being, it only supports INI.
Installation
$ pip install config_file
Example
The config_file
package exposes ConfigFile
, ParsingError
, and BaseParser
to the public API.
Sample Configuration File
config.ini
[calendar]
today = monday
start_week_on_sunday = false
today_index = 0
quarter_hours_passed = 0.25
Create a ConfigFile
from config_file import ConfigFile
config = ConfigFile("~/.config/test/config.ini")
Output your config file as a string
config.stringify()
>>> '[calendar]\ntoday = monday\nstart_week_on_sunday = false\ntoday_index = 0\nquarter_hours_passed = 0.25\n\n'
Retrieve values or sections
A section.key format is used for retrieving and setting values.
# Values from the config file are automatically parsed
config.get("calendar.start_week_on_sunday")
>>> False
# Unless you don't want them to be parsed
config.get("calendar.start_week_on_sunday", parse_type=False)
>>> 'false'
config.get("calendar")
>>> {'today': 'monday', 'start_week_on_sunday': False, 'today_index': 0, 'quarter_hours_passed': 0.25}
Set values
config.set("calendar.today_index", 20)
>>> True
config.stringify()
>>> '[calendar]\ntoday = monday\nstart_week_on_sunday = false\ntoday_index = 20\nquarter_hours_passed = 0.25\n\n'
# If you specify a section that isn't in your config file, the section and the key are added for you.
config.set("week.tuesday_index", 2)
>>> True
config.stringify()
>>> '[calendar]\ntoday = monday\nstart_week_on_sunday = false\ntoday_index = 20\nquarter_hours_passed = 0.25\n\n[week]\ntuesday_index = 2\n\n'
Delete sections or key/value pairs.
config.delete('week')
>>> True
config.stringify()
>>> '[calendar]\ntoday = monday\nstart_week_on_sunday = false\ntoday_index = 20\nquarter_hours_passed = 0.25\n\n'
config.delete('calendar.today')
>>> True
config.stringify()
>>> '[calendar]\nstart_week_on_sunday = false\ntoday_index = 20\nquarter_hours_passed = 0.25\n\n'
Check whether you have a particular section or key
config.has('calendar')
>>> True
config.has('week')
>>> False
config.has('calendar.start_week_on_sunday')
>>> True
Save when you're done
The contents are only written back out when you call save()
.
config.save()
>>> True
Reset the file back to its original
The current configuration file would be deleted and replaced by a copy of the original.
By default, since our passed in config file was at path ~/.config/test/config.ini
, reset()
will look for ~/.config/test/config.original.ini
.
config.reset()
>>> True
# But you can also specify the original config file explicitly.
config.reset(original_file_path="~/some_other_directory/this_is_actually_the_original.ini")
>>> True
Using your own parser
This feature is a work in-progress and has not been tested yet.
You can still use config file, even if you don't use one of our supported configuration formats. The ConfigFile
object swaps in the parser it needs based on the file format. However, the constructor takes in an optional parser
argument that you can use to supply your own custom parser. The only requirement is that the parser must be a concrete implementation of BaseParser
.
Project details
Release history Release notifications | RSS feed
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 config_file-0.6.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6043c632558c3b2b6bf5d94be9dd819a24ac273d07a0ca02f962baa6f9a2ec2e |
|
MD5 | 1eb2959357a70b7152bbd7d4cbfbf597 |
|
BLAKE2b-256 | 7b1634f6e736b01b866742ff8f831a4a13e98b3145350b4ca017f35a2f21a591 |