Merge pull request #120479 from friedelino/add-manim-com
manim: remove old manim(lib) package and init at 0.15.2
This commit is contained in:
commit
461c077f0e
@ -1,64 +1,134 @@
|
||||
{ lib, buildPythonApplication, fetchFromGitHub, pythonOlder, file, fetchpatch
|
||||
, cairo, ffmpeg, sox, xdg-utils, texlive
|
||||
, colour, numpy, pillow, progressbar, scipy, tqdm, opencv , pycairo, pydub
|
||||
, pbr, fetchPypi
|
||||
}:
|
||||
buildPythonApplication rec {
|
||||
pname = "manim";
|
||||
version = "0.1.10";
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
|
||||
src = fetchPypi {
|
||||
pname = "manimlib";
|
||||
inherit version;
|
||||
sha256 = "0vg9b3rwypq5zir74pi0pmj47yqlcg7hrvscwrpjzjbqq2yihn49";
|
||||
, cairo
|
||||
, ffmpeg
|
||||
, texlive
|
||||
|
||||
, python3
|
||||
}:
|
||||
|
||||
let
|
||||
# According to ManimCommunity documentation manim uses tex-packages packaged
|
||||
# in a custom distribution called "manim-latex",
|
||||
#
|
||||
# https://community.chocolatey.org/packages/manim-latex#files
|
||||
#
|
||||
# which includes another cutom distribution called tinytex, for which the
|
||||
# package list can be found at
|
||||
#
|
||||
# https://github.com/yihui/tinytex/blob/master/tools/pkgs-custom.txt
|
||||
#
|
||||
# these two combined add up to:
|
||||
manim-tinytex = {
|
||||
inherit (texlive)
|
||||
|
||||
# tinytex
|
||||
scheme-infraonly amsfonts amsmath atbegshi atveryend auxhook babel bibtex
|
||||
bigintcalc bitset booktabs cm dehyph dvipdfmx dvips ec epstopdf-pkg etex
|
||||
etexcmds etoolbox euenc everyshi fancyvrb filehook firstaid float fontspec
|
||||
framed geometry gettitlestring glyphlist graphics graphics-cfg graphics-def
|
||||
grffile helvetic hycolor hyperref hyph-utf8 iftex inconsolata infwarerr
|
||||
intcalc knuth-lib kvdefinekeys kvoptions kvsetkeys l3backend l3kernel
|
||||
l3packages latex latex-amsmath-dev latex-bin latex-fonts latex-tools-dev
|
||||
latexconfig latexmk letltxmacro lm lm-math ltxcmds lua-alt-getopt luahbtex
|
||||
lualatex-math lualibs luaotfload luatex mdwtools metafont mfware natbib
|
||||
pdfescape pdftex pdftexcmds plain psnfss refcount rerunfilecheck stringenc
|
||||
tex tex-ini-files times tipa tools unicode-data unicode-math uniquecounter
|
||||
url xcolor xetex xetexconfig xkeyval xunicode zapfding
|
||||
|
||||
# manim-latex
|
||||
standalone everysel preview doublestroke ms setspace rsfs relsize ragged2e
|
||||
fundus-calligra microtype wasysym physics dvisvgm jknapltx wasy cm-super
|
||||
babel-english gnu-freefont mathastext cbfonts-fd;
|
||||
};
|
||||
in python3.pkgs.buildPythonApplication rec {
|
||||
pname = "manim";
|
||||
format = "pyproject";
|
||||
version = "0.15.2";
|
||||
disabled = python3.pythonOlder "3.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ManimCommunity";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "l5JiFWCMQbGnwRRtYzCHBXdVzWBrTNPdcIYaAt/wRNA=";
|
||||
};
|
||||
|
||||
patches = [ ./remove-dependency-constraints.patch ];
|
||||
|
||||
nativeBuildInputs = [ pbr ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
colour
|
||||
numpy
|
||||
pillow
|
||||
progressbar
|
||||
scipy
|
||||
tqdm
|
||||
opencv
|
||||
pycairo
|
||||
pydub
|
||||
|
||||
cairo sox ffmpeg xdg-utils
|
||||
nativeBuildInputs = [
|
||||
python3.pkgs.poetry-core
|
||||
];
|
||||
|
||||
# Test with texlive to see whether it works but don't propagate
|
||||
# because it's huge and optional
|
||||
# TODO: Use smaller TexLive distribution
|
||||
# Doesn't need everything but it's hard to figure out what it needs
|
||||
checkInputs = [ cairo sox ffmpeg xdg-utils texlive.combined.scheme-full ];
|
||||
|
||||
# Simple test and complex test with LaTeX
|
||||
checkPhase = ''
|
||||
for scene in SquareToCircle OpeningManimExample
|
||||
do
|
||||
python3 manim.py example_scenes.py $scene -l
|
||||
tail -n 20 files/Tex/*.log # Print potential LaTeX erorrs
|
||||
${file}/bin/file videos/example_scenes/480p15/$scene.mp4 \
|
||||
| tee | grep -F "ISO Media, MP4 Base Media v1 [ISO 14496-12:2003]"
|
||||
done
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace 'cloup = "^0.13.0"' 'cloup = "*"' \
|
||||
--replace 'mapbox-earcut = "^0.12.10"' 'mapbox-earcut = "*"' \
|
||||
'';
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
buildInputs = [ cairo ];
|
||||
|
||||
meta = {
|
||||
description = "Animation engine for explanatory math videos";
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
click
|
||||
click-default-group
|
||||
cloup
|
||||
colour
|
||||
grpcio
|
||||
grpcio-tools
|
||||
importlib-metadata
|
||||
isosurfaces
|
||||
jupyterlab
|
||||
manimpango
|
||||
mapbox-earcut
|
||||
moderngl
|
||||
moderngl-window
|
||||
networkx
|
||||
numpy
|
||||
pillow
|
||||
pycairo
|
||||
pydub
|
||||
pygments
|
||||
pysrt
|
||||
rich
|
||||
scipy
|
||||
screeninfo
|
||||
skia-pathops
|
||||
srt
|
||||
tqdm
|
||||
watchdog
|
||||
];
|
||||
|
||||
makeWrapperArgs = [
|
||||
"--prefix" "PATH" ":" (lib.makeBinPath [
|
||||
ffmpeg
|
||||
(texlive.combine manim-tinytex)
|
||||
])
|
||||
];
|
||||
|
||||
|
||||
checkInputs = [
|
||||
python3.pkgs.pytest-cov
|
||||
python3.pkgs.pytest-xdist
|
||||
python3.pkgs.pytestCheckHook
|
||||
|
||||
ffmpeg
|
||||
(texlive.combine manim-tinytex)
|
||||
];
|
||||
|
||||
# about 55 of ~600 tests failing mostly due to demand for display
|
||||
disabledTests = import ./failing_tests.nix;
|
||||
|
||||
pythonImportsCheck = [ "manim" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Animation engine for explanatory math videos - Community version";
|
||||
longDescription = ''
|
||||
Manim is an animation engine for explanatory math videos. It's used to
|
||||
create precise animations programmatically, as seen in the videos of
|
||||
3Blue1Brown on YouTube.
|
||||
3Blue1Brown on YouTube. This is the community maintained version of
|
||||
manim.
|
||||
'';
|
||||
homepage = "https://github.com/3b1b/manim";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ johnazoidberg ];
|
||||
homepage = "https://github.com/ManimCommunity/manim";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ friedelino ];
|
||||
};
|
||||
}
|
||||
|
74
pkgs/applications/video/manim/failing_tests.nix
Normal file
74
pkgs/applications/video/manim/failing_tests.nix
Normal file
@ -0,0 +1,74 @@
|
||||
# reason for failure: tests try to open display
|
||||
[
|
||||
"test_background_color"
|
||||
"test_scene_add_remove"
|
||||
"test_Circle"
|
||||
"test_wait_skip"
|
||||
"test_basic_scene_with_default_values"
|
||||
"test_dry_run_with_png_format"
|
||||
"test_dry_run_with_png_format_skipped_animations"
|
||||
"test_FixedMobjects3D"
|
||||
"test_basic_scene_l_flag"
|
||||
"test_n_flag"
|
||||
"test_s_flag_opengl_renderer"
|
||||
"test_s_flag_no_animations"
|
||||
"test_image_output_for_static_scene"
|
||||
"test_no_image_output_with_interactive_embed"
|
||||
"test_no_default_image_output_with_non_static_scene"
|
||||
"test_image_output_for_static_scene_with_write_to_movie"
|
||||
"test_s_flag"
|
||||
"test_r_flag"
|
||||
"test_play_skip"
|
||||
"test_write_to_movie_disables_window"
|
||||
"test_a_flag"
|
||||
"test_pixel_coords_to_space_coords"
|
||||
"test_t_values"
|
||||
"test_custom_folders"
|
||||
"test_t_values[15]"
|
||||
"test_t_values[30]"
|
||||
"test_t_values[60]"
|
||||
"test_dash_as_filename"
|
||||
"test_images_are_created_when_png_format_set_for_opengl"
|
||||
"test_t_values_with_skip_animations"
|
||||
"test_static_wait_detection"
|
||||
"test_non_static_wait_detection"
|
||||
"test_frozen_frame"
|
||||
"test_gif_format_output"
|
||||
"test_animate_with_changed_custom_attribute"
|
||||
"test_images_are_zero_padded_when_zero_pad_set_for_opengl"
|
||||
"test_mp4_format_output"
|
||||
"test_videos_not_created_when_png_format_set"
|
||||
"test_images_are_created_when_png_format_set"
|
||||
"test_images_are_zero_padded_when_zero_pad_set"
|
||||
"test_webm_format_output"
|
||||
"test_default_format_output_for_transparent_flag"
|
||||
"test_mov_can_be_set_as_output_format"
|
||||
"test_force_window_opengl_render_with_format"
|
||||
"test_get_frame_with_preview_disabled"
|
||||
"test_get_frame_with_preview_enabled"
|
||||
] ++
|
||||
|
||||
# reason for failure: tests try to reach network
|
||||
[
|
||||
"test_logging_to_file"
|
||||
"test_plugin_function_like"
|
||||
"test_plugin_no_all"
|
||||
"test_plugin_with_all"
|
||||
] ++
|
||||
|
||||
# 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: 18525 / 1639680 (1.13%)
|
||||
# E Max absolute difference: 255
|
||||
# E Max relative difference: 255.
|
||||
[
|
||||
"test_Text2Color"
|
||||
] ++
|
||||
|
||||
# failing with:
|
||||
# TypeError: __init__() got an unexpected keyword argument 'msg' - maybe you meant pytest.mark.skipif?
|
||||
[
|
||||
"test_force_window_opengl_render_with_movies"
|
||||
]
|
@ -1,26 +0,0 @@
|
||||
diff --git i/requirements.txt w/requirements.txt
|
||||
index 556122ad..11fd49d5 100644
|
||||
--- i/requirements.txt
|
||||
+++ w/requirements.txt
|
||||
@@ -1,11 +1,10 @@
|
||||
-argparse==1.4.0
|
||||
-colour==0.1.5
|
||||
-numpy==1.15.0
|
||||
-Pillow==5.2.0
|
||||
-progressbar==2.5
|
||||
-scipy==1.1.0
|
||||
-tqdm==4.24.0
|
||||
-opencv-python==3.4.2.17
|
||||
-pycairo==1.17.1; sys_platform == 'linux'
|
||||
-pycairo>=1.18.0; sys_platform == 'win32'
|
||||
-pydub==0.23.0
|
||||
+colour
|
||||
+numpy
|
||||
+Pillow
|
||||
+progressbar
|
||||
+scipy
|
||||
+tqdm
|
||||
+pycairo
|
||||
+pycairo>=1.18.1; sys_platform == 'win32'
|
||||
+pydub
|
||||
+pyreadline==2.1; sys_platform == 'win32'
|
44
pkgs/development/python-modules/cloup/default.nix
Normal file
44
pkgs/development/python-modules/cloup/default.nix
Normal file
@ -0,0 +1,44 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, pytestCheckHook
|
||||
, click
|
||||
, setuptools-scm
|
||||
, pythonOlder
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "cloup";
|
||||
version = "0.14.0";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "4dec7e43905b7771884cda4f13ab8b7537bceaee467a92655e7660797ab08c47";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
click
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "cloup" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/janLuke/cloup";
|
||||
description = "Click extended with option groups, constraints, aliases, help themes";
|
||||
longDescription = ''
|
||||
Enriches Click with option groups, constraints, command aliases, help sections for subcommands, themes for --help and other stuff.
|
||||
'';
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ friedelino ];
|
||||
};
|
||||
}
|
36
pkgs/development/python-modules/isosurfaces/default.nix
Normal file
36
pkgs/development/python-modules/isosurfaces/default.nix
Normal file
@ -0,0 +1,36 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, numpy
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "isosurfaces";
|
||||
version = "0.1.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "fa1b44e5e59d2f429add49289ab89e36f8dcda49b7badd99e0beea273be331f4";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ numpy ];
|
||||
|
||||
# no tests defined upstream
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "isosurfaces" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/jared-hughes/isosurfaces";
|
||||
description = "Construct isolines/isosurfaces of a 2D/3D scalar field defined by a function";
|
||||
longDescription = ''
|
||||
Construct isolines/isosurfaces of a 2D/3D scalar field defined by a
|
||||
function, i.e. curves over which f(x,y)=0 or surfaces over which
|
||||
f(x,y,z)=0. Most similar libraries use marching squares or similar over a
|
||||
uniform grid, but this uses a quadtree to avoid wasting time sampling
|
||||
many far from the implicit surface.
|
||||
'';
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ friedelino ];
|
||||
};
|
||||
}
|
41
pkgs/development/python-modules/mapbox-earcut/default.nix
Normal file
41
pkgs/development/python-modules/mapbox-earcut/default.nix
Normal file
@ -0,0 +1,41 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, fetchFromGitHub
|
||||
, numpy
|
||||
, pybind11
|
||||
, pytestCheckHook
|
||||
, setuptools
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "mapbox-earcut";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "skogler";
|
||||
repo = "mapbox_earcut_python";
|
||||
rev = "v${version}";
|
||||
sha256 = "m4q2qTL55fkdi3hm75C3/XV9SUQkpJS+B5SEgpPEctk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ setuptools pybind11 ];
|
||||
|
||||
propagatedBuildInputs = [ numpy ];
|
||||
|
||||
checkInputs = [ pytestCheckHook ];
|
||||
|
||||
pythonImportsCheck = [ "mapbox_earcut" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/skogler/mapbox_earcut_python";
|
||||
license = licenses.isc;
|
||||
description = "Mapbox-earcut fast triangulation of 2D-polygons";
|
||||
longDescription = ''
|
||||
Python bindings for the C++ implementation of the Mapbox Earcut
|
||||
library, which provides very fast and quite robust triangulation of 2D
|
||||
polygons.
|
||||
'';
|
||||
maintainers = with maintainers; [ friedelino ];
|
||||
};
|
||||
}
|
33
pkgs/development/python-modules/srt/default.nix
Normal file
33
pkgs/development/python-modules/srt/default.nix
Normal file
@ -0,0 +1,33 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, hypothesis
|
||||
, pytestCheckHook
|
||||
, pythonOlder
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "srt";
|
||||
version = "3.5.2";
|
||||
|
||||
disabled = pythonOlder "2.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "7aa4ad5ce4126d3f53b3e7bc4edaa86653d0378bf1c0b1ab8c59f5ab41384450";
|
||||
};
|
||||
|
||||
checkInputs = [
|
||||
hypothesis
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "srt" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/cdown/srt";
|
||||
description = "A tiny but featureful Python library for parsing, modifying, and composing SRT files";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ friedelino ];
|
||||
};
|
||||
}
|
@ -26807,9 +26807,7 @@ with pkgs;
|
||||
|
||||
m32edit = callPackage ../applications/audio/midas/m32edit.nix {};
|
||||
|
||||
manim = python3Packages.callPackage ../applications/video/manim {
|
||||
opencv = python3Packages.opencv3;
|
||||
};
|
||||
manim = callPackage ../applications/video/manim { };
|
||||
|
||||
manuskript = libsForQt5.callPackage ../applications/editors/manuskript { };
|
||||
|
||||
|
@ -1763,6 +1763,8 @@ in {
|
||||
|
||||
cloudsplaining = callPackage ../development/python-modules/cloudsplaining { };
|
||||
|
||||
cloup = callPackage ../development/python-modules/cloup { };
|
||||
|
||||
clustershell = callPackage ../development/python-modules/clustershell { };
|
||||
|
||||
clvm = callPackage ../development/python-modules/clvm { };
|
||||
@ -4343,6 +4345,8 @@ in {
|
||||
|
||||
isort = callPackage ../development/python-modules/isort { };
|
||||
|
||||
isosurfaces = callPackage ../development/python-modules/isosurfaces { };
|
||||
|
||||
isounidecode = callPackage ../development/python-modules/isounidecode { };
|
||||
|
||||
isoweek = callPackage ../development/python-modules/isoweek { };
|
||||
@ -5166,6 +5170,8 @@ in {
|
||||
|
||||
mapbox = callPackage ../development/python-modules/mapbox { };
|
||||
|
||||
mapbox-earcut = callPackage ../development/python-modules/mapbox-earcut { };
|
||||
|
||||
mariadb = callPackage ../development/python-modules/mariadb { };
|
||||
|
||||
marisa-trie = callPackage ../development/python-modules/marisa-trie { };
|
||||
@ -9969,6 +9975,8 @@ in {
|
||||
|
||||
srsly = callPackage ../development/python-modules/srsly { };
|
||||
|
||||
srt = callPackage ../development/python-modules/srt { };
|
||||
|
||||
srvlookup = callPackage ../development/python-modules/srvlookup { };
|
||||
|
||||
ssdeep = callPackage ../development/python-modules/ssdeep {
|
||||
|
Loading…
Reference in New Issue
Block a user