Skip to content

Releases: lenskit/lkpy

Initial PyPI 2025 release

25 Dec 18:04
Compare
Choose a tag to compare
Pre-release

This is the first pre-release of LensKit 2025 to PyPI.

Quick bugfix

16 Feb 21:04
Compare
Choose a tag to compare

This fixes a bug in the util.clone function where it incorrectly cloned tuples as lists.

0.14 Dependency Updates

22 Jan 01:47
Compare
Choose a tag to compare

This is a small compatibility update for 0.14 to support Python 3.11, newer Numba, and Pandas 2.

What's Changed

Full Changelog: 0.14.2...0.14.3

Dependency Updates

16 Aug 20:26
3069e87
Compare
Choose a tag to compare

This release just bumps dependencies to enable and test support for Numba 0.56; also bumps up the minimum SciPy version to make the tests pass reliably (the minimum version is still several years old).

What's Changed

Full Changelog: 0.14.1...0.14.2

Fix truncated nDCG bug

11 Mar 17:33
2646e79
Compare
Choose a tag to compare

This release fixes #309, a bug in which the nDCG metric was not correctly computed when k is smaller than the recommendation list.

What's Changed

Full Changelog: 0.14.0...0.14.1

Cleaning Up

19 Feb 19:10
Compare
Choose a tag to compare

This release has a lot of cleanups and refactorings. Highlights:

  • ⚠️ MultiEval's deprecation has been upgraded to removal
  • ⚠️ ImplicitMF's default has changed to no longer use rating values, even if they are present (old behavior is still an option)
  • The k-NN recommenders now have an easier way to configure the typical setup for implicit feedback.
  • Algorithms using heavy external code, and bridges to other systems, have been moved to their own packages to be released shortly. This includes the HPF recommender, TensorFlow recommenders, and Ben Frederickson's 'implicit' library. Moving these into their own repositories will decrease maintenance overhead on the main LensKit project, and should also make installation easier.
  • Python 3.10 is now supported.

See the detailed release notes below for more information.

This will be the last release series tested against Python 3.7. Further patch releases (e.g. a 0.14.1) will be tested on 3.7, but 0.15 will drop 3.7 support as per NEP 29. NEP 29 would allow us to drop 3.7 with this release, but I'm keeping it since it's been so long since the last LensKit release.

What’s Changed

⚠ Breaking Changes

🐜 Bug Fixes

  • Correctly include missing user scores with multiple runs (#293) @mdekstrand

📏 Evaluation Support

🧩 Algorithms

🧱 Internals

🔧 Maintenance

Little bug fix

22 Jun 17:06
0678cd1
Compare
Choose a tag to compare

Just a little bug fix for Bias (doesn't affect correctness, just makes documented configuration options actually work instead of throwing an exception).

What’s Changed

LensKit 0.13.0 - critical bugs fixed

18 Jun 16:59
Compare
Choose a tag to compare

We're pleased to release LensKit 0.13!

Major Fixes

This release includes two critical fixes, for which everyone should upgrade:

  • The Bias model's transform and inverse_transform methods were incorrect (#265). These bugs did not affect Bias when used as a predictor or a recommender, but they did affect any model using Bias as a normalization step, namely the biased matrix factorizers (since version 0.11, when this API was added).
  • Previous versions of LensKit did not clean up temporary files (or, on Python 3.8 and later, shared memory resources) when running parallel evaluation processes.

It also includes significant performance improvements and code to detect common problems with parallel processing configurations, and is tested on Python 3.9 and on Linux AArch64 (64-bit ARM).

Future Changes

This release deprecates two sets of APIs that will be removed in LensKit 0.14:

  • MultiEval (#254) - it doesn't work well for realistic projects, and simple evaluations are easy enough to write in a loop, so we will be removing MultiEval to reduce our maintenance burden going forward.
  • RNG seed management APIs - these are replaced by seedbank. In 0.13, the APIs are kept as compatibility shims for their SeedBank replacements, but we will remove them in 0.14 in favor of directly calling seedbank.

We haven't yet adopted any formal deprecation policies for LensKit, but my current tentative plan is to use this next-release cadence for nontrivial removals while we're still releasing 0.x versions; once we decide to bump to 4.x, we will use semantic versioning on all public APIs, and thus deprecations will not be enforced until the next major release.

In a future LensKit, I tentatively plan to factor out several of our bridges (TensorFlow, Implicit, HPF) into separate projects. We will keep compatibility imports for at least one 0.x release, and probably until 4.0. This will reduce the development overhead of the LensKit core.

What’s Changed

Really publish

06 Mar 22:45
Compare
Choose a tag to compare

This actually publishes the 0.12 bump, a tagging error prevented 0.12.2 from going out.

Education Bugfixes

06 Mar 22:43
Compare
Choose a tag to compare

This release contains the sampling function refactor (#230), and documentation improvements.