-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathpyproject.toml
More file actions
119 lines (103 loc) · 3.36 KB
/
Copy pathpyproject.toml
File metadata and controls
119 lines (103 loc) · 3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
[project]
name = "machinable"
version = "5.0.0"
description = "A modular configuration system for research projects"
license = "MIT"
authors = [{ name = "Frithjof Gressmann", email = "hello@machinable.org" }]
maintainers = [{ name = "Frithjof Gressmann", email = "hello@machinable.org" }]
readme = "README.md"
requires-python = ">=3.11"
keywords = ["machine-learning", "research"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Programming Language :: Python",
"License :: OSI Approved :: MIT License",
"Intended Audience :: Science/Research",
]
dependencies = [
"flatten-dict>=0.5,<1",
"pydantic>=1,<3",
"arrow>=1.4.0",
"omegaconf==2.4.0.dev12",
"dill>=0.4.1",
"cloudpickle>=3",
"pathspec>=0.12",
]
[project.optional-dependencies]
all = ["numpy", "pandas"]
mcp = ["fastmcp>=2", "scipy", "numpy", "pandas"]
api = [
"fastapi>=0.115",
"uvicorn[standard]>=0.30",
"httpx>=0.27",
"aiofiles>=23",
]
console = ["textual>=1.0", "httpx>=0.27"]
widgets = ["anywidget>=0.9"]
[project.scripts]
machinable = "machinable.cli:main"
[project.urls]
Homepage = "https://machinable.org"
Repository = "https://github.com/machinable-org/machinable"
Documentation = "https://machinable.org"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build]
# the web-client bundle is gitignored (built by the publish workflow) but must
# ship in the distributions (the wheel is built from the sdist); `artifacts`
# includes it despite the VCS ignore
artifacts = [
"/src/machinable/assets/widget-sdk.js",
"/src/machinable/assets/widget-sdk.css",
]
[tool.hatch.build.targets.wheel]
packages = ["src/machinable"]
[dependency-groups]
dev = [
"ruff>=0.15.16",
"pytest>=8.1",
"pre-commit>=4.6.0",
"httpx>=0.28.1",
"aiofiles>=23",
"anywidget>=0.9",
"pandas>=2.0",
"ty==0.0.59",
]
[tool.ty.src]
include = ["src/machinable"]
# agent-facing templates that reference project modules by convention;
# not part of the typed surface
exclude = ["src/machinable/mcp/teaching"]
[tool.pytest.ini_options]
# integrations/ is community-maintained and runs in its own workflow
testpaths = ["tests"]
[tool.ruff]
# community-maintained, checked by the integrations workflow instead
extend-exclude = ["integrations"]
[tool.ruff.format]
# ruff >=0.16 formats python blocks in markdown; docs align trailing comments
# into a column for readability, which the formatter collapses
exclude = ["*.md"]
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "D"]
# magic methods, nested Config classes, and __init__ are self-describing
ignore = ["D105", "D106", "D107"]
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.ruff.lint.per-file-ignores]
# docstring style applies everywhere; presence (D1) only where the backfill is
# complete — remove entries below as their public members get documented
"src/machinable/api/**" = ["D1"]
"src/machinable/mcp/**" = ["D1"]
# Textual action_*/on_* handlers are named by convention; docstrings add noise
"src/machinable/console/**" = ["D1"]
# tests, docs, and scripts document themselves through their names
"tests/**" = ["D"]
"docs/**" = ["D"]
# emits markdown/CSS templates whose lines cannot wrap
"docs/.vitepress/integrationsgen.py" = ["E501"]
[tool.ruff.lint.isort]
known-first-party = ["machinable"]
[tool.pylint.'MESSAGES CONTROL']
disable = "protected-access, import-outside-toplevel, too-few-public-methods"