Skip to main content

YAML parser

Project description

https://travis-ci.org/hootnot/yachain.svg?branch=master https://img.shields.io/pypi/pyversions/yachain.svg https://coveralls.io/repos/github/hootnot/yachain/badge.svg?branch=master

YAML access on chained attribute names.

Install

$ pip install yachain

Suppose we have:

---
# config
network:
   name: developers
   gitserver:
      ip: 192.168.178.101
      netmask: 255.255.255.0
      gateway: 192.168.178.1
      packages:
      - yum
      - gcc

With yachain we can access this as:

>>> import yachain

>>> c = yachain.Config().load("netw.cfg")
>>> print(c["network::gitserver::gateway"])
192.168.178.1
>>> print(c["network::gitserver::packages"])
['yum', 'gcc']

References to files / paths independent from environment

References to files and paths can be used relative and absolute. In case an attribute ends on path or file then the path can be prefixed automatically when operation from a virtual environment is detected. The works by default upper and lower case and can be overriden.

Using the prefix makes it possible to use the same config in different environments.

import yachain
import yaml
import sys
import os

# yaml config:
yc = """
---
app:
  logfile: var/log/app.log
  textrules: var/app.app.txt
  database_path: var/app/db
  database_file: /var/app/db/db.txt
  database_name: db.txt
"""

PREFIX = "/" if not hasattr(sys, 'real_prefix') else sys.prefix
# CONFIG_FILE = os.path.join(PREFIX, "etc/app/app.cfg")
config = yachain.Config(prefix=PREFIX, configdata=yaml.load(yc))


for A in ["logfile",
          "textrules",
          "database_path",
          "database_file",
          "database_name"]:
    k = "app::{}".format(A)
    print config[k]

When run from a virtual environment, this will give us:

/home/user/venv/var/log/app.log
var/app.app.txt
/home/user/venv/var/app/db
/var/app/db/db.txt
db.txt

So, as expected, the logfile and database_path got the PREFIX.

When run from a non-virtual environment, this will give us:

/var/log/app.log
var/app.app.txt
/var/app/db
/var/app/db/db.txt
db.txt

So, as expected, prefixed with “/”.

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

yachain-0.1.4.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

yachain-0.1.4-py2.py3-none-any.whl (6.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file yachain-0.1.4.tar.gz.

File metadata

  • Download URL: yachain-0.1.4.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.12.4 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.5.2

File hashes

Hashes for yachain-0.1.4.tar.gz
Algorithm Hash digest
SHA256 f5cbad2ccae848daa88a064b809494a52ca1c8ea49dbea20c548b46ff26959fb
MD5 310be03fc0c95ae25f2d81d46287f450
BLAKE2b-256 8b1e09a604ac7a50cb84a247ef69818cee973978f8e2bb55b93818ae08d221f7

See more details on using hashes here.

File details

Details for the file yachain-0.1.4-py2.py3-none-any.whl.

File metadata

  • Download URL: yachain-0.1.4-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.12.4 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.5.2

File hashes

Hashes for yachain-0.1.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 5a3688fb08697fd7f8ff69892d37e8df225e4d85d0ba8f66db37ef1fa090be24
MD5 f4efbb464c1493217a13053427e875a4
BLAKE2b-256 9d89572e2b36353afb052caf2887667c084950bc3fea2be65e37d080a39ab493

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