-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathpixi.toml
More file actions
118 lines (98 loc) · 4.45 KB
/
Copy pathpixi.toml
File metadata and controls
118 lines (98 loc) · 4.45 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
[workspace]
name = "scikit-learn-central"
description = "Scikit-learn Central — interactive ecosystem explorer (Vue 3 + Vite)"
authors = ["Probabl SAS <contact@probabl.ai>"]
channels = ["conda-forge"]
platforms = ["osx-arm64", "osx-64", "linux-64", "win-64"]
[dependencies]
nodejs = ">=22.11,<23"
python = ">=3.11,<3.13"
# Extra deps used only by the release-metadata script (HTML scraping).
[feature.scripts.dependencies]
requests = "*"
beautifulsoup4 = "*"
lxml = "*"
# JupyterLite toolchain — converts use-case .py → .ipynb and builds the
# in-browser JupyterLite static site (Lab + Notebook apps). Versions pinned to the same ones the
# upstream skeleton-deploy ships.
[feature.jupyterlite.dependencies]
python = ">=3.11,<3.13"
jupyterlite-core = ">=0.4,<0.5"
jupyterlite-pyodide-kernel = ">=0.4,<0.5"
jupyter_server = ">=2.14,<3"
jupytext = ">=1.16,<2"
ipywidgets = ">=8.1.8,<9"
# One-off dataset refresh: pull california housing + german credit and commit
# them as CSV under data/use-cases/datasets/. Heavy ML deps so they live in
# their own env, not in the daily Vue dev workflow.
[feature.datasets.dependencies]
python = ">=3.11,<3.13"
pandas = "*"
scikit-learn = "*"
pyarrow = "*"
[environments]
default = { solve-group = "default" }
scripts = { features = ["scripts"], solve-group = "default" }
jupyterlite = { features = ["jupyterlite"], no-default-feature = true }
datasets = { features = ["datasets"], no-default-feature = true }
[tasks.install]
cmd = "npm install"
inputs = ["package.json", "package-lock.json"]
outputs = ["node_modules/.package-lock.json"]
description = "Install npm dependencies (runs automatically on first dev/build)."
[tasks.dev]
cmd = "npm run dev"
depends-on = ["install", "link-jupyterlite"]
description = "Start Vite dev server with hot reload. Symlinks dist/jupyterlite into public/ so the Open-in-JupyterLite link works in dev (silently no-ops if JupyterLite hasn't been built yet)."
# Dev-only helpers — keep the JupyterLite tree out of public/ during prod builds
# (Vite's publicDir copy would otherwise duplicate or break it).
[tasks.link-jupyterlite]
cmd = "python scripts/link_jupyterlite.py"
description = "Symlink public/jupyterlite → dist/jupyterlite so Vite dev serves /jupyterlite/."
[tasks.unlink-jupyterlite]
cmd = "python scripts/link_jupyterlite.py --remove"
description = "Remove the dev-only symlink (called before prod builds)."
[tasks.build]
depends-on = [
"build-frontend",
{ task = "build-jupyterlite", environment = "jupyterlite" },
]
description = "Full production build: Vue site (dist/) + JupyterLite (dist/jupyterlite/)."
[tasks.build-frontend]
cmd = "npm run build"
depends-on = ["install", "unlink-jupyterlite"]
description = "Build the Vue site only (no JupyterLite). Faster when you don't need the in-browser notebooks."
[tasks.preview]
cmd = "npm run preview"
depends-on = ["build"]
description = "Serve the production build locally for verification."
[tasks.type-check]
cmd = "npm run type-check"
depends-on = ["install"]
description = "Run vue-tsc without emitting files."
[tasks.update-stats]
cmd = "python scripts/update_stats.py"
description = "Refresh data/stats.json from GitHub + PyPI."
[feature.scripts.tasks.update-releases]
cmd = "python scripts/update_release_metadata.py"
description = "Refresh data/releases/scikit-learn.json (needs requests+bs4+lxml)."
[feature.scripts.tasks.update-release-reactions]
cmd = "python scripts/update_release_reactions.py"
description = "Refresh release reaction counts."
[tasks.mcp-bundle]
cmd = "python mcp/generate_bundle.py"
description = "Regenerate the MCP worker data bundle from data/."
[tasks.migrate-categories]
cmd = "python scripts/migrate_categories.py"
description = "One-off: replace legacy `nature`+`scope` with the categories taxonomy (issue #16)."
# One-off helper: refresh embedded CSVs under data/use-cases/datasets/. Run
# whenever a new use case is added or an upstream dataset changes.
[feature.datasets.tasks.fetch-datasets]
cmd = "python scripts/fetch_datasets.py"
description = "Download california housing + german credit and commit as CSV under data/use-cases/datasets/."
# Builds dist/jupyterlite/ from data/use-cases/*.py. Lives in the jupyterlite
# env so the heavy Jupyter stack isn't pulled into the default env (which only
# needs Node for the Vue build).
[feature.jupyterlite.tasks.build-jupyterlite]
cmd = "python scripts/build_jupyterlite.py"
description = "Convert use-case .py to .ipynb (jupytext) and build the in-browser JupyterLite site into dist/jupyterlite/."