Go to file
pre-commit-ci[bot] 14357c14de
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/asottile/setup-cfg-fmt: v2.2.0 → v2.3.0](https://github.com/asottile/setup-cfg-fmt/compare/v2.2.0...v2.3.0)
- https://github.com/asottile/reorder_python_importshttps://github.com/asottile/reorder-python-imports
- [github.com/asottile/dead: v1.5.0 → v1.5.1](https://github.com/asottile/dead/compare/v1.5.0...v1.5.1)
- [github.com/asottile/pyupgrade: v3.3.2 → v3.4.0](https://github.com/asottile/pyupgrade/compare/v3.3.2...v3.4.0)
- [github.com/pre-commit/mirrors-mypy: v1.2.0 → v1.3.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.2.0...v1.3.0)
2023-06-05 18:41:50 +00:00
.github/workflows Include pyproject.toml 2023-04-26 15:32:06 -07:00
settngs Add py.typed 2023-04-25 00:13:51 -07:00
testing Add a display_name attribute to Setting 2023-02-19 18:39:35 -08:00
tests Implement qoc fixes 2023-02-20 01:59:40 -08:00
workflows Initial Commit 2022-12-14 20:57:57 -08:00
.gitignore Add py.typed 2023-04-25 00:13:51 -07:00
.pre-commit-config.yaml [pre-commit.ci] pre-commit autoupdate 2023-06-05 18:41:50 +00:00
LICENSE Initial Commit 2022-12-14 20:57:57 -08:00
pyproject.toml Include pyproject.toml 2023-04-26 15:32:06 -07:00
README.md Add support for persistent setting groups 2023-01-31 19:18:09 -08:00
requirements-dev.txt Initial Commit 2022-12-14 20:57:57 -08:00
setup.cfg Update minimum requirements for typing-extensions 2023-04-26 15:04:57 -07:00
setup.py Initial Commit 2022-12-14 20:57:57 -08:00

CI GitHub release (latest by date) PyPI PyPI - Downloads PyPI - License

Settngs

This library is an attempt to merge reading flags/options from the commandline (argparse) and settings from a file (json).

It is a modified argparse inspired by how flake8 loads their settings. Note that this does not attempt to be a drop-in replacement for argparse.

Install with pip

pip install settngs

A trivial example is included at the bottom of settngs.py with the output below (using bash). For a more complete example see ComicTagger.

$ python -m settngs
Hello world
$ python -m settngs --hello lordwelch
Hello lordwelch
$ python -m settngs --hello lordwelch -s
Hello lordwelch
Successfully saved settings to settings.json
$ python -m settngs
Hello lordwelch
$ python -m settngs -v
Hello lordwelch
merged_namespace.values.example_verbose=True
$ python -m settngs -v -s
Hello lordwelch
Successfully saved settings to settings.json
merged_namespace.values.example_verbose=True
$ python -m settngs
Hello lordwelch
merged_namespace.values.example_verbose=True
$ cat >settings.json << EOF
{
  "example": {
    "hello": "lordwelch",
    "verbose": true
  },
  "persistent": {
    "test": false,
    "hello": "world"
  }
}
EOF
$ python -m settngs --no-verbose
Hello lordwelch
$ python -m settngs --no-verbose -s
Hello lordwelch
Successfully saved settings to settings.json
$ python -m settngs --hello world --no-verbose -s
Hello world
Successfully saved settings to settings.json
$ python -m settngs
Hello world

settngs.json at the end:

{
  "example": {
    "hello": "world",
    "verbose": false
  },
  "persistent": false,
  "hello": "world"
}

What happened to the 'i'?

PyPi wouldn't let me use 'settings'