Skip to main content

Typed dataclass like configuration objects

Project description

tcfg

from tcfg import cfg, Option

@cfg.json('cfg.json')
class Config:
  # year must be a string. It has a default value of '2023'
  year = '2023' 
  
  # load must be a boolean. It has a default value of true
  load = true 
  
@cfg.toml('cfg.toml')
class Config2:
  # year must be a string. Default to ''
  year = str
  
  # load must be a boolean. Default to false
  load = bool 
 
# Any config class will save to the specified file path unless overridden.
# This includes config classes that are in other config classes.
# This means you can have one master config object in your code that uses many config files.
@cfg.yaml('nested.tml')
class Nested:
  # Must be a bool. Defaults to false
  enabled = false
  
  # Must be an int. Defaults to 8081
  port = 8081 
  
  # Can specify multiple specific options.
  scope = Option('public', 'private', default='private') 
  
  # Must be a list
  # Literals are defaults and types are used for valid element types. Literal types are also used in element types.
  extensions = ['reload', dict]
  
  options = {
    # wildcard type used for validation of extra values not specified as a key in this dict
    '*': dict, 
    'open': false,
    # can have recursive nesting
    'deep_nesting': {
      'random': int 
    }
  }
 
@cfg.yaml('cfg.yml')
class Config3:
  nested = Nested # nested is a sub/nested config section

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

tcfg-0.4.4.tar.gz (9.0 kB view hashes)

Uploaded Source

Built Distribution

tcfg-0.4.4-py3-none-any.whl (8.9 kB view hashes)

Uploaded Python 3

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