Skip to content

Commit

Permalink
python312Packages.kaleido: init at 0.2.1 (NixOS#339136)
Browse files Browse the repository at this point in the history
  • Loading branch information
natsukium authored Sep 5, 2024
2 parents 8ec8fd5 + 7edc3b6 commit 41120cb
Show file tree
Hide file tree
Showing 5 changed files with 148 additions and 1 deletion.
117 changes: 117 additions & 0 deletions pkgs/development/python-modules/kaleido/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
{
lib,
stdenv,
python,
buildPythonPackage,
callPackage,
fetchurl,
autoPatchelfHook,
bash,
dejavu_fonts,
expat,
fontconfig,
lato,
libGL,
makeWrapper,
nspr,
nss,
sbclPackages,
sqlite,
}:

buildPythonPackage rec {
pname = "kaleido";
version = "0.2.1";
format = "wheel";

src =
{
# This library is so cursed that I have to use fetchurl instead of fetchPypi. I am not happy.
x86_64-linux = fetchurl {
url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-manylinux1_x86_64.whl";
hash = "sha256-qiHPG/HHj4+lCp99ReEAPDh709b+CnZ8+780S5W9w6g=";
};
aarch64-linux = fetchurl {
url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-manylinux2014_aarch64.whl";
hash = "sha256-hFgZhEyAgslGnZwX5CYh+/hcKyN++KhuyKhSf5i2USo=";
};
x86_64-darwin = fetchurl {
url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-macosx_10_11_x86_64.whl";
hash = "sha256-ym9z5/8AquvyhD9z8dO6zeGTDvUEEJP+drg6FXhQSac=";
};
aarch64-darwin = fetchurl {
url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-macosx_11_0_arm64.whl";
hash = "sha256-u5pdH3EDV9XUMu4kDvZlim0STD5hCTWBe0tC2px4fAU=";
};
}
."${stdenv.hostPlatform.system}"
or (throw "Unsupported system for ${pname}: ${stdenv.hostPlatform.system}");

nativeBuildInputs = (lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]) ++ [
makeWrapper
];
buildInputs = [
bash
dejavu_fonts
expat
fontconfig
lato
libGL
nspr
nss
sbclPackages.cl-dejavu
sqlite
];

pythonImportsCheck = [ "kaleido" ];

postInstall = ''
# Expose kaleido binary
mkdir -p $out/bin
ln -s $out/${python.sitePackages}/kaleido/executable/bin/kaleido $out/bin/kaleido
# Replace bundled swiftshader with libGL
rm -rf $out/${python.sitePackages}/kaleido/executable/bin/swiftshader
ln -s ${libGL}/lib $out/${python.sitePackages}/kaleido/executable/bin/swiftshader
# Relace bundled libraries with nixpkgs-packaged libraries
rm -rf $out/${python.sitePackages}/kaleido/executable/lib
mkdir -p $out/${python.sitePackages}/kaleido/executable/lib
ln -s ${expat}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/
ln -s ${nspr}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/
ln -s ${nss}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/
ln -s ${sqlite}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/
# Replace bundled font configuration with nixpkgs-packaged font configuration
rm -rf $out/${python.sitePackages}/kaleido/executable/etc/fonts
mkdir -p $out/${python.sitePackages}/kaleido/executable/etc/fonts/conf.d
ln -s ${fontconfig}/etc/fonts/fonts.conf $out/${python.sitePackages}/kaleido/executable/etc/fonts/
ls -s ${fontconfig}/etc/fonts/conf.d/* $out/${python.sitePackages}/kaleido/executable/etc/fonts/conf.d/
ln -s ${sbclPackages.cl-dejavu}/dejavu-fonts-ttf-2.37/fontconfig/* $out/${python.sitePackages}/kaleido/executable/etc/fonts/conf.d/
# Replace bundled fonts with nixpkgs-packaged fonts
# Currently this causes an issue where the fonts aren't found. I'm not sure why, so I'm leaving this commented out for now.
#rm -rf $out/${python.sitePackages}/kaleido/executable/xdg/fonts
#mkdir -p $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/dejavu $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/lato
#ln -s ${dejavu_fonts}/share/fonts/truetype/* $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/dejavu/
#ln -s ${lato}/share/fonts/lato/* $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/lato/
'';

passthru.tests.kaleido = callPackage ./tests.nix { };

meta = {
description = "Fast static image export for web-based visualization libraries with zero dependencies";
homepage = "https://github.com/plotly/Kaleido";
changelog = "https://github.com/plotly/Kaleido/releases";
platforms = [
"x86_64-linux"
"x86_64-darwin"
"aarch64-linux"
"aarch64-darwin"
];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; # Trust me, I'm not happy. But after literal hours of trying to reverse-engineer their build system and getting nowhere, I'll use the stupid binaries >:(
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pandapip1 ];
broken = stdenv.isDarwin; # Tests fail on darwin for some reason
};
}
15 changes: 15 additions & 0 deletions pkgs/development/python-modules/kaleido/tests.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
runCommand,
python,
plotly,
pandas,
kaleido,
}:

runCommand "${kaleido.pname}-tests" {
nativeBuildInputs = [
python
plotly
pandas
];
} "python3 ${./tests.py}"
11 changes: 11 additions & 0 deletions pkgs/development/python-modules/kaleido/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import plotly.express as px
import os
import os.path

out = os.environ["out"]
if not os.path.exists(out):
os.makedirs(out)

outfile = os.path.join(out, "figure.png")
fig = px.scatter(px.data.iris(), x="sepal_length", y="sepal_width", color="species")
fig.write_image(outfile, engine="kaleido")
4 changes: 3 additions & 1 deletion pkgs/development/python-modules/plotly/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
setuptools,
packaging,
tenacity,
kaleido,
}:

buildPythonPackage rec {
Expand All @@ -29,6 +30,7 @@ buildPythonPackage rec {
dependencies = [
packaging
tenacity
kaleido
];

pythonImportsCheck = [ "plotly" ];
Expand All @@ -41,6 +43,6 @@ buildPythonPackage rec {
downloadPage = "https://github.com/plotly/plotly.py";
homepage = "https://plot.ly/python/";
license = with licenses; [ mit ];
maintainers = [ ];
maintainers = with maintainers; [ pandapip1 ];
};
}
2 changes: 2 additions & 0 deletions pkgs/top-level/python-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6616,6 +6616,8 @@ self: super: with self; {

kaldi-active-grammar = callPackage ../development/python-modules/kaldi-active-grammar { };

kaleido = callPackage ../development/python-modules/kaleido { };

kanidm = callPackage ../development/python-modules/kanidm { };

kaptan = callPackage ../development/python-modules/kaptan { };
Expand Down

0 comments on commit 41120cb

Please sign in to comment.