From a7e0f50b26d6205a358f2a340d272ef9328af6d1 Mon Sep 17 00:00:00 2001 From: Soispha Date: Sat, 23 Mar 2024 09:14:25 +0100 Subject: [PATCH 1/2] manim-slides: init at v5.1.3 Co-authored-by: dylan madisetti --- .../python-modules/manim-slides/default.nix | 96 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 6 ++ pkgs/top-level/python-packages.nix | 2 + 3 files changed, 104 insertions(+) create mode 100644 pkgs/development/python-modules/manim-slides/default.nix diff --git a/pkgs/development/python-modules/manim-slides/default.nix b/pkgs/development/python-modules/manim-slides/default.nix new file mode 100644 index 0000000000000..ec1811d707d7f --- /dev/null +++ b/pkgs/development/python-modules/manim-slides/default.nix @@ -0,0 +1,96 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pythonOlder + +, manim +, ffmpeg + +, av +, click +, click-default-group +, jinja2 +, lxml +, numpy +, opencv4 +, pillow +, pydantic +, pydantic-extra-types +, python-pptx +, qtpy +, requests +, rich +, rtoml +, tqdm +, pyqt6 + + # Optional dependencies +, ipython + + # Hooks +, pdm-backend +, pythonRelaxDepsHook + + # As Module or application? +, withGui ? false +}: +buildPythonPackage rec { + pname = "manim-slides"; + format = "pyproject"; + version = "5.1.3"; + + disabled = pythonOlder "3.9"; + + src = fetchFromGitHub { + owner = "jeertmans"; + repo = "manim-slides"; + rev = "refs/tags/v${version}"; + hash = "sha256-WZR95swapT2Fbu6mbuHLjMu3Okq/wKFabzN7xpZw0/g="; + }; + + nativeBuildInputs = [ pdm-backend pythonRelaxDepsHook ]; + + pythonRemoveDeps = [ "opencv-python" ]; + + pythonRelaxDeps = [ "rtoml" "qtpy" ]; + + propagatedBuildInputs = [ + av + click + click-default-group + jinja2 + lxml + numpy + opencv4 + pillow + pydantic + pydantic-extra-types + python-pptx + qtpy + requests + rich + rtoml + tqdm + + # avconv is a potential alternative + ffmpeg + # This could also be manimgl, but that is not (yet) packaged + manim + ] + ++ lib.lists.optional (!withGui) + ipython + ++ lib.lists.optional withGui + # dependency of qtpy (could also be pyqt5) + pyqt6; + + pythonImportsCheck = [ "manim_slides" ]; + + meta = with lib; { + changelog = "https://github.com/jeertmans/manim-slides/blob/${src.rev}/CHANGELOG.md"; + description = "Tool for live presentations using manim"; + homepage = "https://github.com/jeertmans/manim-slides"; + license = licenses.mit; + mainProgram = "manim-slides"; + maintainers = with maintainers; [ soispha ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 46cb413f7c584..ccf92b19c6e31 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -31597,6 +31597,12 @@ with pkgs; manim = callPackage ../applications/video/manim { }; + manim-slides = python3Packages.toPythonApplication ( + python3Packages.manim-slides.override { + withGui = true; + } + ); + manuskript = libsForQt5.callPackage ../applications/editors/manuskript { }; mindforger = libsForQt5.callPackage ../applications/editors/mindforger { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 7bdc4b6a42a17..b147b5b720d87 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6997,6 +6997,8 @@ self: super: with self; { inherit (pkgs.darwin.apple_sdk.frameworks) AppKit; }; + manim-slides = callPackage ../development/python-modules/manim-slides { }; + manifest-ml = callPackage ../development/python-modules/manifest-ml { }; manifestoo = callPackage ../development/python-modules/manifestoo { }; From 7a3ed2fe5351a01296b6369054e6856d3ac9aa8f Mon Sep 17 00:00:00 2001 From: Soispha Date: Sat, 23 Mar 2024 11:43:57 +0100 Subject: [PATCH 2/2] manim: relax dependencies and ignore resulting failures in tests This change should only be temporary, as a pull request has already been merged upstream that relaxes the dependencies [1]. Thus, we just have to wait for a release containing this pr. [1]: https://github.com/ManimCommunity/manim/pull/3376 Co-authored-by: dylan madisetti --- pkgs/applications/video/manim/default.nix | 2 ++ pkgs/applications/video/manim/failing_tests.nix | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/pkgs/applications/video/manim/default.nix b/pkgs/applications/video/manim/default.nix index 2768dadad8265..423f8cf8eb9cb 100644 --- a/pkgs/applications/video/manim/default.nix +++ b/pkgs/applications/video/manim/default.nix @@ -64,8 +64,10 @@ in python.pkgs.buildPythonApplication rec { pythonRelaxDeps = [ "cloup" + "isosurfaces" "pillow" "skia-pathops" + "watchdog" ]; patches = [ diff --git a/pkgs/applications/video/manim/failing_tests.nix b/pkgs/applications/video/manim/failing_tests.nix index 1bffaf6e74052..ac788c25be20c 100644 --- a/pkgs/applications/video/manim/failing_tests.nix +++ b/pkgs/applications/video/manim/failing_tests.nix @@ -64,6 +64,21 @@ "test_PointCloudDot" "test_Torus" + # test_ImplicitFunction[/test_implicit_graph] failing with: + # E AssertionError: + # E Not equal to tolerance rtol=1e-07, atol=1.01 + # E Frame no -1. You can use --show_diff to visually show the difference. + # E Mismatched elements: 1185[/633] / 1639680[/1639680] (0.0723[/0.0386]%) + # E Max absolute difference: 125[/121] + # E Max relative difference: 6.5[/1] + # + # These started failing after relaxing the “watchdog” and “isosurfaces” dependencies, + # likely due to a tolerance difference. They should, however, start working again when [1] is + # included in a Manim release. + # [1]: https://github.com/ManimCommunity/manim/pull/3376 + "test_ImplicitFunction" + "test_implicit_graph" + # failing with: # TypeError: __init__() got an unexpected keyword argument 'msg' - maybe you meant pytest.mark.skipif? "test_force_window_opengl_render_with_movies"