Skip to main content

Cocof

Build Status PyPI version

Cocof, short for consistent config file, is a python module that allows the modification of different key-value config files on the comand line.

Most importantly: For YAML and TOML it It will keep line breaks and comments the same. So the file will look more or less like the original (depending on the operations on it of course).

Currently supported formats are TOML, YAML, JSON and PLIST.

Install

$ pip install cocof

Usage

$ cocof --help
Usage: cocof [OPTIONS] FILEPATH JSONPATCH

  Cocof runs the provided 'jsonpatch' modifications on the configuration
  file given with the 'filepath' argument. Use the '--format' option to tell
  the file format. If not given cocof will try to guess the file format
  based on the file extension. Use '-' as filepath for stdin, in which case
  the output goes to stdout and you must provide the format of the data via
  the '--format' option.

Options:
  -f, --format [toml|yaml|json|plist]
                                  The format of the file. Obligatory if
                                  filepath is '-' (stdin).
  --help                          Show this message and exit.

Cocof takes a file path and a JSON patch string as arguments. It then modifies the datastructure given by the file's content accordingly and writies it back to the same file (in-place editing). You can also tell cocof to read from stdin, in which case it will output it's result to stdout. TOML, YAML and JSON expect their content to be utf-8 encoded. PLIST expects either an utf-8 encoded xml content or binary content.

Examples

# example.toml
title = "Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # Inline comment

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]

Using {"op": "add", "path": "/subtitle", "value": "Sub"} as modification yields:

$ cocof ./example.toml '[{"op": "add", "path": "/subtitle", "value": "Sub"}]'`
$ cat ./example.toml
# example.toml
title = "Example"
subtitle = "Sub"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # Inline comment

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]

Metadata

Release files for cocof 1.2.2

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

Source distribution (sdist)

Source distribution for cocof 1.2.2
File Size Uploaded Provenance
cocof-1.2.2.tar.gz 5.2 kB Without provenance Details

Release files / cocof-1.2.2.tar.gz

Download URL cocof-1.2.2.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
36a05eca9aa8000a1a204a97ca6d703a9513713d7908325d91bf26309ac29204
BLAKE2b-256 checksum
How to use checksums
e4cb6b267413a3987671f73bd5637f1ced076585b31702923ce8fa0869289076
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/2.7.14

Security for cocof 1.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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