python3Packages.dedupe: init at 3.0.3 (#453792)

This commit is contained in:
Sandro
2025-10-28 15:03:25 +00:00
committed by GitHub
11 changed files with 626 additions and 0 deletions
@@ -0,0 +1,50 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
cython,
setuptools,
# tests
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "affinegap";
version = "1.12";
pyproject = true;
src = fetchFromGitHub {
owner = "dedupeio";
repo = "affinegap";
tag = "v${version}";
hash = "sha256-9eX41eoME5Vdtq+c04eQbMYnViy6QKOhKkafrkeMylI=";
};
build-system = [
cython
setuptools
];
nativeCheckInputs = [
pytestCheckHook
];
# Prevent importing from source during test collection (only $out has compiled extensions)
preCheck = ''
rm -rf affinegap
'';
pythonImportsCheck = [
"affinegap"
];
meta = {
description = "Cython implementation of the affine gap string distance";
homepage = "https://github.com/dedupeio/affinegap";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ daniel-fahey ];
};
}
@@ -0,0 +1,53 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
unstableGitUpdater,
# build-system
setuptools,
# dependencies
numpy,
# tests
pytestCheckHook,
}:
buildPythonPackage {
pname = "categorical-distance";
version = "1.9-unstable-2020-03-31";
pyproject = true;
src = fetchFromGitHub {
owner = "dedupeio";
repo = "categorical-distance";
rev = "07d079fd412ccf06cdb200b3cd2cfa4b67f78722";
hash = "sha256-zSjSrlFiRus/T2XZdakLQpF1u/LV0VNWwrc8lhss6kU=";
};
build-system = [
setuptools
];
dependencies = [
numpy
];
nativeCheckInputs = [
pytestCheckHook
];
pythonImportsCheck = [
"categorical"
];
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Compare similarity of categorical variables using Jaccard index";
homepage = "https://github.com/dedupeio/categorical-distance";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ daniel-fahey ];
};
}
@@ -0,0 +1,45 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
# tests
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "dedupe-levenshtein-search";
version = "1.4.5";
pyproject = true;
# NOTE: This is a fork of mattandahalfew/Levenshtein_search created for MIT licensing.
# TODO: Evaluate if upstream version could be used instead.
src = fetchFromGitHub {
owner = "dedupeio";
repo = "Levenshtein_search";
tag = "v${version}";
hash = "sha256-YhsZA28H4OUkQEBtJ+9OXJld4Z/PJbOPqAQQ9qaXSjk=";
};
build-system = [
setuptools
];
nativeCheckInputs = [
pytestCheckHook
];
pythonImportsCheck = [
"Levenshtein_search"
];
meta = {
description = "Search through documents for approximately matching strings using Levenshtein distance";
homepage = "https://github.com/dedupeio/Levenshtein_search";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ daniel-fahey ];
};
}
@@ -0,0 +1,59 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
cython,
numpy,
setuptools,
# tests
pytest-cov-stub,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "dedupe-pylbfgs";
version = "0.2.0.16";
pyproject = true;
# NOTE: This is a fork of larsmans/pylbfgs maintained by dedupeio
src = fetchFromGitHub {
owner = "dedupeio";
repo = "pylbfgs";
tag = "${version}";
hash = "sha256-H416dgZQxyqsnhmlK5keW8cJWY6gea4mebVuP0IEVOU=";
};
build-system = [
cython
numpy
setuptools
];
dependencies = [
numpy
];
nativeCheckInputs = [
pytest-cov-stub
pytestCheckHook
];
# Prevent importing from source during test collection (only $out has compiled extensions)
preCheck = ''
rm -rf lbfgs
'';
pythonImportsCheck = [
"lbfgs"
];
meta = {
description = "Python wrapper for L-BFGS and OWL-QN optimization algorithms";
homepage = "https://github.com/dedupeio/pylbfgs";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ daniel-fahey ];
};
}
@@ -0,0 +1,106 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
cython,
setuptools,
# dependencies
affinegap,
btrees,
categorical-distance,
dedupe-levenshtein-search,
doublemetaphone,
haversine,
highered,
numpy,
scikit-learn,
simplecosine,
zope-index,
dedupe,
# tests
pytest-cov-stub,
pytestCheckHook,
python,
runCommand,
}:
buildPythonPackage rec {
pname = "dedupe";
version = "3.0.3";
pyproject = true;
src = fetchFromGitHub {
owner = "dedupeio";
repo = "dedupe";
tag = "v${version}";
hash = "sha256-tfBJeaeZw5w5OwM+AOfy9H6P2zbShjN/kuzEbpxATHI=";
};
build-system = [
cython
setuptools
];
dependencies = [
affinegap
btrees
categorical-distance
dedupe-levenshtein-search
doublemetaphone
haversine
highered
numpy
scikit-learn
simplecosine
zope-index
];
nativeCheckInputs = [
pytest-cov-stub
pytestCheckHook
];
# Remove source directory so pytest imports compiled extension from $out
preCheck = ''
rm -rf dedupe
'';
pythonImportsCheck = [
"dedupe"
];
passthru.tests.benchmarks =
runCommand "dedupe-benchmarks-test"
{
nativeBuildInputs = [ (python.withPackages (ps: [ dedupe ])) ];
}
''
# Copy benchmarks to writable location
cp -r ${src}/benchmarks benchmarks
chmod -R +w benchmarks
cd benchmarks
# Run all three canonical benchmarks
for benchmark in canonical canonical_gazetteer canonical_matching; do
echo "Running $benchmark benchmark..."
# Redirect stderr to /dev/null (`2>/dev/null`) to suppress Python 3.13
# multiprocessing resource tracker warnings from scikit-learn/joblib subprocesses
# `|| exit 1` provides fail-fast behavior: exit immediately if any benchmark fails
PYTHONPATH=$PWD python -m benchmarks.$benchmark 2>/dev/null || exit 1
done
touch $out
'';
meta = {
description = "Library for accurate and scalable fuzzy matching, deduplication and entity resolution";
homepage = "https://github.com/dedupeio/dedupe";
changelog = "https://github.com/dedupeio/dedupe/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ daniel-fahey ];
};
}
@@ -0,0 +1,50 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
cython,
setuptools,
# tests
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "doublemetaphone";
version = "1.2i";
pyproject = true;
src = fetchFromGitHub {
owner = "dedupeio";
repo = "doublemetaphone";
tag = "v${version}";
hash = "sha256-VPJqHxQHLiLSko+aJYTIgISluHPARgQN5pYWYxP9QKQ=";
};
build-system = [
cython
setuptools
];
nativeCheckInputs = [
pytestCheckHook
];
# Prevent importing from source during test collection (only $out has compiled extensions)
preCheck = ''
rm -rf doublemetaphone
'';
pythonImportsCheck = [
"doublemetaphone"
];
meta = {
description = "Python wrapper for Double Metaphone phonetic encoding algorithm";
homepage = "https://github.com/dedupeio/doublemetaphone";
license = lib.licenses.artistic1;
maintainers = with lib.maintainers; [ daniel-fahey ];
};
}
@@ -0,0 +1,58 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
unstableGitUpdater,
# build-system
setuptools,
# dependencies
pyhacrf-datamade,
numpy,
# tests
pytestCheckHook,
}:
buildPythonPackage {
pname = "highered";
version = "0.2.1-unstable-2020-03-31";
pyproject = true;
src = fetchFromGitHub {
owner = "dedupeio";
repo = "highered";
rev = "5e6e505e182ff91b1620535a491ad4a3d98ef71e";
hash = "sha256-sDOAB0QabJ/WJYSIZ31J12kSDQADQUilE2SmGPjXmZo=";
};
build-system = [
setuptools
];
dependencies = [
pyhacrf-datamade
numpy
];
nativeCheckInputs = [
pytestCheckHook
];
# No tests in repository
doCheck = false;
pythonImportsCheck = [
"highered"
];
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Learnable edit distance using CRF (Conditional Random Fields)";
homepage = "https://github.com/dedupeio/highered";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ daniel-fahey ];
};
}
@@ -0,0 +1,71 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
unstableGitUpdater,
# build-system
cython,
numpy,
setuptools,
# dependencies
dedupe-pylbfgs,
# tests
pytestCheckHook,
}:
buildPythonPackage {
pname = "pyhacrf-datamade";
# Tagged release requested upstream in https://github.com/dedupeio/pyhacrf/issues/57
version = "0.2.8-unstable-2025-05-16";
pyproject = true;
# NOTE: This is a fork of dirko/pyhacrf maintained by dedupeio
src = fetchFromGitHub {
owner = "dedupeio";
repo = "pyhacrf";
rev = "899aa6c2c48e5afe8fb40727ffd6070e4ba71c31";
hash = "sha256-MVkOChDblu7A/ve51SYqO7lNoTXwh37bHjnZd+NvzK0=";
};
build-system = [
cython
numpy
setuptools
];
dependencies = [
dedupe-pylbfgs
numpy
];
nativeCheckInputs = [
pytestCheckHook
];
# Change to temp directory so pytest imports from installed package in $out, not source
preCheck = ''
export TEST_DIR=$(mktemp -d)
cp -r pyhacrf/tests $TEST_DIR/
pushd $TEST_DIR
'';
postCheck = ''
popd
'';
pythonImportsCheck = [
"pyhacrf"
];
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Hidden alignment conditional random field for classifying string pairs";
homepage = "https://github.com/dedupeio/pyhacrf";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ daniel-fahey ];
};
}
@@ -0,0 +1,50 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
# dependencies
numpy,
# tests
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "simplecosine";
version = "1.2";
pyproject = true;
src = fetchFromGitHub {
owner = "dedupeio";
repo = "simplecosine";
tag = "v${version}";
hash = "sha256-TNQnSbCh7o5JsxvfljRGSNwptwpLHmVw9gyk0TELDek=";
};
build-system = [
setuptools
];
dependencies = [
numpy
];
nativeCheckInputs = [
pytestCheckHook
];
pythonImportsCheck = [
"simplecosine"
];
meta = {
description = "Simple cosine distance calculation for string comparison";
homepage = "https://github.com/dedupeio/simplecosine";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ daniel-fahey ];
};
}
@@ -0,0 +1,64 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
# dependencies
btrees,
persistent,
zope-interface,
# tests
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "zope-index";
version = "8.0";
pyproject = true;
src = fetchFromGitHub {
owner = "zopefoundation";
repo = "zope.index";
tag = "${version}";
hash = "sha256-dHapd/+pJh6qzVx9FGSMmPsGbz8NhAoPqufXm3FOuM8=";
};
postPatch = ''
substituteInPlace pyproject.toml \
--replace-fail "setuptools ==" "setuptools >="
'';
build-system = [
setuptools
];
dependencies = [
btrees
persistent
zope-interface
];
nativeCheckInputs = [
pytestCheckHook
];
pythonImportsCheck = [
"zope.index"
];
pythonNamespaces = [
"zope"
];
meta = {
description = "Full-text indexing and searching for Zope";
homepage = "https://github.com/zopefoundation/zope.index";
changelog = "https://github.com/zopefoundation/zope.index/blob/${version}/CHANGES.rst";
license = lib.licenses.zpl21;
maintainers = with lib.maintainers; [ daniel-fahey ];
};
}
+20
View File
@@ -124,6 +124,8 @@ self: super: with self; {
affine-gaps = callPackage ../development/python-modules/affine-gaps { };
affinegap = callPackage ../development/python-modules/affinegap { };
afsapi = callPackage ../development/python-modules/afsapi { };
agate = callPackage ../development/python-modules/agate { };
@@ -2409,6 +2411,8 @@ self: super: with self; {
};
};
categorical-distance = callPackage ../development/python-modules/categorical-distance { };
catkin-pkg = callPackage ../development/python-modules/catkin-pkg { };
catppuccin = callPackage ../development/python-modules/catppuccin { };
@@ -3552,6 +3556,12 @@ self: super: with self; {
decorator = callPackage ../development/python-modules/decorator { };
dedupe = callPackage ../development/python-modules/dedupe { };
dedupe-levenshtein-search = callPackage ../development/python-modules/dedupe-levenshtein-search { };
dedupe-pylbfgs = callPackage ../development/python-modules/dedupe-pylbfgs { };
deebot-client = callPackage ../development/python-modules/deebot-client { };
deemix = callPackage ../development/python-modules/deemix { };
@@ -4391,6 +4401,8 @@ self: super: with self; {
dotwiz = callPackage ../development/python-modules/dotwiz { };
doublemetaphone = callPackage ../development/python-modules/doublemetaphone { };
doubleratchet = callPackage ../development/python-modules/doubleratchet { };
doubles = callPackage ../development/python-modules/doubles { };
@@ -6670,6 +6682,8 @@ self: super: with self; {
highdicom = callPackage ../development/python-modules/highdicom { };
highered = callPackage ../development/python-modules/highered { };
highspy = callPackage ../development/python-modules/highspy { };
hightime = callPackage ../development/python-modules/hightime { };
@@ -13203,6 +13217,8 @@ self: super: with self; {
pygtrie = callPackage ../development/python-modules/pygtrie { };
pyhacrf-datamade = callPackage ../development/python-modules/pyhacrf-datamade { };
pyhamcrest = callPackage ../development/python-modules/pyhamcrest { };
pyhanko = callPackage ../development/python-modules/pyhanko { };
@@ -16860,6 +16876,8 @@ self: super: with self; {
simplebayes = callPackage ../development/python-modules/simplebayes { };
simplecosine = callPackage ../development/python-modules/simplecosine { };
simpleeval = callPackage ../development/python-modules/simpleeval { };
simplefin4py = callPackage ../development/python-modules/simplefin4py { };
@@ -20670,6 +20688,8 @@ self: super: with self; {
zope-i18nmessageid = callPackage ../development/python-modules/zope-i18nmessageid { };
zope-index = callPackage ../development/python-modules/zope-index { };
zope-interface = callPackage ../development/python-modules/zope-interface { };
zope-lifecycleevent = callPackage ../development/python-modules/zope-lifecycleevent { };