Managing complex configurations any other way would be highly illogical...
spock
is a framework that helps manage complex parameter configurations during research and development of Python
applications. spock
lets you focus on the code you need to write instead of re-implementing boilerplate code like
creating ArgParsers, reading configuration files, implementing traceability etc.
In short, spock
configurations are defined by simple and familiar class-based structures. This allows spock
to
support inheritance, read from multiple markdown formats, and allow hierarchical configuration by composition.
Requires Python 3.6+
pip install spock-config
w/ S3 extension
pip install spock-config[s3]
All prior versions are available on PyPi. If legacy API and backend support is needed please install a pre v2.0.0+ version. We recommend refactoring your code to the new API and backend instead as legacy versions will be missing recent features, bugfixes, and hotfixes.
- v2.0.0+: Dropped support for legacy backend and API semantics
- v1.1.0-v1.2.1: New API with support for legacy backend and legacy API semantics
- v1.0.0: Legacy API and backend
See Releases for more information.
- Added S3 support with
pip install spock-config[s3]
- S3 addon supports automatically handling loading/saving from paths defined with
s3://
URI(s) by passing in an activeboto3.Session
- Support for Google docstring style annotation of
spock
class (and Enums) and attributes - Added in ability to print docstring annotated help information to command line with
--help
argument
Current documentation and more information can be found here.
Example spock
usage is located here.
- Simple Declaration: Type checked parameters are defined within a
@spock
decorated class. Supports required/optional and automatic defaults. - Easily Managed Parameter Groups: Each class automatically generates its own object within a single namespace.
- Parameter Inheritance: Classes support inheritance allowing for complex configurations derived from a common base set of parameters.
- Complex Types: Nested Lists/Tuples, List/Tuples of Enum of
@spock
classes, List of repeated@spock
classes - Multiple Configuration File Types: Configurations are specified from YAML, TOML, or JSON files.
- Hierarchical Configuration: Compose from multiple configuration files via simple include statements.
- Command-Line Overrides: Quickly experiment by overriding a value with automatically generated command line arguments.
- Immutable: All classes are frozen preventing any misuse or accidental overwrites.
- Tractability and Reproducibility: Save runtime parameter configuration to YAML, TOML, or JSON with a single chained command (with extra runtime info such as Git info, Python version, machine FQDN, etc). The saved markdown file can be used as the configuration input to reproduce prior runtime configurations.
- S3 Addon: Automatically detects
s3://
URI(s) and handles loading and savingspock
configuration files when an activeboto3.Session
is passed in (plus any additionalS3Transfer
configurations)
Nicholas Cilfone, Siddharth Narayanan
spock
is developed and maintained by the Artificial Intelligence Center of Excellence at Fidelity Investments.