This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

This is Yet Another Simple Configuration Parser module for INI style configurations files.

Installation

pip install yascp

easy_install yascp

USAGE

A sample configuration is looking like this and is saved in file called example.conf:

[database]
login = user
password = topsecret
host = example.com
port = 3306

[backend_api]
login = api_user
password = api_password
url = http://example.com:9080

In scripts

The constructor takes only two arguments - first one is the name or absoluthe path to the configuration file (see below “Configuration File” for more details on this) and a dictionary of default values which will be parsed before any actual configuration file is read. If same section and option is found in a configuration file then the default will be overwritten. Until version 0.2.6 KEY and VALUE could be separated by the ‘=’ sign only but from 2.7 third argument may be passed on to specify the delimiter and it can be anything. Default is still ‘=’ if not specified.

import yascp
config = yascp.parser.Parser(configuration_file_name = 'example.conf', defaults = {'extra.port':'666'}, delimiter = '=')

login      = config.database.username
password   = config.database.password
host       = config.database.host
port       = config.database.port

print config.backend_api.url
print config.extra.port

There is a convenience method available to print off all of the configuration parsed.

So running:

config.print_all()

would print to the screen following:

backend_api.url = http://example.com:9080
backend_api.password = api_password
backend_api.login = api_user
extra.port = 666
database.host = example.com
database.port = 3306
database.login = user
database.password = topsecret

Notice: Everything is a string. The module does not distinguish any type of data and so the developer should know where an integer for example is expected an perform all required tests/handle possible errors.

In command line

yascp_parser.py [full path to or name of an INI config file] [section.option to be fetched|--print-all]

The script takes two arguments

The first argument is the name of a configuration file or full path to one (see below for “Configuration File” section for more details).

The second argument may be “–list-all” to obtain a list of all available options or a key of specific option to get value for this option only (run first with “–list-all” to see what exactly can be used here).

If an option doesn’t belong to any of the sections in the configuration file then it should be addresses with “default” section, i.e:

default.[myoption]

Sample usage:

python parser.py /tmp/example.conf --print-all
backend_api.url = http://example.com:9080
backend_api.password = api_password
backend_api.login = api_user
database.host = example.com
database.port = 3306
database.login = user
database.password = topsecret

Knowing now what options are avaialbe you can fetch only this that you need:

python parser.py /tmp/example.conf backend_api.url
http://example.com:9080

Configuration File

If absolute path is provided to a configuration file then only that file is read but if only a name of configuration file is given then the script will attempt to read a file by that name in following locations and order:

  1. /etc/[config file name]
  2. ~/[config file name]
  3. directory from which the script has been ran.

Notice: If more than one configuration file is present then the duplicated options set for example in a configuratioin file saved in /etc/ will be overwritten by those in user’s home direcotry and so on.

Changelog

0.3.0

  • fixed issue with “print_all” method where if user overwritten one value with anything else than string it would break
  • corrected number of code style issues (too long lines, etc.) in Parser module

0.2.9 ^^^ - configuration parsing errors are now catched if invoked from command line so no trace is printed - ‘~’ is now expanded to user’s home dir if Parser is initialized from within external Python code - minor spelling corrections

0.2.8 ^^^ - minor spelling corrections, documentation corrections/updates

0.2.7 ^^^ - extended functionality - now a delimiter can be passed on when used as a module so from now on KEY and VALUE can be separated by = as usual but also space character, tab character or anything else

0.2.6 ^^^ - fixed a “hidden” issue with infinite recursion within __getattr__ method; this didn’t affect the functionality though

0.2.5 ^^^ - introduced proper access point from shell via script yascp_parser.py (available from PATH after installation) - introduced possibility to execute the module by a direct call, i.e. python -m yascp

Release History

Release History

0.3.0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.9

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.8

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.7

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.6

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.5

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
yascp-0.3.0.tar.gz (7.4 kB) Copy SHA256 Checksum SHA256 Source Oct 26, 2015

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting