A configuration utility for Python object.
Project description
colt
Quick Links
Introduction
colt is a configuration utility for Python objects.
colt constructs Python objects from a configuration dict which is convertable into JSON.
(Inspired by AllenNLP)
Installation
pip install colt
Examples
Basic Usage
import typing as tp
import colt
@colt.register("foo")
class Foo:
def __init__(self, message: str) -> None:
self.message = message
@colt.register("bar")
class Bar:
def __init__(self, foos: tp.List[Foo]) -> None:
self.foos = foos
if __name__ == "__main__":
config = {
"@type": "bar", # specify type name with `@type`
"foos": [
{"message": "hello"}, # type of this is inferred from type-hint
{"message": "world"},
]
}
bar = colt.build(config)
assert isinstance(bar, Bar)
print(" ".join(foo.message for foo in bar.foos))
# => "hello world"
scikit-learn Configuration
import colt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
if __name__ == "__main__":
config = {
# import types automatically if type name is not registerd
"@type": "sklearn.ensemble.VotingClassifier",
"estimators": [
("rfc", { "@type": "sklearn.ensemble.RandomForestClassifier",
"n_estimators": 10 }),
("svc", { "@type": "sklearn.svm.SVC",
"gamma": "scale" }),
]
}
X, y = load_iris(return_X_y=True)
X_train, X_valid, y_train, y_valid = train_test_split(X, y)
model = colt.build(config)
model.fit(X_train, y_train)
valid_accuracy = model.score(X_valid, y_valid)
print(f"valid_accuracy: {valid_accuracy}")
Registrable Class
By using the Registrable class, you can devide namespace into each class.
In a following example, Foo and Bar have different namespaces.
import colt
class Foo(colt.Registrable):
pass
class Bar(colt.Registrable):
pass
@Foo.register("baz")
class FooBaz(Foo):
pass
@Bar.register("baz")
class BarBaz(Bar):
pass
@colt.register("my_class")
class MyClass:
def __init__(self, foo: Foo, bar: Bar):
self.foo = foo
self.bar = bar
if __name__ == "__main__":
config = {
"@type": "my_class",
"foo": {"@type": "baz"},
"bar": {"@type": "baz"}
}
obj = colt.build(config)
assert isinstance(obj.foo, FooBaz)
assert isinstance(obj.bar, BarBaz)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file colt-0.9.0.tar.gz.
File metadata
- Download URL: colt-0.9.0.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.1 CPython/3.8.2 Linux/5.15.0-1020-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9532719831486ae8e87365c298f2ccad8193e61d497f2b48464cde11a3e4600
|
|
| MD5 |
631ce5646f5da24024808a3796e05f08
|
|
| BLAKE2b-256 |
363c030597fc49c22d5c909c7106d18529b78bb01405d9068558316f123aadad
|
File details
Details for the file colt-0.9.0-py3-none-any.whl.
File metadata
- Download URL: colt-0.9.0-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.1 CPython/3.8.2 Linux/5.15.0-1020-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3af7a32c700e97afbf34d648094aae47b0c6d5e5645cfa3e5f5dc14f8d9543d3
|
|
| MD5 |
12c33cd5362a9b564efa9739bb7b8f59
|
|
| BLAKE2b-256 |
bcc6b6fff8f9d9ec4577b5458cf0ba9496941dc7d30c225e0203e9d27c055c86
|