Skip to main content

A simple, Pythonic file format. Same interface as the

Project description

perky

Because the world needed another configuration file format

Copyright 2018 by Larry Hastings

Overview

Perky is a new, simple rcfile format for Python programs.

The following are Perky features:

Perky syntax

Perky configuration files look something like JSON without the quoting.

example name = value
example dict = {
    name = 3
    another name = 5.0
    }
example list = [
    a
    b
    c
    ]
# lines starting with hash are ignored

# blank lines are ignored

" quoted name " = " quoted value "

triple quoted string = """

    indenting
        is preserved

    the string is automatically outdented
    to the leftmost character of the ending
    triple-quote

    <-- aka here
    """

Explicit transformation is better than implicit

One possibly-surprising design choice of Perky: the only natively supported values for the Perky parser are dicts, lists, and strings. Other commonly-used types (ints, floats, etc) are handled using a different mechanism: transformation.

A Perky transformation takes a dict as input, and transforms the contents of the dict based on a schema. A Perky schema is a dict with the same general shape as the dict produced by the Perky parse, but it contains dicts, lists, and transformation functions. If you want myvalue in {'myvalue':'3'} to be a real integer, transform it with the schema {'myvalue': int}.

API

perky.loads(s) -> d

Parses a string containing Perky-file-format settings. Returns a dict.

perky.load(filename, encoding="utf-8") -> d

Parses a file containing Perky-file-format settings. Returns a dict.

perky.dumps(d) -> s

Converts a dictionary to a Perky-file-format string. Keys in the dictionary must all be strings. Values that are not dicts, lists, or strings will be converted to strings using str. Returns a string.

perky.dump(filename, d, encoding="utf-8")

Converts a dictionary to a Perky-file-format string using perky.dump, then writes it to filename.

perky.transform(d, schema) -> o

Recursively transforms a Perky dict into some other object (usually a dict) using the provided schema.

perky.Required

perky.nullable(fn) -> fn

perky.const(fn) -> o

TODO

  • Backslash quoting currently does "whatever your version of Python does". Perhaps this should be explicit, and parsed by Perky itself?

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

perky-0.1.1.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

perky-0.1.1-py3-none-any.whl (28.2 kB view details)

Uploaded Python 3

File details

Details for the file perky-0.1.1.tar.gz.

File metadata

  • Download URL: perky-0.1.1.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for perky-0.1.1.tar.gz
Algorithm Hash digest
SHA256 82c8002e2447b53b157ac222882302d2b6b5a2d93a03f78179dc4fc459c21334
MD5 ebb66569739a92f80733c830d9bb9863
BLAKE2b-256 5fe618da8322e7197a1511cb57bc636a63487f12a541841b3d39383695e36aac

See more details on using hashes here.

File details

Details for the file perky-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for perky-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 96f39538a6482417d2a40d5beacdcef556abcf765485b218e2f014534b5f1ee3
MD5 d3e85c0a985305634b6d8a380deb387d
BLAKE2b-256 c924ec6f0d5a45f2aca233cdcd8fe1f6524964059ba75a6705b9c14dbd0b1343

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