{"id":70327,"name":"textdistance","description":"📐 Compute distance between sequences. 30+ algorithms, pure python implementation, common interface, optional external libs usage.","url":"https://github.com/life4/textdistance","last_synced_at":"2025-09-08T15:03:29.415Z","repository":{"id":37431185,"uuid":"90356012","full_name":"life4/textdistance","owner":"life4","description":"📐 Compute distance between sequences. 30+ algorithms, pure python implementation, common interface, optional external libs usage.","archived":false,"fork":false,"pushed_at":"2025-04-18T12:13:17.000Z","size":463,"stargazers_count":3467,"open_issues_count":9,"forks_count":255,"subscribers_count":64,"default_branch":"master","last_synced_at":"2025-05-28T19:42:14.813Z","etag":null,"topics":["algorithm","algorithms","damerau-levenshtein","damerau-levenshtein-distance","diff","distance","distance-calculation","hamming-distance","jellyfish","levenshtein","levenshtein-distance","python","textdistance"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/life4.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-05-05T08:46:10.000Z","updated_at":"2025-05-27T09:51:19.000Z","dependencies_parsed_at":"2023-12-26T17:28:15.128Z","dependency_job_id":"54668f0c-350c-4495-a788-e67a6ccf8365","html_url":"https://github.com/life4/textdistance","commit_stats":{"total_commits":339,"total_committers":16,"mean_commits":21.1875,"dds":0.2802359882005899,"last_synced_commit":"65c5e8416355a93b476d647945b2cafedc56af2a"},"previous_names":["orsinium/textdistance"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/life4/textdistance","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/life4","download_url":"https://codeload.github.com/life4/textdistance/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274202770,"owners_count":25240371,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"life4","name":"Life4","uuid":"48201596","kind":"organization","description":"Big and cool projects by @orsinium. See also @orsinium-labs.","email":null,"website":"https://orsinium.dev/","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/48201596?v=4","repositories_count":14,"last_synced_at":"2023-02-28T18:40:32.666Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/life4","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-11T20:17:53.448Z","updated_at":"2023-02-28T18:40:32.681Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/life4","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/life4/repositories"},"packages":[{"id":8614022,"name":"github.com/life4/textdistance","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/life4/textdistance","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2019-03-09T18:04:54.000Z","latest_release_published_at":"2019-03-09T18:04:54.000Z","latest_release_number":"v4.1.0+incompatible","last_synced_at":"2025-07-30T01:33:13.796Z","created_at":"2023-12-02T02:10:46.496Z","updated_at":"2025-07-30T01:33:13.796Z","registry_url":"https://pkg.go.dev/github.com/life4/textdistance","install_command":"go get github.com/life4/textdistance","documentation_url":"https://pkg.go.dev/github.com/life4/textdistance#section-documentation","metadata":{},"repo_metadata":{"uuid":"90356012","full_name":"life4/textdistance","owner":"life4","description":"📐 Compute distance between sequences. 30+ algorithms, pure python implementation, common interface, optional external libs usage.","archived":false,"fork":false,"pushed_at":"2023-09-28T08:31:00.000Z","size":510,"stargazers_count":3222,"open_issues_count":9,"forks_count":247,"subscribers_count":64,"default_branch":"master","last_synced_at":"2023-12-01T21:13:17.774Z","etag":null,"topics":["algorithm","algorithms","damerau-levenshtein","damerau-levenshtein-distance","diff","distance","distance-calculation","hamming-distance","jellyfish","levenshtein","levenshtein-distance","python","textdistance"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/life4.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-05-05T08:46:10.000Z","updated_at":"2023-11-30T17:07:46.000Z","dependencies_parsed_at":"2022-07-13T11:30:30.131Z","dependency_job_id":null,"html_url":"https://github.com/life4/textdistance","commit_stats":{"total_commits":337,"total_committers":16,"mean_commits":21.0625,"dds":"0.27596439169139464","last_synced_commit":"e9718c5883c7a04d99217bb7fcde58324083fc27"},"previous_names":["orsinium/textdistance"],"tags_count":11,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/life4","download_url":"https://codeload.github.com/life4/textdistance/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":174245433,"owners_count":10087782,"icon_url":"https://github.com/github.png","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"repo_metadata_updated_at":"2023-12-02T02:10:50.523Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":10.801592556016239,"dependent_packages_count":9.575730298247606,"stargazers_count":1.2034489047803247,"forks_count":1.7875861073754211,"docker_downloads_count":null,"average":5.8420894666048975},"purl":"pkg:golang/github.com/life4/textdistance","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/life4/textdistance","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/life4/textdistance","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/life4/textdistance/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2023-12-01T22:02:41.507Z","issues_count":0,"pull_requests_count":51,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":1434327.549019608,"issues_closed_count":0,"pull_requests_closed_count":51,"pull_request_authors_count":15,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":1.2156862745098038,"merged_pull_requests_count":48,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":6,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":57971.166666666664,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":6,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.1666666666666667,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":6,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance/issues"},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Flife4%2Ftextdistance/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Flife4%2Ftextdistance/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Flife4%2Ftextdistance/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Flife4%2Ftextdistance/related_packages","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":1954234,"maintainers_count":0,"namespaces_count":741771,"keywords_count":109320,"github":"golang","metadata":{"funded_packages_count":49342},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2025-09-08T05:47:38.872Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":6976,"full_name":"life4/textdistance","default_branch":"master","committers":[{"name":"Gram","email":"master_fess@mail.ru","login":"orsinium","count":311},{"name":"Julian Gilbey","email":"julian-git@d-and-j.net","login":"juliangilbey","count":7},{"name":"Benjamin A. Beasley","email":"code@musicinmybrain.net","login":"musicinmybrain","count":4},{"name":"Julian Gilbey","email":"jdg@debian.org","login":null,"count":3},{"name":"Bruno Pagani","email":"bruno.n.pagani@gmail.com","login":"ArchangeGabriel","count":3},{"name":"Eliad Levy","email":"18311033+eliadl","login":"eliadl","count":3},{"name":"McKenna","email":"dallmeyerm@att.net","login":"ennamarie19","count":3},{"name":"Max Bachmann","email":"kontakt@maxbachmann.de","login":"maxbachmann","count":2},{"name":"davebulaval","email":"david.beauchemin.5@ulaval.ca","login":"davebulaval","count":2},{"name":"Inokenty","email":"inokenty.95@gmail.com","login":"Inokenty90","count":2},{"name":"Bruno P. Kinoshita","email":"kinow","login":"kinow","count":1},{"name":"Christian Eriksson","email":"christian.eriksson@live.se","login":"christian-eriksson","count":1},{"name":"ChristofKaufmann","email":"christofkaufmann.dev@gmail.com","login":"ChristofKaufmann","count":1},{"name":"Fabian Winkler","email":"wynksaiddestroy","login":"wynksaiddestroy","count":1},{"name":"KKGBiz","email":"kkg.business@gmail.com","login":"KKGBiz","count":1},{"name":"Jungyeol Lee","email":"jungyeol@skelterlabs.com","login":null,"count":1},{"name":"Andrea","email":"C322831","login":null,"count":1},{"name":"Reindert Van Herreweghe","email":"33953059+ReindertVanHerreweghe","login":"ReindertVanHerreweghe","count":1}],"total_commits":348,"total_committers":18,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":19.333333333333332,"dds":0.10632183908045978,"past_year_committers":[{"name":"McKenna","email":"dallmeyerm@att.net","login":"ennamarie19","count":3},{"name":"gram","email":"git@orsinium.dev","login":"orsinium","count":1},{"name":"ChristofKaufmann","email":"christofkaufmann.dev@gmail.com","login":"ChristofKaufmann","count":1},{"name":"Christian Eriksson","email":"christian.eriksson@live.se","login":"christian-eriksson","count":1},{"name":"Julian Gilbey","email":"jdg@debian.org","login":null,"count":1}],"past_year_total_commits":7,"past_year_total_committers":5,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":1.4,"past_year_dds":0.5714285714285714,"last_synced_at":"2025-05-28T19:43:21.721Z","last_synced_commit":"d6a68d61088a40eef5c88191ccf79323dbf34850","created_at":"2023-03-07T09:44:11.708Z","updated_at":"2025-05-28T19:43:21.738Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-06T00:00:13.651Z","repositories_count":5480019,"commits_count":853389126,"contributors_count":31098155,"owners_count":906558,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"life4/textdistance","html_url":"https://github.com/life4/textdistance","last_synced_at":"2025-05-21T19:13:18.194Z","status":null,"issues_count":0,"pull_requests_count":57,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":1300601.5614035088,"issues_closed_count":0,"pull_requests_closed_count":57,"pull_request_authors_count":19,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":1.1929824561403508,"merged_pull_requests_count":54,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":4,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":28231.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":4,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":4,"created_at":"2023-05-10T11:04:24.041Z","updated_at":"2025-09-02T06:35:49.483Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/life4%2Ftextdistance/issues","issue_labels_count":{},"pull_request_labels_count":{"hacktoberfest-accepted":1},"issue_author_associations_count":{},"pull_request_author_associations_count":{"MEMBER":27,"CONTRIBUTOR":27,"NONE":8},"issue_authors":{},"pull_request_authors":{"orsinium":27,"juliangilbey":8,"musicinmybrain":3,"KKGBiz":2,"maxbachmann":2,"ArchangeGabriel":2,"Inokenty90":2,"christian-eriksson":2,"davebulaval":2,"ennamarie19":2,"ChristofKaufmann":2,"kinow":1,"eliadl":1,"wynksaiddestroy":1,"Reindert94":1,"cheTesta":1,"ArneBachmann":1,"w4-jungyeol":1,"shijithpk":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-08T00:00:17.013Z","repositories_count":10167544,"issues_count":32012554,"pull_requests_count":100260947,"authors_count":10729845,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":3,"NONE":1},"past_year_issue_authors":{},"past_year_pull_request_authors":{"christian-eriksson":2,"juliangilbey":2},"maintainers":[{"login":"orsinium","count":27,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/orsinium"}],"active_maintainers":[]},"events":{"total":{"WatchEvent":115,"IssueCommentEvent":1,"PullRequestEvent":2,"ForkEvent":6},"last_year":{"WatchEvent":115,"IssueCommentEvent":1,"PullRequestEvent":2,"ForkEvent":6}},"keywords":["algorithm","algorithms","damerau-levenshtein","damerau-levenshtein-distance","diff","distance","distance-calculation","hamming-distance","jellyfish","levenshtein","levenshtein-distance","python","textdistance"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/main.yml","sha":null,"kind":"manifest","created_at":"2023-12-26T17:28:12.030Z","updated_at":"2023-12-26T17:28:12.030Z","repository_link":"https://github.com/life4/textdistance/blob/master/.github/workflows/main.yml","dependencies":[{"id":15287213460,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":15287213461,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":15287213462,"package_name":"arduino/setup-task","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":15287213555,"package_name":"nosborn/github-action-markdown-cli","ecosystem":"actions","requirements":"v3.2.0","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"licenses_example/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-12-26T17:28:14.292Z","updated_at":"2023-12-26T17:28:14.292Z","repository_link":"https://github.com/life4/textdistance/blob/master/licenses_example/requirements.txt","dependencies":[{"id":15287213610,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15287213611,"package_name":"plotnine","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15287213612,"package_name":"textdistance","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2023-12-26T17:28:14.504Z","updated_at":"2023-12-26T17:28:14.504Z","repository_link":"https://github.com/life4/textdistance/blob/master/pyproject.toml","dependencies":[]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2023-12-26T17:28:14.522Z","updated_at":"2023-12-26T17:28:14.522Z","repository_link":"https://github.com/life4/textdistance/blob/master/setup.py","dependencies":[]}],"score":null,"created_at":"2025-09-08T11:19:07.961Z","updated_at":"2025-10-07T08:25:55.550Z","avatar_url":"https://github.com/life4.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":0,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["closember","bioinformatics","alignment","flexible","fuzzing"],"project_url":"https://science.ecosyste.ms/api/v1/projects/70327","html_url":"https://science.ecosyste.ms/projects/70327"}