Skip to content

Commit 6c2e7b8

Browse files
authored
Merge pull request #328 from OpenTabular/release/v1.7.0
bump: version 1.6.1 → 1.7.0rc1
2 parents ae65ce2 + 9485694 commit 6c2e7b8

7 files changed

Lines changed: 310 additions & 35 deletions

File tree

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,30 @@ Going forward, this file is updated automatically by `cz bump` on each release.
99

1010
---
1111

12+
## v1.7.0rc1 (2026-05-08)
13+
14+
### Documentation
15+
16+
- Added **Developer Guide** section with dedicated pages for contributing, the release process, model promotion policy (experimental → stable), and a SPEC 0–aligned support matrix
17+
- Added **Getting Started** section: new Overview page with full model reference table, Installation guide (prerequisites, PyPI, source, optional Mamba CUDA kernels), and Key Concepts page covering the sklearn API, task variants, config system, and preprocessing
18+
- Rewrote all three example pages (classification, regression, distributional regression) as narrative tutorials with runnable code and "using your own data" sections
19+
- Added `llms.txt` index for LLM tool discovery
20+
- Switched to `sphinx_design` for cards and grid layouts; added custom CSS with JetBrains Mono font and brand colour palette
21+
- Added `pygments_style = "friendly"` and dark-mode code block colours via CSS
22+
23+
### CI
24+
25+
- Dropped Python 3.14 from the test matrix (`scipy` wheels are not yet available); ceiling reverted to `<3.14` in `pyproject.toml`
26+
- Fixed `torch` upper bound from `<=2.7.0` to `<2.8.0` to allow patch releases
27+
- Added Lightning log filtering to reduce test output noise
28+
- Regenerated `poetry.lock` after dependency constraint changes
29+
30+
### Bug Fixes
31+
32+
- Fixed Pyright type errors in test fixtures (DataFrame construction and unused variable bindings)
33+
34+
---
35+
1236
## v1.6.1 (2025-04-26)
1337

1438
### Changes

docs/_static/custom.css

Lines changed: 203 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -19,42 +19,152 @@ html[data-theme="dark"] {
1919
--pst-color-link: #38bdf8;
2020
}
2121

22-
/* Dark mode: code block background and text */
22+
/* ── Code blocks: GitHub light (default) + GitHub dark (dark mode) ─────────── */
23+
24+
/* Light mode — GitHub light palette */
25+
div.highlight,
26+
.highlight pre {
27+
background: #f6f8fa;
28+
color: #24292f;
29+
}
30+
.highlight pre span {
31+
color: #24292f;
32+
}
33+
.highlight .k,
34+
.highlight .kn,
35+
.highlight .kd,
36+
.highlight .kr,
37+
.highlight .kc {
38+
color: #cf222e;
39+
font-weight: 500;
40+
}
41+
.highlight .s,
42+
.highlight .s1,
43+
.highlight .s2,
44+
.highlight .sa,
45+
.highlight .sb,
46+
.highlight .sc,
47+
.highlight .sd,
48+
.highlight .se,
49+
.highlight .si,
50+
.highlight .sh {
51+
color: #0a3069;
52+
}
53+
.highlight .mi,
54+
.highlight .mf,
55+
.highlight .mh,
56+
.highlight .mo {
57+
color: #0550ae;
58+
}
59+
.highlight .nf,
60+
.highlight .fm {
61+
color: #6639ba;
62+
}
63+
.highlight .nc {
64+
color: #953800;
65+
font-weight: 500;
66+
}
67+
.highlight .nd {
68+
color: #953800;
69+
}
70+
.highlight .nb,
71+
.highlight .bp {
72+
color: #0550ae;
73+
}
74+
.highlight .nn {
75+
color: #24292f;
76+
}
77+
.highlight .o,
78+
.highlight .ow {
79+
color: #cf222e;
80+
}
81+
.highlight .c,
82+
.highlight .c1,
83+
.highlight .cm,
84+
.highlight .cs,
85+
.highlight .cp {
86+
color: #6e7781;
87+
font-style: italic;
88+
}
89+
.highlight .n,
90+
.highlight .na,
91+
.highlight .nv,
92+
.highlight .py {
93+
color: #24292f;
94+
}
95+
.highlight .p {
96+
color: #24292f;
97+
}
98+
99+
/* Dark mode — GitHub dark palette */
23100
html[data-theme="dark"] div.highlight,
24101
html[data-theme="dark"] .highlight pre {
25-
background: #1e2433;
26-
color: #abb2bf;
102+
background: #0d1117 !important;
103+
color: #e6edf3 !important;
104+
}
105+
html[data-theme="dark"] .highlight pre span {
106+
color: #e6edf3;
107+
}
108+
html[data-theme="dark"] .highlight .k,
109+
html[data-theme="dark"] .highlight .kn,
110+
html[data-theme="dark"] .highlight .kd,
111+
html[data-theme="dark"] .highlight .kr,
112+
html[data-theme="dark"] .highlight .kc {
113+
color: #ff7b72;
114+
font-weight: 500;
27115
}
28-
29-
html[data-theme="dark"] .highlight .k {
30-
color: #c678dd;
31-
} /* keyword */
32116
html[data-theme="dark"] .highlight .s,
33117
html[data-theme="dark"] .highlight .s1,
34-
html[data-theme="dark"] .highlight .s2 {
35-
color: #98c379;
36-
} /* string */
37-
html[data-theme="dark"] .highlight .c,
38-
html[data-theme="dark"] .highlight .c1 {
39-
color: #5c6370;
40-
font-style: italic;
41-
} /* comment */
118+
html[data-theme="dark"] .highlight .s2,
119+
html[data-theme="dark"] .highlight .sa,
120+
html[data-theme="dark"] .highlight .se,
121+
html[data-theme="dark"] .highlight .si,
122+
html[data-theme="dark"] .highlight .sh {
123+
color: #a5d6ff;
124+
}
42125
html[data-theme="dark"] .highlight .mi,
43-
html[data-theme="dark"] .highlight .mf {
44-
color: #d19a66;
45-
} /* number */
46-
html[data-theme="dark"] .highlight .nf {
47-
color: #61afef;
48-
} /* function name */
126+
html[data-theme="dark"] .highlight .mf,
127+
html[data-theme="dark"] .highlight .mh {
128+
color: #79c0ff;
129+
}
130+
html[data-theme="dark"] .highlight .nf,
131+
html[data-theme="dark"] .highlight .fm {
132+
color: #d2a8ff;
133+
}
49134
html[data-theme="dark"] .highlight .nc {
50-
color: #e5c07b;
51-
} /* class name */
52-
html[data-theme="dark"] .highlight .kn {
53-
color: #c678dd;
54-
} /* import keyword */
135+
color: #ffa657;
136+
font-weight: 500;
137+
}
138+
html[data-theme="dark"] .highlight .nd {
139+
color: #ffa657;
140+
}
141+
html[data-theme="dark"] .highlight .nb,
142+
html[data-theme="dark"] .highlight .bp {
143+
color: #79c0ff;
144+
}
55145
html[data-theme="dark"] .highlight .nn {
56-
color: #e5c07b;
57-
} /* module name */
146+
color: #e6edf3;
147+
}
148+
html[data-theme="dark"] .highlight .o,
149+
html[data-theme="dark"] .highlight .ow {
150+
color: #ff7b72;
151+
}
152+
html[data-theme="dark"] .highlight .c,
153+
html[data-theme="dark"] .highlight .c1,
154+
html[data-theme="dark"] .highlight .cm,
155+
html[data-theme="dark"] .highlight .cp {
156+
color: #8b949e;
157+
font-style: italic;
158+
}
159+
html[data-theme="dark"] .highlight .n,
160+
html[data-theme="dark"] .highlight .na,
161+
html[data-theme="dark"] .highlight .nv,
162+
html[data-theme="dark"] .highlight .py {
163+
color: #e6edf3;
164+
}
165+
html[data-theme="dark"] .highlight .p {
166+
color: #e6edf3;
167+
}
58168

