You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bump to 4.2.2: add validate-bump CI and refresh post-UV docs
- Add validate-bump job to push workflow, backed by scripts/validate_bump.sh, enforcing version bumps (and CHANGELOG entries for minor/major) whenever src/, pyproject.toml or uv.lock change
- Bump version to 4.2.2 and add matching CHANGELOG entry
- Rewrite docs/source/contributing.rst for the UV era: drop pip/flake8/mypy.ini/requirements.txt references, switch to uv sync / uv run ruff / uv run mypy, update supported Python range to 3.10-3.13, add a top-level Quick start block and a Build documentation section that documents the pandoc system prerequisite and the required cd docs/ step
- Update docs/source/getting_started.rst to state Python 3.10+ and show uv sync install-from-source
- Fix Sphinx build: drop the stale fklearn.version autodoc entry from docs/source/api/fklearn.rst (the version submodule was removed in the UV migration; __version__ now comes from importlib.metadata) and set language = "en" in docs/source/conf.py to silence the Sphinx >=5 warning
Copy file name to clipboardExpand all lines: CHANGELOG.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,13 @@
1
1
# Changelog
2
2
3
+
## [4.2.2] - 2026-04-24
4
+
-**Internal**
5
+
- CI: add `validate-bump` job to the `push` workflow, backed by `scripts/validate_bump.sh`, so PRs that modify `src/`, `pyproject.toml` or `uv.lock` must bump the version (and, for non-patch bumps, update the CHANGELOG).
6
+
-**Documentation**
7
+
- Update `docs/source/contributing.rst` to reflect the UV migration: drop `pip install -e .[devel]`, `flake8`, `mypy.ini` and `requirements.txt` references; replace with `uv sync`, `uv run ruff check/format` and `uv run mypy` instructions; update supported Python range to 3.10–3.13. Add a top-level *Quick start* block and a clearer *Build documentation* section that documents the `pandoc` system requirement (needed by `nbsphinx`) and the required `cd docs/` step.
8
+
- Update `docs/source/getting_started.rst` to state Python 3.10+ (was 3.8+) and show UV-based install-from-source.
9
+
- Fix Sphinx docs build: drop the stale `fklearn.version` autodoc entry from `docs/source/api/fklearn.rst` (the `version` submodule was removed in the UV migration — `__version__` now comes from `importlib.metadata`), and set `language = "en"` in `docs/source/conf.py` to silence the Sphinx ≥5 `language = None` warning.
10
+
3
11
## [4.2.1] - 2026-04-22
4
12
-**Enhancement**
5
13
- Add `valid_dfs` and `callbacks` parameters to `lgbm_regression_learner` for early-stopping and custom LightGBM callback support.
Copy file name to clipboardExpand all lines: docs/source/contributing.rst
+65-39Lines changed: 65 additions & 39 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,34 +47,39 @@ This will create a folder called ``fklearn`` and will connect to the upstream(ma
47
47
Development environment
48
48
-----------------------
49
49
50
-
We recommend you to create a virtual environment before starting to work with the code, after that you can ensure that everything is working fine by running all tests locally before start writing any new code.
50
+
fklearn uses `uv <https://docs.astral.sh/uv/>`_ for dependency and virtual-environment management.
51
+
``uv sync`` creates an isolated ``.venv`` in the project root, installs all locked
52
+
dependencies, and installs fklearn itself in editable mode — so changes under
53
+
``src/`` are picked up without reinstalling.
51
54
52
-
Creating the virtual environment
53
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55
+
Install uv
56
+
~~~~~~~~~~
57
+
58
+
Follow the `uv installation guide <https://docs.astral.sh/uv/getting-started/installation/>`_,
59
+
for example:
54
60
55
61
.. code-block:: bash
56
62
57
-
# Use an ENV_DIR of you choice. We are using ~/venvs
58
-
python3 -m venv ~/venvs/fklearn-dev
59
-
source~/venvs/fklearn-dev/activate
63
+
curl -LsSf https://astral.sh/uv/install.sh | sh
60
64
61
-
Install the requirements
65
+
Install the dependencies
62
66
~~~~~~~~~~~~~~~~~~~~~~~~
63
67
64
-
This command will install all the test dependencies. To install the package you can follow the `installation instructions <https://fklearn.readthedocs.io/en/latest/getting_started.html#installation>`_.
68
+
From the repository root:
65
69
66
70
.. code-block:: bash
67
71
68
-
python3 -m pip install -qe .[devel]
72
+
uv sync # core deps + dev group (pytest, ruff, mypy, hypothesis)
uv run pytest tests/test-file-name.py::test_method_name
147
150
148
151
149
152
You must write tests for every feature **always**, you can look at the other tests to have a better idea how we implement them.
@@ -153,7 +156,7 @@ Document your code
153
156
------------------
154
157
155
158
All methods should have type annotations, this allow us to know what that method expect as parameters, and what is the expected output.
156
-
You can learn more about it in `typing docs <https://docs.python.org/3.8/library/typing.html>`_
159
+
You can learn more about it in `typing docs <https://docs.python.org/3/library/typing.html>`_
157
160
158
161
To document your code you should add docstrings, all methods with docstring will appear in this documentation's api file.
159
162
If you created a new file, you may need to add it to the ``api.rst`` following the structure
@@ -213,13 +216,32 @@ When you make changes in the docs, please make sure, we still be able to build i
213
216
Build documentation
214
217
-------------------
215
218
216
-
From ``docs/`` folder, install `requirements.txt` and run
219
+
Docs dependencies are declared as the ``docs`` extra in ``pyproject.toml``. Building
220
+
also requires `pandoc <https://pandoc.org/installing.html>`_ on your system for the
221
+
notebook-based examples (``nbsphinx``) — ``uv`` cannot provide this.
222
+
223
+
On macOS you can get it (together with ``libomp``) via the repo's ``Brewfile``:
224
+
225
+
.. code-block:: bash
226
+
227
+
brew bundle
228
+
229
+
On Debian/Ubuntu:
217
230
218
231
.. code-block:: bash
219
232
220
-
make html
233
+
sudo apt-get install -y pandoc
221
234
222
-
This command will build the documentation inside ``docs/build/html`` and you can check locally how it looks, and if everything worked.
235
+
Then install the docs extra and build the HTML. The ``Makefile`` lives in ``docs/``,
236
+
so you must ``cd`` there first:
237
+
238
+
.. code-block:: bash
239
+
240
+
uv sync --extra docs
241
+
cd docs/
242
+
uv run make html
243
+
244
+
This will build the documentation inside ``docs/build/html`` where you can check locally how it looks.
223
245
224
246
Send your changes to Fklearn repo
225
247
=================================
@@ -295,16 +317,20 @@ Use Semantic versioning to set library versions, more info: `semver.org <https:/
295
317
296
318
(from semver.org summary)
297
319
298
-
You don't need to set the version in your PR, we'll take care of this when we decide to release a new version.
299
-
Today the process is:
320
+
If your PR changes code under ``src/``, ``pyproject.toml`` or ``uv.lock``, you are expected to bump
321
+
the ``version`` in ``pyproject.toml`` and — for minor/major bumps — add a matching section to
322
+
``CHANGELOG.md``. This is enforced in CI by the ``validate-bump`` job
323
+
(``scripts/validate_bump.sh``), which follows semver rules:
324
+
325
+
- Patch bump (``X.Y.Z`` → ``X.Y.Z+1``) for backwards-compatible bug fixes.
326
+
- Minor bump (``X.Y.Z`` → ``X.Y+1.0``) for backwards-compatible new functionality (requires a CHANGELOG entry).
327
+
- Major bump (``X.Y.Z`` → ``X+1.0.0``) for incompatible API changes (requires a CHANGELOG entry).
300
328
301
-
- Create a new ``milestone`` X.Y.Z (maintainers only)
302
-
- Some PR/issues are attributed to this new milestone
303
-
- Merge all the related PRs (maintainers only)
304
-
- Create a new PR: ``Bump package to X.Y.Z`` This PR update the version and the change log (maintainers only)
305
-
- Create a tag ``X.Y.Z`` (maintainers only)
329
+
Release process (maintainers only):
306
330
307
-
This last step will trigger the CI to build the package and send the version to pypi
331
+
- Create a new ``milestone`` X.Y.Z
332
+
- Attribute PRs/issues to that milestone and merge them
333
+
- Once the target set of PRs is merged, cut a release by creating a tag ``X.Y.Z``
308
334
309
335
When we add new functionality, the past version will be moved to another branch. For example, if we're at version ``1.13.7`` and a new functionality is implemented,
310
336
we create a new branch ``1.13.x``, and protect it(this way we can't delete it), the new code is merged to master branch, and them we create the tag ``1.14.0``
0 commit comments