Skip to main content

A configuration utility for Python object.

Project description

colt

CI Actions Status Pulish Actions Status Python version pypi version license

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

colt-0.9.0.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

colt-0.9.0-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

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

Hashes for colt-0.9.0.tar.gz
Algorithm Hash digest
SHA256 e9532719831486ae8e87365c298f2ccad8193e61d497f2b48464cde11a3e4600
MD5 631ce5646f5da24024808a3796e05f08
BLAKE2b-256 363c030597fc49c22d5c909c7106d18529b78bb01405d9068558316f123aadad

See more details on using hashes here.

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

Hashes for colt-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3af7a32c700e97afbf34d648094aae47b0c6d5e5645cfa3e5f5dc14f8d9543d3
MD5 12c33cd5362a9b564efa9739bb7b8f59
BLAKE2b-256 bcc6b6fff8f9d9ec4577b5458cf0ba9496941dc7d30c225e0203e9d27c055c86

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page