Skip to main content
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 “/”.

Metadata

Release files for yachain 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yachain 0.1.4
File Size Uploaded
yachain-0.1.4.tar.gz 5.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for yachain 0.1.4
File Interpreter ABI Platform
yachain-0.1.4-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 11.6 kB

Release files / yachain-0.1.4.tar.gz

Download URL yachain-0.1.4.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f5cbad2ccae848daa88a064b809494a52ca1c8ea49dbea20c548b46ff26959fb
BLAKE2b-256 checksum
How to use checksums
8b1e09a604ac7a50cb84a247ef69818cee973978f8e2bb55b93818ae08d221f7
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / yachain-0.1.4-py2.py3-none-any.whl

Download URL yachain-0.1.4-py2.py3-none-any.whl
Size 6.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
5a3688fb08697fd7f8ff69892d37e8df225e4d85d0ba8f66db37ef1fa090be24
BLAKE2b-256 checksum
How to use checksums
9d89572e2b36353afb052caf2887667c084950bc3fea2be65e37d080a39ab493
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page