Skip to main content

Manage multiple TOML configurations from a single module.

Project description

mtoml

Manage multiple TOML configurations from a single thread-safe module.

pip install mtoml

codefactor circleci codecov

from sys import stderr

import mtoml

class pets(mtoml.mtomlc):
    def __init__(self):
        # set the relative path to the config directory
        # if not specified, defaults to the current directory
        # unless a directory was set prior to this class init
        mtoml.mtomlc.__init__(directory = '.\PATH_TO_CONFIGS\')

        # mtomlc does not need to be inherited and may be an instance var
        self.conf = mtoml.mtomlc(directory = '\PATH_TO_CONFIGS\')

        # mtoml methods may be accessed through any instance
        self.conf.set_dir(directory = '\PATH_TO_CONFIGS\')
        self.set_dir(directory = '.\PATH_TO_CONFIGS\')

        # or directly through the module itself
        mtoml.set_dir(directory = '.\PATH_TO_CONFIGS\')

        # all instances share the same files
        if mtoml.is_loaded(config = 'dogs') is False:
            # load a toml config named "dogs.toml"
            if mtoml.load(config = 'dogs') is False:
                # if something goes wrong mtoml won't throw exceptions
                # and instead returns either None or False
                print('Unable to load config "dogs"!', file = stderr)

    def __del__(self):
        # not a good idea to put this here in practice
        # but this is "save all changes before exit"
        mtoml.save_all()

        # where as this is would force a full write
        # to save eveything even if nothing changed
        mtoml.save_all(force_overwrite = True)

    def add_dog_breed(self, breed):
        # get the current list of dog breeds that we are
        # assuming is a list in this case
        breeds = mtoml.get(config = 'dogs', field = 'breeds')
        breeds.append(breed)

        # if the field is part of a group, simply specify the group
        breed_info = mtoml.get(config = 'dogs', group = 'breeds', field = breed)

        # update the config with our new list
        mtoml.set(config = 'dogs', field = 'breeds', value = breeds)

        # any attempt to call get(config = 'dogs', field = 'breeds')
        # will return our updated list but those updates
        # haven't been saved yet, we need explicitly save
        mtoml.save(config = 'dogs')

        # now even if another app wants to access
        # our toml config about dogs it will show
        # the updated list, otherwise our new list
        # would not be saved until the class instance
        # is cleaned up through __del__()

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

mtoml-1.2.0.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

mtoml-1.2.0-py2.py3-none-any.whl (10.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file mtoml-1.2.0.tar.gz.

File metadata

  • Download URL: mtoml-1.2.0.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for mtoml-1.2.0.tar.gz
Algorithm Hash digest
SHA256 f301096ec75cc4dcf50e694587f27a9bf12cb6aeddfc57247a67441ba69e0ef3
MD5 d1a711415ec63153073af415e5a09f2f
BLAKE2b-256 62199cc19a415f0801a6bc19ea6ad69d150107f248de2d2a4830ca89f838db40

See more details on using hashes here.

File details

Details for the file mtoml-1.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: mtoml-1.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for mtoml-1.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e4ab397769f32f60156bd7232e8601367294ba5ef33b20d9a84468bd35325d79
MD5 8f6ecda5b884c6436c147d62d2b40fe9
BLAKE2b-256 e52f0e4c6b5866e12926d9498904f597347668ff572f44cceda37295e14d3bc6

See more details on using hashes here.

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