1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 hatchling,
8
9 # dependencies
10 equinox,
11 jax,
12 jaxtyping,
13 lineax,
14 typing-extensions,
15
16 # checks
17 beartype,
18 jaxlib,
19 optax,
20 pytestCheckHook,
21 pytest-xdist,
22}:
23
24buildPythonPackage rec {
25 pname = "optimistix";
26 version = "0.0.9";
27 pyproject = true;
28
29 src = fetchFromGitHub {
30 owner = "patrick-kidger";
31 repo = "optimistix";
32 rev = "refs/tags/v${version}";
33 hash = "sha256-s8MRPyPObTpgLRm4bxU8F4Su7FKH+MHqtQsxIHb/DN4=";
34 };
35
36 build-system = [ hatchling ];
37
38 dependencies = [
39 equinox
40 jax
41 jaxtyping
42 lineax
43 typing-extensions
44 ];
45
46 pythonImportsCheck = [ "optimistix" ];
47
48 nativeCheckInputs = [
49 beartype
50 jaxlib
51 optax
52 pytestCheckHook
53 pytest-xdist
54 ];
55
56 meta = {
57 description = "Nonlinear optimisation (root-finding, least squares, ...) in JAX+Equinox";
58 homepage = "https://github.com/patrick-kidger/optimistix";
59 changelog = "https://github.com/patrick-kidger/optimistix/releases/tag/v${version}";
60 license = lib.licenses.asl20;
61 maintainers = with lib.maintainers; [ GaetanLepage ];
62 };
63}