Use Pydantic to build complex types from simple parameters.
Project description
Use Pydantic to build complex types from parameter specifications.
Installation
uv add git+https://github.com/flywhl/cyantic
Features
- Build complex objects using intermediate Pydantic models.
- Reference other values using
@value:x.y.z - Import objects using
@import:x.y.z - Define custom
@reftaghandlers (see tests)
Usage
from cyantic import Blueprint, blueprint, CyanticModel
from torch import Tensor
import torch
import yaml
# 1. Create and register some useful parameterisations
# (or soon install from PyPi, i.e. `rye add cyantic-torch`)
@blueprint(Tensor)
class NormalTensor(Blueprint[Tensor]):
mean: float
std: float
size: tuple[int, ...]
def build(self) -> Tensor:
return torch.normal(self.mean, self.std, size=self.size)
@blueprint(Tensor)
class UniformTensor(Blueprint[Tensor]):
low: float
high: float
size: tuple[int, ...]
def build(self) -> Tensor:
return torch.empty(self.size).uniform_(self.low, self.high)
# 2. Write pydantic models using `CyanticModel` base class
class MyModel(CyanticModel):
normal_tensor: Tensor
uniform_tensor: Tensor
# 3. Validate from YAML files that specify the parameterisation
some_yaml = """common:
size: [3, 5]
normal_tensor:
mean: 0.0
std: 0.1
size: @value:common.size
uniform_tensor:
low: -1.0
std: 1.0
size: @value:common.size
"""
# 4. Receive objects built from the parameterisations.
my_model = MyModel.model_validate(yaml.safe_load(some_yaml))
assert isinstance(my_model.normal_tensor, Tensor)
assert isinstance(my_model.uniform_tensor, Tensor)
Development
git clone https://github.com/flywhl/cyantic.gitcd cyanticuv sync
Flywheel
Science needs humble software tools. Flywheel is an open source collective building simple tools to preserve scientific momentum, inspired by devtools and devops culture.
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 cyantic-0.1.2.tar.gz.
File metadata
- Download URL: cyantic-0.1.2.tar.gz
- Upload date:
- Size: 31.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.5.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8db064537225bd3ccd1e30957249aa1d2edf5c2295f0ccbb0210559e2d3c8f0c
|
|
| MD5 |
524ad574950bc8f69dd12e7bcc296e92
|
|
| BLAKE2b-256 |
5385f67b530f3f80a8d604d23a3ab81538a8fafa7daefc0b8777e1f47fbf17fa
|
File details
Details for the file cyantic-0.1.2-py3-none-any.whl.
File metadata
- Download URL: cyantic-0.1.2-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.5.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d5f52755a0aa514e290dfd3cd6a23de4aed7a85423f85293c665a47749054f8
|
|
| MD5 |
788ae50f19b65ec833031b9cf749feac
|
|
| BLAKE2b-256 |
fba0192ecb63aa6f70cdf54396cb646a62edac8af5134804b381d062f135e8d3
|