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.1.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: mtoml-1.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 ef851b15076440ffc34327df24b41f3a1e58aff9c16b6040768101523717ff50
MD5 5518339d4c308b7cfaaddf383bf63e27
BLAKE2b-256 643737d07bd35e2454fba3d45fe2ea007d962f36df423377e7e4b1b9812c5ef2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mtoml-1.1.1-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.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 73f289754cbfa4b475413ccee6502cf77fb292aa7bfc9edfbc749ecf50f23712
MD5 af3e5d612c49bf2bd333ede123ab0959
BLAKE2b-256 361e5c59ee79623de38204950321db260d391b500e04ff0d9c34b5d79170be45

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