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__('.\PATH_TO_CONFIGS\')

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

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

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

        # all instances share the same files
        if mtoml.is_loaded('dogs') is False:
            # load a toml config named "dogs.toml"
            if mtoml.load('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('dogs', 'breeds')
        breeds.append(breed)

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

        # any attempt to call get('dogs', 'breeds')
        # will return our updated list but those updates
        # haven't been saved yet, we need explicitly save
        mtoml.save('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.1.2.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

mtoml-1.1.2-py2.py3-none-any.whl (10.3 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

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

File hashes

Hashes for mtoml-1.1.2.tar.gz
Algorithm Hash digest
SHA256 89260ef63c4dc2c6fc52bc389c96b650ca518b1082641f011cb23cd12233b0cc
MD5 7fd650bd50da593f00975bf7518fded0
BLAKE2b-256 459884eb4cd7787e4db2af2feb99c7a3cf319a154aa751cf361c3431f50d86ed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mtoml-1.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 10.3 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.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 6fe4e20e44025cfe3323b170b414c5ca84ff37d7d4f1313c027f9d463847b5db
MD5 a2456120a8a59a9a2c611d3b65e6fe89
BLAKE2b-256 0dd7eb437fee08b0a1208ce8b60bd5cedc5eaa7553686c342adb0654744006de

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