Skip to main content

An extensible config file format

Project description

yay ain’t YAML

yay is a configuration file format built on top of YAML based on our experience with the ConfigParser extensions buildout uses. It adds overlays (one config file including and extending another) and variables.

Consider a config file that looks something like this:

foo:
    bar:
        baz:
            - 1
            - 2
            - 3
    qux: wibble.wobble
    quux: wobble

goo:
    bar:
        baz:
            - 1
            - 2
            - 3
            - 4
    qux: wibble.cobble
    quux: cobble

hoo:
    bar:
        baz:
            - 1
            - 3
    qux: wibble.yobble
    quux: yobble

With yay, this might look like this:

foo:
    bar:
        baz:
            - 1
            - 2
            - 3
    qux: wibble.{:quux}
    quux: wobble

goo.copy: foo
goo:
    bar:
        baz.append:
            - 4
    quux: cobble

hoo.copy: foo
hoo:
    bar:
        baz.remove:
            - 2
    quux: yobble

Using yay

To load yay config from a string you can use the ‘load’ function:

>>> from yay import load
>>> load("""
... foo:
...     bar: 1
... """)
{"foo": {"bar": 1}}

If you want to load from a URI (file:// and http:// are supported) then use ‘load_uri’:

>>> from yay import load_uri
>>> load_uri("/etc/someconfig.yay")
{"foo": {"bar": 1}}

The return value in both cases is a standard python dictionary.

Changelog for yay

0.0.3 (2011-01-24)

  • Egg packaging fixes

0.0.2 (2011-01-24)

  • Lots more unittests for expression evaluation and expression parsing

  • Drop dependency on OrderedDict

0.0.1

  • This is still pre-release, no API or language stability guarantees

  • Variable resolving is now done in expression tree without a seperate resolve stage

  • Uses pyparsing to parse {foo[bar][@.baz > 5]} type syntax

0.0.0

  • This is a pre-alpha release to experiment with what we can and can’t do.

  • New PyYAML Loader subclass for getting ordered maps without ugly !!omap markup

  • Resolves {} markup within YAML nodes

  • Lazily evaluates .copy, .append and .remove instructions

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

yay-0.0.3.tar.gz (47.1 kB view details)

Uploaded Source

File details

Details for the file yay-0.0.3.tar.gz.

File metadata

  • Download URL: yay-0.0.3.tar.gz
  • Upload date:
  • Size: 47.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for yay-0.0.3.tar.gz
Algorithm Hash digest
SHA256 fcfee8ac171ce14ed151e118a877e8a15828462d80672ffda227f8a5c4377fdd
MD5 b289d0aba7fe17fb2981faccc8a29d99
BLAKE2b-256 5f2b0a72d2a43a1309813d6f0f0914a51ebb5a3e8cf7b8a962fa98fda3a4a92f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page