{"adoption": {"forks": 167, "observed_at": "2026-08-28T04:08:12.913691+00:00", "stars": 3645}, "canonical_url": "https://ross.abutalabs.com/products/thefuzz", "card": {"archived": false, "artifact_type": "library", "description": "Fuzzy String Matching in Python", "domain": ["developer-tools", "data-science"], "enriched": true, "function": ["nlp"], "health_score": 26, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["seatgeek/thefuzz", "seatgeek/fuzzywuzzy"], "name": "TheFuzz", "platform": ["python", "cross-platform"], "pushed_at": "2025-03-03T17:02:53+00:00", "repo": "seatgeek/thefuzz", "stars": 3645, "tags": ["fuzzy-matching", "string-similarity", "levenshtein-distance", "record-linkage", "text-matching", "natural-language-processing"], "topics": [], "urls": [{"kind": "homepage", "url": "http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/"}], "use_cases": ["match misspelled product or event names across data sources", "deduplicate records with slightly different text labels", "fuzzy search for the closest string in a list", "compare user input against known values with typos", "link entity names between two datasets", "score similarity of two strings in Python"], "what_it_is": "TheFuzz (formerly FuzzyWuzzy) is a Python library for fuzzy string matching that uses Levenshtein distance to compute similarity ratios between strings. It provides scoring functions like ratio, partial_ratio, token_sort_ratio, and token_set_ratio to match strings that are similar but not identical.", "when_to_avoid": ["you need high-performance matching over millions of strings at scale (consider RapidFuzz)", "you need semantic or embedding-based similarity rather than edit-distance", "GPL-2.0 licensing of the legacy fuzzywuzzy package is a problem (note thefuzz itself is MIT)"], "when_to_choose": ["you need simple, well-tested fuzzy string similarity scoring in Python", "you want token-based matching that tolerates word order and partial matches", "you need a lightweight pure-Python library with optional C acceleration via python-Levenshtein"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/seatgeek/thefuzz", "repo": "seatgeek/thefuzz", "role": "main", "score": 36}, {"path": "/repos/seatgeek/fuzzywuzzy", "repo": "seatgeek/fuzzywuzzy", "role": "mirror", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:23:13.228087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd271b33d7569848bc4ce7e0367a0b3313006763e1fbfefdc05cc44ac335fade", "fetched_at": "2026-08-28T04:08:12.913691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seatgeek/thefuzz"}, {"content_hash": "8f782e9d559e164fbea7776034ef97bbb284df7b894159c64ae9ad689c2d40c6", "fetched_at": "2026-08-29T08:22:55.844997+00:00", "kind": "homepage", "missing": false, "url": "http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/"}, {"content_hash": "283445edea7f27337e21747d357fbf58f21b86ec4aa25cbccfa8e5a3f7977210", "fetched_at": "2026-08-29T08:22:55.854186+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/fuzzywuzzy/json"}, {"content_hash": "85c7d29084d81d847279329b4d619ac44c29ca9ce78ad1576570f5b7543fe370", "fetched_at": "2026-08-29T08:22:55.856040+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/thefuzz/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:23:13.228087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd271b33d7569848bc4ce7e0367a0b3313006763e1fbfefdc05cc44ac335fade", "fetched_at": "2026-08-28T04:08:12.913691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seatgeek/thefuzz"}, {"content_hash": "8f782e9d559e164fbea7776034ef97bbb284df7b894159c64ae9ad689c2d40c6", "fetched_at": "2026-08-29T08:22:55.844997+00:00", "kind": "homepage", "missing": false, "url": "http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/"}, {"content_hash": "283445edea7f27337e21747d357fbf58f21b86ec4aa25cbccfa8e5a3f7977210", "fetched_at": "2026-08-29T08:22:55.854186+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/fuzzywuzzy/json"}, {"content_hash": "85c7d29084d81d847279329b4d619ac44c29ca9ce78ad1576570f5b7543fe370", "fetched_at": "2026-08-29T08:22:55.856040+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/thefuzz/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:23:13.228087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd271b33d7569848bc4ce7e0367a0b3313006763e1fbfefdc05cc44ac335fade", "fetched_at": "2026-08-28T04:08:12.913691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seatgeek/thefuzz"}, {"content_hash": "8f782e9d559e164fbea7776034ef97bbb284df7b894159c64ae9ad689c2d40c6", "fetched_at": "2026-08-29T08:22:55.844997+00:00", "kind": "homepage", "missing": false, "url": "http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/"}, {"content_hash": "283445edea7f27337e21747d357fbf58f21b86ec4aa25cbccfa8e5a3f7977210", "fetched_at": "2026-08-29T08:22:55.854186+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/fuzzywuzzy/json"}, {"content_hash": "85c7d29084d81d847279329b4d619ac44c29ca9ce78ad1576570f5b7543fe370", "fetched_at": "2026-08-29T08:22:55.856040+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/thefuzz/json"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:23:13.228087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd271b33d7569848bc4ce7e0367a0b3313006763e1fbfefdc05cc44ac335fade", "fetched_at": "2026-08-28T04:08:12.913691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seatgeek/thefuzz"}, {"content_hash": "8f782e9d559e164fbea7776034ef97bbb284df7b894159c64ae9ad689c2d40c6", "fetched_at": "2026-08-29T08:22:55.844997+00:00", "kind": "homepage", "missing": false, "url": "http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/"}, {"content_hash": "283445edea7f27337e21747d357fbf58f21b86ec4aa25cbccfa8e5a3f7977210", "fetched_at": "2026-08-29T08:22:55.854186+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/fuzzywuzzy/json"}, {"content_hash": "85c7d29084d81d847279329b4d619ac44c29ca9ce78ad1576570f5b7543fe370", "fetched_at": "2026-08-29T08:22:55.856040+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/thefuzz/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:23:13.228087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd271b33d7569848bc4ce7e0367a0b3313006763e1fbfefdc05cc44ac335fade", "fetched_at": "2026-08-28T04:08:12.913691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seatgeek/thefuzz"}, {"content_hash": "8f782e9d559e164fbea7776034ef97bbb284df7b894159c64ae9ad689c2d40c6", "fetched_at": "2026-08-29T08:22:55.844997+00:00", "kind": "homepage", "missing": false, "url": "http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/"}, {"content_hash": "283445edea7f27337e21747d357fbf58f21b86ec4aa25cbccfa8e5a3f7977210", "fetched_at": "2026-08-29T08:22:55.854186+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/fuzzywuzzy/json"}, {"content_hash": "85c7d29084d81d847279329b4d619ac44c29ca9ce78ad1576570f5b7543fe370", "fetched_at": "2026-08-29T08:22:55.856040+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/thefuzz/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:23:13.228087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd271b33d7569848bc4ce7e0367a0b3313006763e1fbfefdc05cc44ac335fade", "fetched_at": "2026-08-28T04:08:12.913691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seatgeek/thefuzz"}, {"content_hash": "8f782e9d559e164fbea7776034ef97bbb284df7b894159c64ae9ad689c2d40c6", "fetched_at": "2026-08-29T08:22:55.844997+00:00", "kind": "homepage", "missing": false, "url": "http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/"}, {"content_hash": "283445edea7f27337e21747d357fbf58f21b86ec4aa25cbccfa8e5a3f7977210", "fetched_at": "2026-08-29T08:22:55.854186+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/fuzzywuzzy/json"}, {"content_hash": "85c7d29084d81d847279329b4d619ac44c29ca9ce78ad1576570f5b7543fe370", "fetched_at": "2026-08-29T08:22:55.856040+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/thefuzz/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:12.913691+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:23:13.228087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd271b33d7569848bc4ce7e0367a0b3313006763e1fbfefdc05cc44ac335fade", "fetched_at": "2026-08-28T04:08:12.913691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seatgeek/thefuzz"}, {"content_hash": "8f782e9d559e164fbea7776034ef97bbb284df7b894159c64ae9ad689c2d40c6", "fetched_at": "2026-08-29T08:22:55.844997+00:00", "kind": "homepage", "missing": false, "url": "http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/"}, {"content_hash": "283445edea7f27337e21747d357fbf58f21b86ec4aa25cbccfa8e5a3f7977210", "fetched_at": "2026-08-29T08:22:55.854186+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/fuzzywuzzy/json"}, {"content_hash": "85c7d29084d81d847279329b4d619ac44c29ca9ce78ad1576570f5b7543fe370", "fetched_at": "2026-08-29T08:22:55.856040+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/thefuzz/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:23:13.228087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd271b33d7569848bc4ce7e0367a0b3313006763e1fbfefdc05cc44ac335fade", "fetched_at": "2026-08-28T04:08:12.913691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seatgeek/thefuzz"}, {"content_hash": "8f782e9d559e164fbea7776034ef97bbb284df7b894159c64ae9ad689c2d40c6", "fetched_at": "2026-08-29T08:22:55.844997+00:00", "kind": "homepage", "missing": false, "url": "http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/"}, {"content_hash": "283445edea7f27337e21747d357fbf58f21b86ec4aa25cbccfa8e5a3f7977210", "fetched_at": "2026-08-29T08:22:55.854186+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/fuzzywuzzy/json"}, {"content_hash": "85c7d29084d81d847279329b4d619ac44c29ca9ce78ad1576570f5b7543fe370", "fetched_at": "2026-08-29T08:22:55.856040+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/thefuzz/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:23:13.228087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd271b33d7569848bc4ce7e0367a0b3313006763e1fbfefdc05cc44ac335fade", "fetched_at": "2026-08-28T04:08:12.913691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seatgeek/thefuzz"}, {"content_hash": "8f782e9d559e164fbea7776034ef97bbb284df7b894159c64ae9ad689c2d40c6", "fetched_at": "2026-08-29T08:22:55.844997+00:00", "kind": "homepage", "missing": false, "url": "http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/"}, {"content_hash": "283445edea7f27337e21747d357fbf58f21b86ec4aa25cbccfa8e5a3f7977210", "fetched_at": "2026-08-29T08:22:55.854186+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/fuzzywuzzy/json"}, {"content_hash": "85c7d29084d81d847279329b4d619ac44c29ca9ce78ad1576570f5b7543fe370", "fetched_at": "2026-08-29T08:22:55.856040+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/thefuzz/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:23:13.228087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd271b33d7569848bc4ce7e0367a0b3313006763e1fbfefdc05cc44ac335fade", "fetched_at": "2026-08-28T04:08:12.913691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seatgeek/thefuzz"}, {"content_hash": "8f782e9d559e164fbea7776034ef97bbb284df7b894159c64ae9ad689c2d40c6", "fetched_at": "2026-08-29T08:22:55.844997+00:00", "kind": "homepage", "missing": false, "url": "http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/"}, {"content_hash": "283445edea7f27337e21747d357fbf58f21b86ec4aa25cbccfa8e5a3f7977210", "fetched_at": "2026-08-29T08:22:55.854186+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/fuzzywuzzy/json"}, {"content_hash": "85c7d29084d81d847279329b4d619ac44c29ca9ce78ad1576570f5b7543fe370", "fetched_at": "2026-08-29T08:22:55.856040+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/thefuzz/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 9, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2007, "days_push": 548, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 36, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}