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
|
{ lib
|
||||||
, cairo, ffmpeg, sox, xdg-utils, texlive
|
, fetchFromGitHub
|
||||||
, colour, numpy, pillow, progressbar, scipy, tqdm, opencv , pycairo, pydub
|
|
||||||
, pbr, fetchPypi
|
|
||||||
}:
|
|
||||||
buildPythonApplication rec {
|
|
||||||
pname = "manim";
|
|
||||||
version = "0.1.10";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
, cairo
|
||||||
pname = "manimlib";
|
, ffmpeg
|
||||||
inherit version;
|
, texlive
|
||||||
sha256 = "0vg9b3rwypq5zir74pi0pmj47yqlcg7hrvscwrpjzjbqq2yihn49";
|
|
||||||
|
, 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 = [
|
||||||
|
python3.pkgs.poetry-core
|
||||||
nativeBuildInputs = [ pbr ];
|
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
colour
|
|
||||||
numpy
|
|
||||||
pillow
|
|
||||||
progressbar
|
|
||||||
scipy
|
|
||||||
tqdm
|
|
||||||
opencv
|
|
||||||
pycairo
|
|
||||||
pydub
|
|
||||||
|
|
||||||
cairo sox ffmpeg xdg-utils
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Test with texlive to see whether it works but don't propagate
|
postPatch = ''
|
||||||
# because it's huge and optional
|
substituteInPlace pyproject.toml \
|
||||||
# TODO: Use smaller TexLive distribution
|
--replace 'cloup = "^0.13.0"' 'cloup = "*"' \
|
||||||
# Doesn't need everything but it's hard to figure out what it needs
|
--replace 'mapbox-earcut = "^0.12.10"' 'mapbox-earcut = "*"' \
|
||||||
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
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
disabled = pythonOlder "3.7";
|
buildInputs = [ cairo ];
|
||||||
|
|
||||||
meta = {
|
propagatedBuildInputs = with python3.pkgs; [
|
||||||
description = "Animation engine for explanatory math videos";
|
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 = ''
|
longDescription = ''
|
||||||
Manim is an animation engine for explanatory math videos. It's used to
|
Manim is an animation engine for explanatory math videos. It's used to
|
||||||
create precise animations programmatically, as seen in the videos of
|
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";
|
homepage = "https://github.com/ManimCommunity/manim";
|
||||||
license = lib.licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with lib.maintainers; [ johnazoidberg ];
|
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 {};
|
m32edit = callPackage ../applications/audio/midas/m32edit.nix {};
|
||||||
|
|
||||||
manim = python3Packages.callPackage ../applications/video/manim {
|
manim = callPackage ../applications/video/manim { };
|
||||||
opencv = python3Packages.opencv3;
|
|
||||||
};
|
|
||||||
|
|
||||||
manuskript = libsForQt5.callPackage ../applications/editors/manuskript { };
|
manuskript = libsForQt5.callPackage ../applications/editors/manuskript { };
|
||||||
|
|
||||||
|
@ -1763,6 +1763,8 @@ in {
|
|||||||
|
|
||||||
cloudsplaining = callPackage ../development/python-modules/cloudsplaining { };
|
cloudsplaining = callPackage ../development/python-modules/cloudsplaining { };
|
||||||
|
|
||||||
|
cloup = callPackage ../development/python-modules/cloup { };
|
||||||
|
|
||||||
clustershell = callPackage ../development/python-modules/clustershell { };
|
clustershell = callPackage ../development/python-modules/clustershell { };
|
||||||
|
|
||||||
clvm = callPackage ../development/python-modules/clvm { };
|
clvm = callPackage ../development/python-modules/clvm { };
|
||||||
@ -4343,6 +4345,8 @@ in {
|
|||||||
|
|
||||||
isort = callPackage ../development/python-modules/isort { };
|
isort = callPackage ../development/python-modules/isort { };
|
||||||
|
|
||||||
|
isosurfaces = callPackage ../development/python-modules/isosurfaces { };
|
||||||
|
|
||||||
isounidecode = callPackage ../development/python-modules/isounidecode { };
|
isounidecode = callPackage ../development/python-modules/isounidecode { };
|
||||||
|
|
||||||
isoweek = callPackage ../development/python-modules/isoweek { };
|
isoweek = callPackage ../development/python-modules/isoweek { };
|
||||||
@ -5166,6 +5170,8 @@ in {
|
|||||||
|
|
||||||
mapbox = callPackage ../development/python-modules/mapbox { };
|
mapbox = callPackage ../development/python-modules/mapbox { };
|
||||||
|
|
||||||
|
mapbox-earcut = callPackage ../development/python-modules/mapbox-earcut { };
|
||||||
|
|
||||||
mariadb = callPackage ../development/python-modules/mariadb { };
|
mariadb = callPackage ../development/python-modules/mariadb { };
|
||||||
|
|
||||||
marisa-trie = callPackage ../development/python-modules/marisa-trie { };
|
marisa-trie = callPackage ../development/python-modules/marisa-trie { };
|
||||||
@ -9969,6 +9975,8 @@ in {
|
|||||||
|
|
||||||
srsly = callPackage ../development/python-modules/srsly { };
|
srsly = callPackage ../development/python-modules/srsly { };
|
||||||
|
|
||||||
|
srt = callPackage ../development/python-modules/srt { };
|
||||||
|
|
||||||
srvlookup = callPackage ../development/python-modules/srvlookup { };
|
srvlookup = callPackage ../development/python-modules/srvlookup { };
|
||||||
|
|
||||||
ssdeep = callPackage ../development/python-modules/ssdeep {
|
ssdeep = callPackage ../development/python-modules/ssdeep {
|
||||||
|
Loading…
Reference in New Issue
Block a user