Skip to main content

Simple object-oriented config library, where your settings are objects

Project description

object-settings 2.0

Simple-to-use object-oriented Python config library, where your settings are objects.

Their values have automatic validation and get saved to a file that's seamlessly written and read in the background, so you don't have to worry about any of it. This makes it quick to define and use settings (see examples below).

Installation & usage

This module is on PyPi, so you can just do pip install object-settings

After which it will be available with just the package name settings

import settings
settings.setup("Your app name")

your_option1 = settings.Toggle("Your first option label")
your_option2 = settings.Number("Your second option label")

Simple objects

For example, you can set a font size at the top of your ui file:

font = settings.Number(default=14)

...
someuilib.Label("Bababooey", size=font.value)
...
someuilib.Textbox("Lorem ipsum dolor...", font_size=font.value)
...

Or if a setting is only checked in one place, it can be used without defining a variable:

if settings.Toggle("Update app automatically", default=True):
    # do update

(it doesn't matter if the same setting is initialized multiple times)

Integration

The setting objects support "equals"-checking with actual values:

speed = settings.Number("Speed limit", 5)

print(speed == 5)
>> True
print(speed == 3)
>> False

In addition, they work with many type-specific operations:

for selection in settings.Multichoice():
    ...

if settings.Toggle():
    ...

Automatic storing

When a setting's value is read/set, object-settings automatically creates and updates a config file on the disk in the background. Any file deletions or unparsable external modifications are also handled.

By default, the files are saved to a standard config location, depending on the platform (uses appdirs package for paths). You can also set a custom directory for e.g. running in a Docker container.

Value validation

When a new value is set, it automatically gets validated and raises a ValueError if it doesn't pass. This validation includes more than just datatypes, for example numbers can have min/max limits or a path setting can be set to require an existing path.

Listen for changes

If you have some update function that you want to be called when a setting is changed, you can add that function as a listener:

setting.add_listener(your_function)

Now the function will be called every time when a new value is set.

Sections

Optionally, if you have a lot of settings, you can organize them into sections (which also works well with UIs)

download_options = settings.Section("Downloader settings")
speed = settings.Number("Speed limit", 5, section=download_options)
dir = settings.Path("Target directory", '/home/yomama/Downloads', section=download_options)
server = settings.Choice("Mirror", ["Europe", "Asia", "America", "Africa"], "Asia", section=download_options)

Setting types

List of currently available setting types:

  • Toggle (bool)
  • Choice (str) [from a list of options]
  • Multichoice (list) [of things from a list of options]
  • Text (str)
  • Path (str)
  • Number (int)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

object-settings-2.2.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

object_settings-2.2-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file object-settings-2.2.tar.gz.

File metadata

  • Download URL: object-settings-2.2.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for object-settings-2.2.tar.gz
Algorithm Hash digest
SHA256 8c52d1abdaaa10270107d069ecd6be4c06ce3b38b2124a194ae2f93ca20e557e
MD5 3509fcfef1895d7f0fc1e1d84dc5fc48
BLAKE2b-256 535698b5f48de67482163d9b136f4c590e3abe5d695d07a9d8b5565abb291488

See more details on using hashes here.

Provenance

File details

Details for the file object_settings-2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for object_settings-2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4a1988fdf55181abec47c8b2217c954fde0c6227f8b48ab448e79b715a300f5e
MD5 e82faeaca3428faba460b9dedc70d84c
BLAKE2b-256 f31826b06828799900df9eabd5bbb6474ddc1d5bd7c7c6a9bee17efec0814c23

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page