nixpkgs/pkgs/development/python-modules/cchardet/default.nix
Theodore Ni cd726c9a91
python311Packages.cchardet: fix for python 3.11
The .cpp file released with this package to PyPI was built using an
older version of Cython that is incompatible with Python 3.11. This
package is not actively maintained, so it's unclear when the fix for
this will be merged and released.

In the meantime, we can include a newer version of Cython locally,
which will be used instead to regenerate the .cpp file.
2022-11-27 02:03:50 -08:00

57 lines
1.4 KiB
Nix

{ lib
, stdenv
, buildPythonPackage
, fetchPypi
, cython
, nose
}:
buildPythonPackage rec {
pname = "cchardet";
version = "2.1.7";
format = "setuptools";
src = fetchPypi {
inherit pname version;
sha256 = "c428b6336545053c2589f6caf24ea32276c6664cb86db817e03a94c60afa0eaf";
};
nativeBuildInputs = [
cython # pending https://github.com/PyYoshi/cChardet/pull/78 being released to PyPI
];
pythonImportsCheck = [
"cchardet"
];
checkInputs = [ nose ];
# on non x86-64 some charsets are identified as their superset, so we skip these tests (last checked with version 2.1.7)
preCheck = ''
cp -R src/tests $TMPDIR
pushd $TMPDIR
'' + lib.optionalString (stdenv.hostPlatform.system != "x86_64-linux") ''
rm $TMPDIR/tests/testdata/th/tis-620.txt # identified as iso-8859-11, which is fine for all practical purposes
rm $TMPDIR/tests/testdata/ga/iso-8859-1.txt # identified as windows-1252, which is fine for all practical purposes
rm $TMPDIR/tests/testdata/fi/iso-8859-1.txt # identified as windows-1252, which is fine for all practical purposes
'';
checkPhase = ''
runHook preCheck
nosetests
runHook postCheck
'';
postCheck = ''
popd
'';
meta = {
description = "High-speed universal character encoding detector";
homepage = "https://github.com/PyYoshi/cChardet";
license = lib.licenses.mpl11;
maintainers = with lib.maintainers; [ ivan ];
};
}