-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
168 lines (154 loc) Β· 7.71 KB
/
Copy pathpyproject.toml
File metadata and controls
168 lines (154 loc) Β· 7.71 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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "fireflyframework-datascience"
version = "26.6.0"
description = "A state-of-the-art Python metaframework for AutoML that fuses GenAI (built on Firefly Agentic / Pydantic AI) with classical ML and Deep Learning β hexagonal, secure-by-default, native to the Firefly Framework."
readme = "README.md"
license = { text = "Apache-2.0" }
authors = [{ name = "Firefly Software Foundation" }]
maintainers = [{ name = "Firefly Software Foundation" }]
requires-python = ">=3.13"
classifiers = [
"Development Status :: 3 - Alpha",
"Framework :: Pydantic :: 2",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.13",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Software Development :: Libraries :: Python Modules",
"Typing :: Typed",
]
keywords = ["automl", "machine-learning", "deep-learning", "genai", "agents", "data-science", "framework"]
dependencies = [
# The single framework hard-dependency: the Firefly GenAI substrate. It is not on PyPI, so we pin a
# direct git URL (PEP 508). This is tool-agnostic (pip and uv both honour it) and β crucially β
# avoids a dependency-confusion vector: a bare name would let pip fall back to PyPI for an unowned
# name. Pin @<rev> for a fully reproducible release.
"fireflyframework-agentic @ git+https://github.com/fireflyframework/fireflyframework-agentic@main",
"pydantic>=2.13,<3",
"pydantic-settings>=2.14.2,<3",
"pyyaml>=6.0.1",
"click>=8.1.7",
"rich>=13.7.0",
"typing-extensions>=4.12.0",
]
[project.optional-dependencies]
# --- classical ML core ---
tabular = ["pandas>=2.2.0", "numpy>=1.26.0", "scikit-learn>=1.5.0", "xgboost>=2.1.0", "lightgbm>=4.5.0", "catboost>=1.2.7", "optuna>=4.0.0"]
tabfm = ["tabpfn>=2.0.0"]
automl = ["autogluon.tabular>=1.2.0"]
# --- deep learning ---
dl = ["torch>=2.4.0", "lightning>=2.4.0", "torchvision>=0.19.0", "accelerate>=1.0.0"]
nlp = ["transformers>=4.45.0", "datasets>=3.0.0", "peft>=0.13.0", "trl>=0.11.0", "sentencepiece>=0.2.0"]
# --- mlops ---
tracking = ["mlflow>=2.17.0"]
tracking-wandb = ["wandb>=0.18.0"]
validation = ["pandera>=0.20.0"]
explain = ["shap>=0.46.0"]
featurestore = ["feast>=0.40.0"]
serving = ["bentoml>=1.3.0"]
serving-llm = ["vllm>=0.6.0"]
lineage = ["openlineage-python>=1.23.0"]
orchestration = ["apache-airflow>=2.10.0"]
# --- data / benchmarks ---
data = ["openml>=0.15.0", "polars>=1.9.0"]
# --- genai accelerators (agentic extras; the base dep is pinned via the direct git URL above) ---
genai = [
"fireflyframework-agentic[script-execution,embeddings,openai-embeddings,vectorstores-chroma]",
]
# convenience bundles
automl-stack = ["fireflyframework-datascience[tabular,tabfm,automl,tracking,validation,data]"]
full = ["fireflyframework-datascience[tabular,tabfm,automl,dl,nlp,tracking,validation,explain,featurestore,serving,lineage,orchestration,data,genai]"]
[project.scripts]
firefly-ds = "fireflyframework_datascience.cli.main:cli"
# Auto-configuration plugin discovery group (mirrors pyfly's pattern with our own
# namespace). Each DS module self-registers its adapters here when present.
[project.entry-points."firefly_datascience.auto_configuration"]
core = "fireflyframework_datascience.core.auto_configuration:CoreAutoConfiguration"
datasets = "fireflyframework_datascience.datasets.auto_configuration:DatasetsAutoConfiguration"
engineering = "fireflyframework_datascience.engineering.auto_configuration:EngineeringAutoConfiguration"
models = "fireflyframework_datascience.models.auto_configuration:ModelsAutoConfiguration"
evaluation = "fireflyframework_datascience.evaluation.auto_configuration:EvaluationAutoConfiguration"
explainability = "fireflyframework_datascience.explainability.auto_configuration:ExplainabilityAutoConfiguration"
features = "fireflyframework_datascience.features.auto_configuration:FeaturesAutoConfiguration"
search = "fireflyframework_datascience.search.auto_configuration:SearchAutoConfiguration"
validation = "fireflyframework_datascience.validation.auto_configuration:ValidationAutoConfiguration"
tracking = "fireflyframework_datascience.tracking.auto_configuration:TrackingAutoConfiguration"
dl = "fireflyframework_datascience.dl.auto_configuration:DLAutoConfiguration"
nlp = "fireflyframework_datascience.nlp.auto_configuration:NLPAutoConfiguration"
vision = "fireflyframework_datascience.vision.auto_configuration:VisionAutoConfiguration"
serving = "fireflyframework_datascience.serving.auto_configuration:ServingAutoConfiguration"
lineage = "fireflyframework_datascience.lineage.auto_configuration:LineageAutoConfiguration"
automl = "fireflyframework_datascience.automl.auto_configuration:AutoMLAutoConfiguration"
[dependency-groups]
dev = [
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-cov>=5.0.0",
"coverage[toml]>=7.6.0",
"ruff>=0.7.0",
"pyright>=1.1.380",
]
docs = ["mkdocs-material>=9.5.0"]
[tool.hatch.metadata]
# Allow the PEP 508 direct git URL for fireflyframework-agentic (it is not on PyPI).
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["src/fireflyframework_datascience"]
[tool.ruff]
target-version = "py313"
line-length = 120
extend-exclude = ["assets"]
force-exclude = true
[tool.ruff.lint]
select = ["E", "F", "W", "I", "N", "UP", "B", "SIM", "TC", "PLC0415"]
ignore = ["E501", "TC001", "TC002", "TC003", "UP040", "UP046", "UP047", "B008", "N803", "N806", "N812"]
[tool.ruff.lint.per-file-ignores]
# The DataScience domain layer lazy-imports optional heavy dependencies (pandas, scikit-learn,
# xgboost, mlflow, β¦) inside methods so the core stays importable without any extra installed β the
# deferred import IS the design. The foundation (core/container/application) keeps PLC0415 enforced.
"src/fireflyframework_datascience/**/auto_configuration.py" = ["PLC0415"]
"src/fireflyframework_datascience/datasets/**" = ["PLC0415"]
"src/fireflyframework_datascience/models/**" = ["PLC0415"]
"src/fireflyframework_datascience/engineering/**" = ["PLC0415"]
"src/fireflyframework_datascience/evaluation/**" = ["PLC0415"]
"src/fireflyframework_datascience/explainability/**" = ["PLC0415"]
"src/fireflyframework_datascience/features/**" = ["PLC0415"]
"src/fireflyframework_datascience/search/**" = ["PLC0415"]
"src/fireflyframework_datascience/validation/**" = ["PLC0415"]
"src/fireflyframework_datascience/tracking/**" = ["PLC0415"]
"src/fireflyframework_datascience/automl/**" = ["PLC0415"]
"src/fireflyframework_datascience/dl/**" = ["PLC0415"]
"src/fireflyframework_datascience/nlp/**" = ["PLC0415"]
"src/fireflyframework_datascience/vision/**" = ["PLC0415"]
"src/fireflyframework_datascience/serving/**" = ["PLC0415"]
"src/fireflyframework_datascience/lineage/**" = ["PLC0415"]
"src/fireflyframework_datascience/preprocessing.py" = ["PLC0415"]
"tests/**" = ["PLC0415"]
"samples/**" = ["PLC0415"]
"benchmarks/**" = ["PLC0415"]
[tool.ruff.lint.isort]
known-first-party = ["fireflyframework_datascience"]
[tool.pyright]
pythonVersion = "3.13"
typeCheckingMode = "basic"
include = ["src/fireflyframework_datascience"]
exclude = ["tests/**", "samples/**", "benchmarks/**", "assets/**"]
extraPaths = ["src"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
pythonpath = ["src", "."]
addopts = "-m 'not nightly and not integration'"
markers = [
"nightly: long-running tests (benchmarks, real LLM/GPU/Kaggle); excluded from the PR gate.",
"integration: real-backend tests (testcontainers / real ML libs); excluded from the fast gate.",
]
[tool.coverage.run]
source = ["src/fireflyframework_datascience"]
branch = true