Skip to main content

A library for defining, parsing, and validating settings passed as environment variables

Project description

Varsity helps you define your application’s settings, read them from environment variables, parse them into native Python types, and validate them.

Load a simple string

Assume the FOO environment variable as been set to ‘3’. After setting up the loader and calling its .load() method, we get back a dictionary with a key for each setting we’ve added to the loader.

>>> from varsity import Loader
>>> l = Loader()
>>> l.add('FOO')
>>> settings = l.load()
>>> settings.FOO
'3'

If you want to use a different name for the setting within Python, you can provide your own.

>>> l.add('FOO', 'foo')
>>> settings = l.load()
>>> settings.foo
'3'

The object returned from .load() also provides dictionary-style access to settings.

>>> settings['foo']
'3'

You can provide a ‘typ’ callable that will be used to convert the environment variable string into the type of your choice.

>>> l.add('FOO', 'foo', typ=int)
>>> settings = l.load()
>>> settings.foo
3

You can provide defaults that will be returned if the environment variable is not present.

>>> l.add('SOME_UNSET_VAR', default=0)
>>> settings = l.load()
>>> settings.SOME_UNSET_VAR
0

If you don’t provide a default, and the environment variable is not set, ValueError will be raised.

You can provide your own callable as the ‘typ’ argument. Assume the ‘TODAY’ environment variable is set to ‘2016-05-05’.

>>> from varsity import Loader
>>> from iso8601 import parse_date
>>> l = Loader()
>>> l.add('TODAY', 'today', typ=lambda x: parse_date(x).date())
>>> settings = l.load()
>>> settings.today
datetime.date(2016, 5, 5)

If you don’t provide a ‘typ’, but you do provide a default, then the environment variable will be cast to the same type as the default. (Here we get back an int 3 instead of the string ‘3’, because the default is an int.)

>>> l.add('FOO', 'foo', default=0)
>>> settings = l.load()
>>> settings.foo
3

If you access a setting with the attribute-style syntax, then nested dictionaries can also be accessed with that syntax. In this example, the FOO environment variable is set to ‘{“bar”: {“baz”: 1.23}}’

>>> l.add('FOO', 'foo', typ=json.loads)
>>> settings = l.load()
>>> settings.foo.bar.baz
1.23

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

varsity-0.0.4.tar.gz (2.8 kB view details)

Uploaded Source

File details

Details for the file varsity-0.0.4.tar.gz.

File metadata

  • Download URL: varsity-0.0.4.tar.gz
  • Upload date:
  • Size: 2.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for varsity-0.0.4.tar.gz
Algorithm Hash digest
SHA256 1bad25a04418d2b3ec691d9a6d1da0280c323d4d01da626411ede1d746cba8db
MD5 d875483f73336c428201c736cf4c687f
BLAKE2b-256 d010e18f48ba18ac92882a8e23fa1439627888f3e4425010afbb630226188f08

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