59169
.bd-main .bd-content .bd-article-container {
60170
max-width: 900px;
@@ -110,3 +220,68 @@ div.highlight {
110220
box-shadow: none;
111221
border-bottom: 1px solid var(--pst-color-border);
112222
}
223+
224+
/* Page title (h1): visually similar to h2 to reduce dominance */
225+
.bd-article h1 {
226+
font-size: 1.75rem;
227+
font-weight: 700;
228+
line-height: 1.3;
229+
}
230+
231+
.bd-article h2 {
232+
font-size: 1.4rem;
233+
font-weight: 600;
234+
line-height: 1.35;
235+
}
236+
237+
.bd-article h3 {
238+
font-size: 1.15rem;
239+
font-weight: 600;
240+
line-height: 1.4;
241+
}
242+
243+
.bd-article h4 {
244+
font-size: 1rem;
245+
font-weight: 600;
246+
line-height: 1.4;
247+
}
248+
249+
/* ── Sidebar nav section separators ───────────────────────────────────────── */
250+
/* Each top-level toctree becomes a <ul class="bd-sidenav"> inside
251+
.bd-sidebar-primary .sidebar-primary-items__start nav.
252+
We insert a thin rule above each group except the first. */
253+
.bd-sidebar-primary .bd-toc ul.current > li.toctree-l1:first-child,
254+
.bd-sidebar-primary nav.bd-sidenav > ul > li {
255+
/* no rule needed here */
256+
}
257+
258+
/* Target the caption elements (section titles like "Getting Started") */
259+
.bd-sidebar-primary .caption-text {
260+
font-size: 0.7rem;
261+
font-weight: 700;
262+
letter-spacing: 0.08em;
263+
text-transform: uppercase;
264+
color: var(--pst-color-text-muted);
265+
padding-top: 0.75rem;
266+
margin-top: 0.5rem;
267+
border-top: 1px solid var(--pst-color-border);
268+
display: block;
269+
}
270+
271+
/* Remove the border-top from the very first caption */
272+
.bd-sidebar-primary .toctree-wrapper > ul > li:first-child .caption-text,
273+
.bd-sidebar-primary nav > ul > li.has-children:first-child > .caption-text {
274+
border-top: none;
275+
padding-top: 0;
276+
margin-top: 0;
277+
}
278+
279+
/* ── Navbar: GitHub icon + text label ─────────────────────────────────────── */
280+
/* pydata-sphinx-theme hides .icon-link-name by default; reveal it */
281+
.navbar-icon-link .icon-link-name {
282+
display: inline !important;
283+
font-size: 0.85rem;
284+
font-weight: 500;
285+
margin-left: 0.3rem;
286+
vertical-align: middle;
287+
}

docs/conf.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"myst_parser",
4949
"mdinclude", # custom module
5050
"sphinx_rtd_theme",
51+
"sphinxcontrib.mermaid",
5152
# "pydata_sphinx_theme",
5253
"sphinx_autodoc_typehints",
5354
"sphinx_design",
@@ -105,7 +106,7 @@
105106
show_authors = False
106107

107108
# The name of the Pygments (syntax highlighting) style to use.
108-
pygments_style = "friendly"
109+
pygments_style = "github-light"
109110

110111
# -- Options for HTML output -------------------------------------------------
111112
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
@@ -120,8 +121,8 @@
120121
"repository_url": "https://github.com/OpenTabular/DeepTab",
121122
"repository_branch": "main",
122123
"path_to_docs": "docs",
123-
"use_edit_page_button": True,
124-
"use_source_button": True,
124+
"use_edit_page_button": False,
125+
"use_source_button": False,
125126
"show_toc_level": 2,
126127
"navigation_with_keys": True,
127128
"show_prev_next": True,

docs/developer_guide/release.md

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,43 @@
22

33
The document outlines the steps to build and release the `deeptab` package. At this point, it is assumed that the development and testing of the package have been completed successfully.
44

5+
## Release workflow
6+
7+
```{mermaid}
8+
%%{init: {'theme': 'base', 'themeVariables': {
9+
'primaryColor': '#dbeafe',
10+
'primaryTextColor': '#1e3a5f',
11+
'primaryBorderColor': '#3b82f6',
12+
'lineColor': '#6b7280',
13+
'secondaryColor': '#ede9fe',
14+
'tertiaryColor': '#f0fdf4',
15+
'edgeLabelBackground': '#f9fafb'
16+
}}}%%
17+
flowchart TD
18+
A[Create release/vX.Y.Z branch]:::setup --> B[Bump version]:::setup
19+
B --> C[Update CHANGELOG.md]:::setup
20+
C --> D[Commit & push branch]:::setup
21+
D --> E[Open PR: release/vX.Y.Z → main]:::pr
22+
E --> F{Review & approve}:::decision
23+
F --> G[Merge PR into main]:::pr
24+
G --> H[git checkout main && git pull]:::git
25+
H --> I{Release type?}:::decision
26+
I -->|RC| J["git tag vX.Y.ZrcN\ngit push origin vX.Y.ZrcN"]:::git
27+
I -->|Stable| K["git tag vX.Y.Z\ngit push origin vX.Y.Z"]:::git
28+
J --> L[CI: publish-testpypi.yml]:::ci
29+
K --> M[CI: publish-pypi.yml]:::ci
30+
L --> N[TestPyPI + GitHub pre-release]:::rc
31+
M --> O[PyPI + GitHub Release]:::stable
32+
33+
classDef setup fill:#dbeafe,stroke:#3b82f6,color:#1e3a5f
34+
classDef pr fill:#ede9fe,stroke:#8b5cf6,color:#3b0764
35+
classDef decision fill:#fef9c3,stroke:#ca8a04,color:#713f12
36+
classDef git fill:#f0fdf4,stroke:#22c55e,color:#14532d
37+
classDef ci fill:#fff7ed,stroke:#f97316,color:#7c2d12
38+
classDef rc fill:#fdf4ff,stroke:#d946ef,color:#701a75
39+
classDef stable fill:#ecfdf5,stroke:#10b981,color:#064e3b
40+
```
41+
542
## 1. Test documentation
643

744
It is expected from the contributor to update the documentation as an when required along side the change in source code. Please use the below process to test the documentation:
@@ -18,7 +55,9 @@ Fix any docstring related issue, then proceed with next steps.
1855

1956
The package version is maintained in `pyproject.toml` only. The version is read at runtime via `importlib.metadata`.
2057

21-
On a `release/vX.Y.Z` branch, run:
58+
On a `release/vX.Y.Z` branch:
59+
60+
**For a stable release** — let `cz bump` derive the next version automatically from conventional commits:
2261

2362
```bash
2463
cz bump
@@ -31,7 +70,21 @@ This will:
3170
- Update `CHANGELOG.md`
3271
- Create a local commit `bump: version X.Y.Z-1 → X.Y.Z`
3372

34-
The version number follows the format `major.minor.patch`. For example, `1.0.1`.
73+
**For a release candidate** — set the version explicitly (e.g. `1.7.0rc1`):
74+
75+
```bash
76+
poetry version 1.7.0rc1
77+
poetry lock
78+
```
79+
80+
Then update `CHANGELOG.md` manually and commit:
81+
82+
```bash
83+
git add pyproject.toml poetry.lock CHANGELOG.md
84+
git commit -m "bump: version 1.6.1 → 1.7.0rc1"
85+
```
86+
87+
The version number follows the format `major.minor.patch` for stable, or `major.minor.patchrcN` for release candidates.
3588

3689
## 3. Release PR
3790

docs/requirements_docs.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ readthedocs-sphinx-ext==2.2.5
1515
lxml-html-clean==0.4.0
1616
pydata-sphinx-theme==0.15.2
1717
sphinx-design
18+
sphinxcontrib-mermaid

0 commit comments

Comments
 (0)