117 lines
4.5 KiB
Python
117 lines
4.5 KiB
Python
# SPDX-License-Identifier: MIT
|
|
# Copyright (C) 2025 Max Bachmann
|
|
# This file is generated by tools/generate_python.py
|
|
from __future__ import annotations
|
|
|
|
import contextlib
|
|
import os
|
|
|
|
from rapidfuzz._feature_detector import AVX2, SSE2, supports
|
|
|
|
__all__ = [
|
|
"distance",
|
|
"editops",
|
|
"normalized_distance",
|
|
"normalized_similarity",
|
|
"opcodes",
|
|
"similarity",
|
|
]
|
|
|
|
_impl = os.environ.get("RAPIDFUZZ_IMPLEMENTATION")
|
|
if _impl == "cpp":
|
|
imported = False
|
|
if supports(AVX2):
|
|
with contextlib.suppress(ImportError):
|
|
from rapidfuzz.distance.metrics_cpp_avx2 import ( # pyright: ignore[reportMissingImports]
|
|
levenshtein_distance as distance,
|
|
levenshtein_editops as editops,
|
|
levenshtein_normalized_distance as normalized_distance,
|
|
levenshtein_normalized_similarity as normalized_similarity,
|
|
levenshtein_opcodes as opcodes,
|
|
levenshtein_similarity as similarity,
|
|
)
|
|
|
|
imported = True
|
|
|
|
if not imported and supports(SSE2):
|
|
with contextlib.suppress(ImportError):
|
|
from rapidfuzz.distance.metrics_cpp_sse2 import ( # pyright: ignore[reportMissingImports]
|
|
levenshtein_distance as distance,
|
|
levenshtein_editops as editops,
|
|
levenshtein_normalized_distance as normalized_distance,
|
|
levenshtein_normalized_similarity as normalized_similarity,
|
|
levenshtein_opcodes as opcodes,
|
|
levenshtein_similarity as similarity,
|
|
)
|
|
|
|
imported = True
|
|
|
|
if not imported:
|
|
from rapidfuzz.distance.metrics_cpp import ( # pyright: ignore[reportMissingImports]
|
|
levenshtein_distance as distance,
|
|
levenshtein_editops as editops,
|
|
levenshtein_normalized_distance as normalized_distance,
|
|
levenshtein_normalized_similarity as normalized_similarity,
|
|
levenshtein_opcodes as opcodes,
|
|
levenshtein_similarity as similarity,
|
|
)
|
|
elif _impl == "python":
|
|
from rapidfuzz.distance.metrics_py import (
|
|
levenshtein_distance as distance,
|
|
levenshtein_editops as editops,
|
|
levenshtein_normalized_distance as normalized_distance,
|
|
levenshtein_normalized_similarity as normalized_similarity,
|
|
levenshtein_opcodes as opcodes,
|
|
levenshtein_similarity as similarity,
|
|
)
|
|
else:
|
|
imported = False
|
|
if supports(AVX2):
|
|
with contextlib.suppress(ImportError):
|
|
from rapidfuzz.distance.metrics_cpp_avx2 import ( # pyright: ignore[reportMissingImports]
|
|
levenshtein_distance as distance,
|
|
levenshtein_editops as editops,
|
|
levenshtein_normalized_distance as normalized_distance,
|
|
levenshtein_normalized_similarity as normalized_similarity,
|
|
levenshtein_opcodes as opcodes,
|
|
levenshtein_similarity as similarity,
|
|
)
|
|
|
|
imported = True
|
|
|
|
if not imported and supports(SSE2):
|
|
with contextlib.suppress(ImportError):
|
|
from rapidfuzz.distance.metrics_cpp_sse2 import ( # pyright: ignore[reportMissingImports]
|
|
levenshtein_distance as distance,
|
|
levenshtein_editops as editops,
|
|
levenshtein_normalized_distance as normalized_distance,
|
|
levenshtein_normalized_similarity as normalized_similarity,
|
|
levenshtein_opcodes as opcodes,
|
|
levenshtein_similarity as similarity,
|
|
)
|
|
|
|
imported = True
|
|
|
|
if not imported:
|
|
with contextlib.suppress(ImportError):
|
|
from rapidfuzz.distance.metrics_cpp import ( # pyright: ignore[reportMissingImports]
|
|
levenshtein_distance as distance,
|
|
levenshtein_editops as editops,
|
|
levenshtein_normalized_distance as normalized_distance,
|
|
levenshtein_normalized_similarity as normalized_similarity,
|
|
levenshtein_opcodes as opcodes,
|
|
levenshtein_similarity as similarity,
|
|
)
|
|
|
|
imported = True
|
|
|
|
if not imported:
|
|
from rapidfuzz.distance.metrics_py import (
|
|
levenshtein_distance as distance,
|
|
levenshtein_editops as editops,
|
|
levenshtein_normalized_distance as normalized_distance,
|
|
levenshtein_normalized_similarity as normalized_similarity,
|
|
levenshtein_opcodes as opcodes,
|
|
levenshtein_similarity as similarity,
|
|
)
|