Skip to content

v0.6.1

Latest

Choose a tag to compare

@foolnotion foolnotion released this 01 Mar 11:26
· 16 commits to main since this release
v0.6.1
621c9ae

This release includes mainly fixes to the scikit-learn interface interface and some additional CI and packaging fixes.

Wheels available on PyPI.

Changelog

Scikit-learn interface

  • Refactored SymbolicRegressor to follow scikit-learn conventions: None defaults for mutable parameters, single-underscore private methods for proper subclassing
  • Replaced __check_parameters() (which mutated self) with _resolve_params() that returns a resolved dict without side effects
  • Added _validate_params() for comprehensive parameter validation
  • fit() now sets n_features_in_ and feature_names_in_ attributes
  • Fixed MinimumDescriptionLengthEvaluator call to pass the required likelihood argument
  • Expanded docstrings with type hints and corrected example import paths

C++ bindings

  • Fixed dead code in UserDefinedEvaluator.__call__ where gil_scoped_acquire was placed after a return statement (source/evaluator.cpp)
  • Removed duplicate read-only property for PrimitiveSet that was shadowing the read-write version (source/problem.cpp)
  • Fixed typo in dataset error message and removed redundant type cast attempts (source/dataset.cpp)
  • Removed unused InitAutodiff declaration from the header (include/pyoperon/pyoperon.hpp)

CI / Build

  • Split build-wheels.yml into separate build-linux.yml, build-macos.yml, and a shared test.yml (reusable workflow) for independent status badges
  • Added a test gate: wheel builds only proceed after pytest passes
  • Linux wheels now use a matrix strategy (parallel builds per Python version) instead of a sequential loop
  • Removed generator from CMake presets — resolves ninja/make conflicts on macOS when scikit-build-core auto-detects the build tool
  • Fixed pip wheel to use SKBUILD_CMAKE_ARGS environment variable for passing CMake presets (replaces non-portable -C flag)
  • Added --no-deps to pip wheel to prevent building dependency wheels into dist/
  • Deleted legacy setup.py, ci.yml, and build-nix.yml workflows

Packaging

  • Consolidated packaging on pyproject.toml with scikit-build-core
  • Updated requires-python to >=3.10
  • Added [project.optional-dependencies] test = ["pytest>=7.0"]
  • Updated environment.yml: scikit-build replaced with scikit-build-core

Tests

  • Added tests/test_sklearn.py with unit tests (parameter resolution, validation, no mutation), sklearn interface tests (clone, get/set params, repr), and integration tests (fit/predict, cross-validation, multi-objective, warm start, etc.)

Docs

  • Updated README build instructions to reflect current Nix and Conda workflows
  • Fixed README badges to link to the correct workflows