[{"id":"36837540904","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":369009015,"name":"rapidfuzz/Levenshtein","url":"https://api.github.com/repos/rapidfuzz/Levenshtein"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/62","repository_url":"https://api.github.com/repos/rapidfuzz/Levenshtein","labels_url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/62/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/62/comments","events_url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/62/events","html_url":"https://github.com/rapidfuzz/Levenshtein/issues/62","id":2198845553,"node_id":"I_kwDOFf6hd86DD7hx","number":62,"title":"Damerau–Levenshtein distance","user":{"login":"vmstarchenko","id":22477826,"node_id":"MDQ6VXNlcjIyNDc3ODI2","avatar_url":"https://avatars.githubusercontent.com/u/22477826?v=4","gravatar_id":"","url":"https://api.github.com/users/vmstarchenko","html_url":"https://github.com/vmstarchenko","followers_url":"https://api.github.com/users/vmstarchenko/followers","following_url":"https://api.github.com/users/vmstarchenko/following{/other_user}","gists_url":"https://api.github.com/users/vmstarchenko/gists{/gist_id}","starred_url":"https://api.github.com/users/vmstarchenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vmstarchenko/subscriptions","organizations_url":"https://api.github.com/users/vmstarchenko/orgs","repos_url":"https://api.github.com/users/vmstarchenko/repos","events_url":"https://api.github.com/users/vmstarchenko/events{/privacy}","received_events_url":"https://api.github.com/users/vmstarchenko/received_events","type":"User","site_admin":false},"labels":[{"id":3014566441,"node_id":"MDU6TGFiZWwzMDE0NTY2NDQx","url":"https://api.github.com/repos/rapidfuzz/Levenshtein/labels/question","name":"question","color":"d876e3","default":true,"description":"Further information is requested"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-21T00:33:25Z","updated_at":"2024-03-24T23:55:38Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hello.\r\n\r\nIs it possible to calculate distance with symbol swaps using this library?\r\nhttps://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance\r\n\r\nIf this is not possible now, will it be difficult to add such a feature?\r\n\r\nSome implementation of this functionality:\r\n```python\r\n\r\ndef damerau_levenshtein_distance(s1, s2):\r\n d = {}\r\n lenstr1 = len(s1)\r\n lenstr2 = len(s2)\r\n for i in range(-1,lenstr1+1):\r\n d[(i,-1)] = i+1\r\n for j in range(-1,lenstr2+1):\r\n d[(-1,j)] = j+1\r\n \r\n for i in range(lenstr1):\r\n for j in range(lenstr2):\r\n if s1[i] == s2[j]:\r\n cost = 0\r\n else:\r\n cost = 1\r\n d[(i,j)] = min(\r\n d[(i-1,j)] + 1, # deletion\r\n d[(i,j-1)] + 1, # insertion\r\n d[(i-1,j-1)] + cost, # substitution\r\n )\r\n if i and j and s1[i] == s2[j-1] and s1[i-1] == s2[j]:\r\n d[(i,j)] = min(d[(i,j)], d[i-2,j-2] + 1) # transposition\r\n \r\n return d[lenstr1-1,lenstr2-1]\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/62/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/62/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/comments/2016996627","html_url":"https://github.com/rapidfuzz/Levenshtein/issues/62#issuecomment-2016996627","issue_url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/62","id":2016996627,"node_id":"IC_kwDOFf6hd854OO0T","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-24T23:55:38Z","updated_at":"2024-03-24T23:55:38Z","author_association":"MEMBER","body":"You can directly use the implementation in [`RapidFuzz`](https://github.com/rapidfuzz/RapidFuzz/tree/main) which is the basis for this library. The wikipedia describes both the damerau levenshtein distance and the optimal string alignment distance. Both of them are available:\r\n```python\r\nfrom rapidfuzz.distance import DamerauLevenshtein, OSA\r\n\r\nOSA.distance(s1, s2)\r\nDamerauLevenshtein(s1, s2)\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/comments/2016996627/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-24T23:55:39Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36837515515","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":369009015,"name":"rapidfuzz/Levenshtein","url":"https://api.github.com/repos/rapidfuzz/Levenshtein"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/63","repository_url":"https://api.github.com/repos/rapidfuzz/Levenshtein","labels_url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/63/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/63/comments","events_url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/63/events","html_url":"https://github.com/rapidfuzz/Levenshtein/issues/63","id":2204545118,"node_id":"I_kwDOFf6hd86DZrBe","number":63,"title":"jaro_winkler gives values larger than 1. ","user":{"login":"YagmurGULEC","id":38396892,"node_id":"MDQ6VXNlcjM4Mzk2ODky","avatar_url":"https://avatars.githubusercontent.com/u/38396892?v=4","gravatar_id":"","url":"https://api.github.com/users/YagmurGULEC","html_url":"https://github.com/YagmurGULEC","followers_url":"https://api.github.com/users/YagmurGULEC/followers","following_url":"https://api.github.com/users/YagmurGULEC/following{/other_user}","gists_url":"https://api.github.com/users/YagmurGULEC/gists{/gist_id}","starred_url":"https://api.github.com/users/YagmurGULEC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YagmurGULEC/subscriptions","organizations_url":"https://api.github.com/users/YagmurGULEC/orgs","repos_url":"https://api.github.com/users/YagmurGULEC/repos","events_url":"https://api.github.com/users/YagmurGULEC/events{/privacy}","received_events_url":"https://api.github.com/users/YagmurGULEC/received_events","type":"User","site_admin":false},"labels":[{"id":3014566429,"node_id":"MDU6TGFiZWwzMDE0NTY2NDI5","url":"https://api.github.com/repos/rapidfuzz/Levenshtein/labels/bug","name":"bug","color":"d73a4a","default":true,"description":"Something isn't working"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-24T20:40:06Z","updated_at":"2024-03-24T23:52:30Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hello,\r\n\r\nThanks for the implementation of this library. It is very useful. I was trying to use it to find the root of a word based on similarity. However I came across with some values bigger than 1 with this setting. \r\njaro_winkler('milyarder', 'milyarderlik',prefix_weight=0.5)\r\n1.0833\r\njaro_winkler('milyarderlik','milyarder',prefix_weight=1)\r\n1.25 \r\nIn the documentation (https://rapidfuzz.github.io/Levenshtein/levenshtein.html#jaro-winkler), it is written that the jaro_winkler should be between 0 and 1. I was wondering if I put a invalid prefix weight. In this case, I assumed it should have raised a valueError as mentioned in the documentation.\r\nThanks in advance. \r\n\r\n","reactions":{"url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/63/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/63/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/comments/2016995545","html_url":"https://github.com/rapidfuzz/Levenshtein/issues/63#issuecomment-2016995545","issue_url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/63","id":2016995545,"node_id":"IC_kwDOFf6hd854OOjZ","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-24T23:52:30Z","updated_at":"2024-03-24T23:52:30Z","author_association":"MEMBER","body":"That is certainly a bug. It should make sure the score can never be larger than 1.0.","reactions":{"url":"https://api.github.com/repos/rapidfuzz/Levenshtein/issues/comments/2016995545/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-24T23:52:30Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36837491833","type":"PushEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":253007410,"name":"conda-forge/rapidfuzz-feedstock","url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock"},"payload":{"repository_id":253007410,"push_id":17684837792,"size":3,"distinct_size":3,"ref":"refs/heads/main","head":"322459ae54615e0f800e9a3ec10ee68c16bac007","before":"0f2dcbd5ba12f5c0b98d83a5acf5de16b03c3944","commits":[{"sha":"aa55fd8784a57b62a4daeda7d66d6b17ebe768c2","author":{"email":"36490558+regro-cf-autotick-bot@users.noreply.github.com","name":"regro-cf-autotick-bot"},"message":"updated v3.7.0","distinct":true,"url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/commits/aa55fd8784a57b62a4daeda7d66d6b17ebe768c2"},{"sha":"44a96123f29f49637287bb44316e063efda19734","author":{"email":"36490558+regro-cf-autotick-bot@users.noreply.github.com","name":"regro-cf-autotick-bot"},"message":"MNT: Re-rendered with conda-build 24.1.2, conda-smithy 3.33.0, and conda-forge-pinning 2024.03.24.19.14.03","distinct":true,"url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/commits/44a96123f29f49637287bb44316e063efda19734"},{"sha":"322459ae54615e0f800e9a3ec10ee68c16bac007","author":{"email":"kontakt@maxbachmann.de","name":"Max Bachmann"},"message":"Merge pull request #162 from regro-cf-autotick-bot/3.7.0_h0d2085\n\nrapidfuzz v3.7.0","distinct":true,"url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/commits/322459ae54615e0f800e9a3ec10ee68c16bac007"}]},"public":true,"created_at":"2024-03-24T23:49:58Z","org":{"id":11897326,"login":"conda-forge","gravatar_id":"","url":"https://api.github.com/orgs/conda-forge","avatar_url":"https://avatars.githubusercontent.com/u/11897326?"}},{"id":"36837491588","type":"PullRequestEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":253007410,"name":"conda-forge/rapidfuzz-feedstock","url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock"},"payload":{"action":"closed","number":162,"pull_request":{"url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/pulls/162","id":1788333253,"node_id":"PR_kwDODxSWMs5ql8zF","html_url":"https://github.com/conda-forge/rapidfuzz-feedstock/pull/162","diff_url":"https://github.com/conda-forge/rapidfuzz-feedstock/pull/162.diff","patch_url":"https://github.com/conda-forge/rapidfuzz-feedstock/pull/162.patch","issue_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/issues/162","number":162,"state":"closed","locked":false,"title":"rapidfuzz v3.7.0","user":{"login":"regro-cf-autotick-bot","id":36490558,"node_id":"MDQ6VXNlcjM2NDkwNTU4","avatar_url":"https://avatars.githubusercontent.com/u/36490558?v=4","gravatar_id":"","url":"https://api.github.com/users/regro-cf-autotick-bot","html_url":"https://github.com/regro-cf-autotick-bot","followers_url":"https://api.github.com/users/regro-cf-autotick-bot/followers","following_url":"https://api.github.com/users/regro-cf-autotick-bot/following{/other_user}","gists_url":"https://api.github.com/users/regro-cf-autotick-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/regro-cf-autotick-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/regro-cf-autotick-bot/subscriptions","organizations_url":"https://api.github.com/users/regro-cf-autotick-bot/orgs","repos_url":"https://api.github.com/users/regro-cf-autotick-bot/repos","events_url":"https://api.github.com/users/regro-cf-autotick-bot/events{/privacy}","received_events_url":"https://api.github.com/users/regro-cf-autotick-bot/received_events","type":"User","site_admin":false},"body":"It is very likely that the current package version for this feedstock is out of date.\n\nChecklist before merging this PR:\n- [ ] Dependencies have been updated if changed: see [upstream](https://github.com/maxbachmann/RapidFuzz)\n- [ ] Tests have passed \n- [ ] Updated license if changed and `license_file` is packaged \n\nInformation about this PR:\n1. Feel free to push to the bot's branch to update this PR if needed.\n2. The bot will almost always only open one PR per version.\n3. The bot will stop issuing PRs if more than 3 version bump PRs generated by the bot are open. If you don't want to package a particular version please close the PR.\n4. If you want these PRs to be merged automatically, make an issue with @conda-forge-admin,
`please add bot automerge` in the title and merge the resulting PR. This command will add our bot automerge feature to your feedstock.\n5. If this PR was opened in error or needs to be updated please add the `bot-rerun` label to this PR. The bot will close this PR and schedule another one. If you do not have permissions to add this label, you can use the phrase @conda-forge-admin, please rerun bot
in a PR comment to have the `conda-forge-admin` add it for you.\n\n\n\nDependency Analysis\n--------------------\n\nPlease note that this analysis is **highly experimental**. The aim here is to make maintenance easier by inspecting the package's dependencies. Importantly this analysis does not support optional dependencies, please double check those before making changes. If you do not want hinting of this kind ever please add `bot: inspection: disabled` to your `conda-forge.yml`. If you encounter issues with this feature please ping the bot team `conda-forge/bot`.\n\nAnalysis by source code inspection shows a discrepancy between it and the the package's stated requirements in the meta.yaml.\n\n### Packages found by source code inspection but not in the meta.yaml:\n- scikit-build\n- pyinstaller\n- packaging\n\n\nThis PR was created by the [regro-cf-autotick-bot](https://github.com/regro/cf-scripts). The **regro-cf-autotick-bot** is a service to automatically track the dependency graph, migrate packages, and propose package version updates for conda-forge. Feel free to drop us a line if there are any [issues](https://github.com/regro/cf-scripts/issues)! This PR was generated by https://github.com/regro/cf-scripts/actions/runs/8411643206, please use this URL for debugging.","created_at":"2024-03-24T19:52:28Z","updated_at":"2024-03-24T23:49:56Z","closed_at":"2024-03-24T23:49:56Z","merged_at":"2024-03-24T23:49:56Z","merge_commit_sha":"322459ae54615e0f800e9a3ec10ee68c16bac007","assignee":null,"assignees":[],"requested_reviewers":[{"login":"xylar","id":4179064,"node_id":"MDQ6VXNlcjQxNzkwNjQ=","avatar_url":"https://avatars.githubusercontent.com/u/4179064?v=4","gravatar_id":"","url":"https://api.github.com/users/xylar","html_url":"https://github.com/xylar","followers_url":"https://api.github.com/users/xylar/followers","following_url":"https://api.github.com/users/xylar/following{/other_user}","gists_url":"https://api.github.com/users/xylar/gists{/gist_id}","starred_url":"https://api.github.com/users/xylar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xylar/subscriptions","organizations_url":"https://api.github.com/users/xylar/orgs","repos_url":"https://api.github.com/users/xylar/repos","events_url":"https://api.github.com/users/xylar/events{/privacy}","received_events_url":"https://api.github.com/users/xylar/received_events","type":"User","site_admin":false},{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/pulls/162/commits","review_comments_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/pulls/162/comments","review_comment_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/pulls/comments{/number}","comments_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/issues/162/comments","statuses_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/statuses/44a96123f29f49637287bb44316e063efda19734","head":{"label":"regro-cf-autotick-bot:3.7.0_h0d2085","ref":"3.7.0_h0d2085","sha":"44a96123f29f49637287bb44316e063efda19734","user":{"login":"regro-cf-autotick-bot","id":36490558,"node_id":"MDQ6VXNlcjM2NDkwNTU4","avatar_url":"https://avatars.githubusercontent.com/u/36490558?v=4","gravatar_id":"","url":"https://api.github.com/users/regro-cf-autotick-bot","html_url":"https://github.com/regro-cf-autotick-bot","followers_url":"https://api.github.com/users/regro-cf-autotick-bot/followers","following_url":"https://api.github.com/users/regro-cf-autotick-bot/following{/other_user}","gists_url":"https://api.github.com/users/regro-cf-autotick-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/regro-cf-autotick-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/regro-cf-autotick-bot/subscriptions","organizations_url":"https://api.github.com/users/regro-cf-autotick-bot/orgs","repos_url":"https://api.github.com/users/regro-cf-autotick-bot/repos","events_url":"https://api.github.com/users/regro-cf-autotick-bot/events{/privacy}","received_events_url":"https://api.github.com/users/regro-cf-autotick-bot/received_events","type":"User","site_admin":false},"repo":{"id":253049045,"node_id":"MDEwOlJlcG9zaXRvcnkyNTMwNDkwNDU=","name":"rapidfuzz-feedstock","full_name":"regro-cf-autotick-bot/rapidfuzz-feedstock","private":false,"owner":{"login":"regro-cf-autotick-bot","id":36490558,"node_id":"MDQ6VXNlcjM2NDkwNTU4","avatar_url":"https://avatars.githubusercontent.com/u/36490558?v=4","gravatar_id":"","url":"https://api.github.com/users/regro-cf-autotick-bot","html_url":"https://github.com/regro-cf-autotick-bot","followers_url":"https://api.github.com/users/regro-cf-autotick-bot/followers","following_url":"https://api.github.com/users/regro-cf-autotick-bot/following{/other_user}","gists_url":"https://api.github.com/users/regro-cf-autotick-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/regro-cf-autotick-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/regro-cf-autotick-bot/subscriptions","organizations_url":"https://api.github.com/users/regro-cf-autotick-bot/orgs","repos_url":"https://api.github.com/users/regro-cf-autotick-bot/repos","events_url":"https://api.github.com/users/regro-cf-autotick-bot/events{/privacy}","received_events_url":"https://api.github.com/users/regro-cf-autotick-bot/received_events","type":"User","site_admin":false},"html_url":"https://github.com/regro-cf-autotick-bot/rapidfuzz-feedstock","description":"A conda-smithy repository for rapidfuzz.","fork":true,"url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock","forks_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/forks","keys_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/keys{/key_id}","collaborators_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/teams","hooks_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/hooks","issue_events_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/issues/events{/number}","events_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/events","assignees_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/assignees{/user}","branches_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/branches{/branch}","tags_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/tags","blobs_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/git/refs{/sha}","trees_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/git/trees{/sha}","statuses_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/statuses/{sha}","languages_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/languages","stargazers_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/stargazers","contributors_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/contributors","subscribers_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/subscribers","subscription_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/subscription","commits_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/commits{/sha}","git_commits_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/git/commits{/sha}","comments_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/comments{/number}","issue_comment_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/issues/comments{/number}","contents_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/contents/{+path}","compare_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/compare/{base}...{head}","merges_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/merges","archive_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/downloads","issues_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/issues{/number}","pulls_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/pulls{/number}","milestones_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/milestones{/number}","notifications_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/labels{/name}","releases_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/releases{/id}","deployments_url":"https://api.github.com/repos/regro-cf-autotick-bot/rapidfuzz-feedstock/deployments","created_at":"2020-04-04T16:43:39Z","updated_at":"2020-04-04T16:43:41Z","pushed_at":"2024-03-24T19:52:28Z","git_url":"git://github.com/regro-cf-autotick-bot/rapidfuzz-feedstock.git","ssh_url":"git@github.com:regro-cf-autotick-bot/rapidfuzz-feedstock.git","clone_url":"https://github.com/regro-cf-autotick-bot/rapidfuzz-feedstock.git","svn_url":"https://github.com/regro-cf-autotick-bot/rapidfuzz-feedstock","homepage":null,"size":267,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":[],"visibility":"public","forks":0,"open_issues":0,"watchers":0,"default_branch":"main"}},"base":{"label":"conda-forge:main","ref":"main","sha":"0f2dcbd5ba12f5c0b98d83a5acf5de16b03c3944","user":{"login":"conda-forge","id":11897326,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExODk3MzI2","avatar_url":"https://avatars.githubusercontent.com/u/11897326?v=4","gravatar_id":"","url":"https://api.github.com/users/conda-forge","html_url":"https://github.com/conda-forge","followers_url":"https://api.github.com/users/conda-forge/followers","following_url":"https://api.github.com/users/conda-forge/following{/other_user}","gists_url":"https://api.github.com/users/conda-forge/gists{/gist_id}","starred_url":"https://api.github.com/users/conda-forge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/conda-forge/subscriptions","organizations_url":"https://api.github.com/users/conda-forge/orgs","repos_url":"https://api.github.com/users/conda-forge/repos","events_url":"https://api.github.com/users/conda-forge/events{/privacy}","received_events_url":"https://api.github.com/users/conda-forge/received_events","type":"Organization","site_admin":false},"repo":{"id":253007410,"node_id":"MDEwOlJlcG9zaXRvcnkyNTMwMDc0MTA=","name":"rapidfuzz-feedstock","full_name":"conda-forge/rapidfuzz-feedstock","private":false,"owner":{"login":"conda-forge","id":11897326,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExODk3MzI2","avatar_url":"https://avatars.githubusercontent.com/u/11897326?v=4","gravatar_id":"","url":"https://api.github.com/users/conda-forge","html_url":"https://github.com/conda-forge","followers_url":"https://api.github.com/users/conda-forge/followers","following_url":"https://api.github.com/users/conda-forge/following{/other_user}","gists_url":"https://api.github.com/users/conda-forge/gists{/gist_id}","starred_url":"https://api.github.com/users/conda-forge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/conda-forge/subscriptions","organizations_url":"https://api.github.com/users/conda-forge/orgs","repos_url":"https://api.github.com/users/conda-forge/repos","events_url":"https://api.github.com/users/conda-forge/events{/privacy}","received_events_url":"https://api.github.com/users/conda-forge/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/conda-forge/rapidfuzz-feedstock","description":"A conda-smithy repository for rapidfuzz.","fork":false,"url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock","forks_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/forks","keys_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/keys{/key_id}","collaborators_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/teams","hooks_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/hooks","issue_events_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/issues/events{/number}","events_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/events","assignees_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/assignees{/user}","branches_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/branches{/branch}","tags_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/tags","blobs_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/git/refs{/sha}","trees_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/git/trees{/sha}","statuses_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/statuses/{sha}","languages_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/languages","stargazers_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/stargazers","contributors_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/contributors","subscribers_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/subscribers","subscription_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/subscription","commits_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/commits{/sha}","git_commits_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/git/commits{/sha}","comments_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/comments{/number}","issue_comment_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/issues/comments{/number}","contents_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/contents/{+path}","compare_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/compare/{base}...{head}","merges_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/merges","archive_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/downloads","issues_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/issues{/number}","pulls_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/pulls{/number}","milestones_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/milestones{/number}","notifications_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/labels{/name}","releases_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/releases{/id}","deployments_url":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/deployments","created_at":"2020-04-04T13:43:33Z","updated_at":"2023-01-31T18:03:04Z","pushed_at":"2024-03-24T23:49:57Z","git_url":"git://github.com/conda-forge/rapidfuzz-feedstock.git","ssh_url":"git@github.com:conda-forge/rapidfuzz-feedstock.git","clone_url":"https://github.com/conda-forge/rapidfuzz-feedstock.git","svn_url":"https://github.com/conda-forge/rapidfuzz-feedstock","homepage":null,"size":258,"stargazers_count":2,"watchers_count":2,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":10,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":[],"visibility":"public","forks":10,"open_issues":0,"watchers":2,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/pulls/162"},"html":{"href":"https://github.com/conda-forge/rapidfuzz-feedstock/pull/162"},"issue":{"href":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/issues/162"},"comments":{"href":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/issues/162/comments"},"review_comments":{"href":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/pulls/162/comments"},"review_comment":{"href":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/pulls/162/commits"},"statuses":{"href":"https://api.github.com/repos/conda-forge/rapidfuzz-feedstock/statuses/44a96123f29f49637287bb44316e063efda19734"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null,"merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"comments":1,"review_comments":0,"maintainer_can_modify":false,"commits":2,"additions":9,"deletions":7,"changed_files":7}},"public":true,"created_at":"2024-03-24T23:49:57Z","org":{"id":11897326,"login":"conda-forge","gravatar_id":"","url":"https://api.github.com/orgs/conda-forge","avatar_url":"https://avatars.githubusercontent.com/u/11897326?"}},{"id":"36833912795","type":"ReleaseEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"published","release":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/releases/148097719","assets_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/releases/148097719/assets","upload_url":"https://uploads.github.com/repos/rapidfuzz/RapidFuzz/releases/148097719/assets{?name,label}","html_url":"https://github.com/rapidfuzz/RapidFuzz/releases/tag/v3.7.0","id":148097719,"author":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"node_id":"RE_kwDODorr3c4I08q3","tag_name":"v3.7.0","target_commitish":"main","name":"Release 3.7.0","draft":false,"prerelease":false,"created_at":"2024-03-24T08:08:23Z","published_at":"2024-03-24T17:10:36Z","assets":[],"tarball_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/tarball/v3.7.0","zipball_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/zipball/v3.7.0","body":"## Changed\r\n* reduce import time","short_description_html":"
Changed
\n","is_short_description_html_truncated":false}},"public":true,"created_at":"2024-03-24T17:10:37Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36833912791","type":"CreateEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"ref":"v3.7.0","ref_type":"tag","master_branch":"main","description":"Rapid fuzzy string matching in Python using various string metrics","pusher_type":"user"},"public":true,"created_at":"2024-03-24T17:10:37Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36828981307","type":"PushEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"repository_id":243985373,"push_id":17679478234,"size":1,"distinct_size":1,"ref":"refs/heads/main","head":"699a41bbe16252741a1fa5c3f8e955abc450d1a7","before":"c4a5d5c4b5f3dc5dbb158a0e872301a842750d2b","commits":[{"sha":"699a41bbe16252741a1fa5c3f8e955abc450d1a7","author":{"email":"oss@maxbachmann.de","name":"Max Bachmann"},"message":"release 3.7.0","distinct":true,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits/699a41bbe16252741a1fa5c3f8e955abc450d1a7"}]},"public":true,"created_at":"2024-03-24T08:08:30Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36779786580","type":"IssuesEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"closed","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370","id":2200035075,"node_id":"I_kwDODorr3c6DId8D","number":370,"title":"Checking for NA without importing pandas","user":{"login":"char101","id":71255,"node_id":"MDQ6VXNlcjcxMjU1","avatar_url":"https://avatars.githubusercontent.com/u/71255?v=4","gravatar_id":"","url":"https://api.github.com/users/char101","html_url":"https://github.com/char101","followers_url":"https://api.github.com/users/char101/followers","following_url":"https://api.github.com/users/char101/following{/other_user}","gists_url":"https://api.github.com/users/char101/gists{/gist_id}","starred_url":"https://api.github.com/users/char101/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/char101/subscriptions","organizations_url":"https://api.github.com/users/char101/orgs","repos_url":"https://api.github.com/users/char101/repos","events_url":"https://api.github.com/users/char101/events{/privacy}","received_events_url":"https://api.github.com/users/char101/received_events","type":"User","site_admin":false},"labels":[{"id":1879006909,"node_id":"MDU6TGFiZWwxODc5MDA2OTA5","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":"New feature or request"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-03-21T12:16:08Z","updated_at":"2024-03-21T23:25:51Z","closed_at":"2024-03-21T23:25:50Z","author_association":"NONE","active_lock_reason":null,"body":"Hi,\r\n\r\nImporting `pandas` requires about 500ms on my machine. 500ms might not be long but for a GUI application that need to be restarted over and over it might increase the startup time. Since pandas is only used to check for `NA`, do you think it is possible to use another way to check for `NA` without importing `pandas`.\r\n\r\nFor example\r\n\r\n```python\r\ntype(s) == 'pandas._libs.missing.NAType'\r\n\r\nstr(s) == ''\r\n\r\nNA_hash = (2 ** 61 - 1) if sys.maxsize > 2 ** 32 else (2 ** 31 - 1)\r\nhash(s) == NA_hash\r\n```\r\n\r\n`pandas` can also only be imported when it is already in `sys.modules` thus making `pandas` import zero cost. So something like\r\n\r\n```python\r\nif 'pandas' in sys.modules:\r\n import pandas\r\n pandas_NA = pandas.NA\r\nelse:\r\n pandas_NA = None\r\n\r\ndef is_none(s):\r\n return s is None or s is pandas_NA or type(s) == 'pandas._libs.missing.NAType'\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/timeline","performed_via_github_app":null,"state_reason":"completed"}},"public":true,"created_at":"2024-03-21T23:25:51Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36779786591","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370","id":2200035075,"node_id":"I_kwDODorr3c6DId8D","number":370,"title":"Checking for NA without importing pandas","user":{"login":"char101","id":71255,"node_id":"MDQ6VXNlcjcxMjU1","avatar_url":"https://avatars.githubusercontent.com/u/71255?v=4","gravatar_id":"","url":"https://api.github.com/users/char101","html_url":"https://github.com/char101","followers_url":"https://api.github.com/users/char101/followers","following_url":"https://api.github.com/users/char101/following{/other_user}","gists_url":"https://api.github.com/users/char101/gists{/gist_id}","starred_url":"https://api.github.com/users/char101/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/char101/subscriptions","organizations_url":"https://api.github.com/users/char101/orgs","repos_url":"https://api.github.com/users/char101/repos","events_url":"https://api.github.com/users/char101/events{/privacy}","received_events_url":"https://api.github.com/users/char101/received_events","type":"User","site_admin":false},"labels":[{"id":1879006909,"node_id":"MDU6TGFiZWwxODc5MDA2OTA5","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":"New feature or request"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2024-03-21T12:16:08Z","updated_at":"2024-03-21T23:25:51Z","closed_at":"2024-03-21T23:25:50Z","author_association":"NONE","active_lock_reason":null,"body":"Hi,\r\n\r\nImporting `pandas` requires about 500ms on my machine. 500ms might not be long but for a GUI application that need to be restarted over and over it might increase the startup time. Since pandas is only used to check for `NA`, do you think it is possible to use another way to check for `NA` without importing `pandas`.\r\n\r\nFor example\r\n\r\n```python\r\ntype(s) == 'pandas._libs.missing.NAType'\r\n\r\nstr(s) == ''\r\n\r\nNA_hash = (2 ** 61 - 1) if sys.maxsize > 2 ** 32 else (2 ** 31 - 1)\r\nhash(s) == NA_hash\r\n```\r\n\r\n`pandas` can also only be imported when it is already in `sys.modules` thus making `pandas` import zero cost. So something like\r\n\r\n```python\r\nif 'pandas' in sys.modules:\r\n import pandas\r\n pandas_NA = pandas.NA\r\nelse:\r\n pandas_NA = None\r\n\r\ndef is_none(s):\r\n return s is None or s is pandas_NA or type(s) == 'pandas._libs.missing.NAType'\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/timeline","performed_via_github_app":null,"state_reason":"completed"},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2014038813","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370#issuecomment-2014038813","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","id":2014038813,"node_id":"IC_kwDODorr3c54C8sd","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T23:25:51Z","updated_at":"2024-03-21T23:25:51Z","author_association":"MEMBER","body":"After thinking about this a bit more, I decided that the hook into `sys.meta_path` is a bit too risky and could break things for users. So I decided to go with the initial approach of checking `sys.modules`.\r\n\r\nI will probably make a release with the change later this week.","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2014038813/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-21T23:25:51Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36779521502","type":"PushEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"repository_id":243985373,"push_id":17653770272,"size":2,"distinct_size":2,"ref":"refs/heads/main","head":"c4a5d5c4b5f3dc5dbb158a0e872301a842750d2b","before":"fae6d6b75ac1106ccb494bc9ba73736e35242712","commits":[{"sha":"adf747b3bf65f0dbc7bb16a280d705f65a41ce19","author":{"email":"oss@maxbachmann.de","name":"Max Bachmann"},"message":"reduce imports to reduce import time","distinct":true,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits/adf747b3bf65f0dbc7bb16a280d705f65a41ce19"},{"sha":"c4a5d5c4b5f3dc5dbb158a0e872301a842750d2b","author":{"email":"oss@maxbachmann.de","name":"Max Bachmann"},"message":"slightly improve typing","distinct":true,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits/c4a5d5c4b5f3dc5dbb158a0e872301a842750d2b"}]},"public":true,"created_at":"2024-03-21T23:13:52Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36769918351","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370","id":2200035075,"node_id":"I_kwDODorr3c6DId8D","number":370,"title":"Checking for NA without importing pandas","user":{"login":"char101","id":71255,"node_id":"MDQ6VXNlcjcxMjU1","avatar_url":"https://avatars.githubusercontent.com/u/71255?v=4","gravatar_id":"","url":"https://api.github.com/users/char101","html_url":"https://github.com/char101","followers_url":"https://api.github.com/users/char101/followers","following_url":"https://api.github.com/users/char101/following{/other_user}","gists_url":"https://api.github.com/users/char101/gists{/gist_id}","starred_url":"https://api.github.com/users/char101/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/char101/subscriptions","organizations_url":"https://api.github.com/users/char101/orgs","repos_url":"https://api.github.com/users/char101/repos","events_url":"https://api.github.com/users/char101/events{/privacy}","received_events_url":"https://api.github.com/users/char101/received_events","type":"User","site_admin":false},"labels":[{"id":1879006909,"node_id":"MDU6TGFiZWwxODc5MDA2OTA5","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":"New feature or request"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2024-03-21T12:16:08Z","updated_at":"2024-03-21T17:06:27Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hi,\r\n\r\nImporting `pandas` requires about 500ms on my machine. 500ms might not be long but for a GUI application that need to be restarted over and over it might increase the startup time. Since pandas is only used to check for `NA`, do you think it is possible to use another way to check for `NA` without importing `pandas`.\r\n\r\nFor example\r\n\r\n```python\r\ntype(s) == 'pandas._libs.missing.NAType'\r\n\r\nstr(s) == ''\r\n\r\nNA_hash = (2 ** 61 - 1) if sys.maxsize > 2 ** 32 else (2 ** 31 - 1)\r\nhash(s) == NA_hash\r\n```\r\n\r\n`pandas` can also only be imported when it is already in `sys.modules` thus making `pandas` import zero cost. So something like\r\n\r\n```python\r\nif 'pandas' in sys.modules:\r\n import pandas\r\n pandas_NA = pandas.NA\r\nelse:\r\n pandas_NA = None\r\n\r\ndef is_none(s):\r\n return s is None or s is pandas_NA or type(s) == 'pandas._libs.missing.NAType'\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2013046913","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370#issuecomment-2013046913","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","id":2013046913,"node_id":"IC_kwDODorr3c53_KiB","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T17:06:27Z","updated_at":"2024-03-21T17:06:27Z","author_association":"MEMBER","body":"Yes that's likely faster :+1:","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2013046913/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-21T17:06:28Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36769366329","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370","id":2200035075,"node_id":"I_kwDODorr3c6DId8D","number":370,"title":"Checking for NA without importing pandas","user":{"login":"char101","id":71255,"node_id":"MDQ6VXNlcjcxMjU1","avatar_url":"https://avatars.githubusercontent.com/u/71255?v=4","gravatar_id":"","url":"https://api.github.com/users/char101","html_url":"https://github.com/char101","followers_url":"https://api.github.com/users/char101/followers","following_url":"https://api.github.com/users/char101/following{/other_user}","gists_url":"https://api.github.com/users/char101/gists{/gist_id}","starred_url":"https://api.github.com/users/char101/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/char101/subscriptions","organizations_url":"https://api.github.com/users/char101/orgs","repos_url":"https://api.github.com/users/char101/repos","events_url":"https://api.github.com/users/char101/events{/privacy}","received_events_url":"https://api.github.com/users/char101/received_events","type":"User","site_admin":false},"labels":[{"id":1879006909,"node_id":"MDU6TGFiZWwxODc5MDA2OTA5","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":"New feature or request"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2024-03-21T12:16:08Z","updated_at":"2024-03-21T16:49:52Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hi,\r\n\r\nImporting `pandas` requires about 500ms on my machine. 500ms might not be long but for a GUI application that need to be restarted over and over it might increase the startup time. Since pandas is only used to check for `NA`, do you think it is possible to use another way to check for `NA` without importing `pandas`.\r\n\r\nFor example\r\n\r\n```python\r\ntype(s) == 'pandas._libs.missing.NAType'\r\n\r\nstr(s) == ''\r\n\r\nNA_hash = (2 ** 61 - 1) if sys.maxsize > 2 ** 32 else (2 ** 31 - 1)\r\nhash(s) == NA_hash\r\n```\r\n\r\n`pandas` can also only be imported when it is already in `sys.modules` thus making `pandas` import zero cost. So something like\r\n\r\n```python\r\nif 'pandas' in sys.modules:\r\n import pandas\r\n pandas_NA = pandas.NA\r\nelse:\r\n pandas_NA = None\r\n\r\ndef is_none(s):\r\n return s is None or s is pandas_NA or type(s) == 'pandas._libs.missing.NAType'\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2012979829","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370#issuecomment-2012979829","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","id":2012979829,"node_id":"IC_kwDODorr3c53-6J1","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T16:49:52Z","updated_at":"2024-03-21T16:49:52Z","author_association":"MEMBER","body":"In a quick test `\"pandas\" in sys.modules` took around 14ns, while `fullname.startswith('pandas.')` took around 40ns. So I think I will just leave it out.","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2012979829/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-21T16:49:53Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36769142941","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370","id":2200035075,"node_id":"I_kwDODorr3c6DId8D","number":370,"title":"Checking for NA without importing pandas","user":{"login":"char101","id":71255,"node_id":"MDQ6VXNlcjcxMjU1","avatar_url":"https://avatars.githubusercontent.com/u/71255?v=4","gravatar_id":"","url":"https://api.github.com/users/char101","html_url":"https://github.com/char101","followers_url":"https://api.github.com/users/char101/followers","following_url":"https://api.github.com/users/char101/following{/other_user}","gists_url":"https://api.github.com/users/char101/gists{/gist_id}","starred_url":"https://api.github.com/users/char101/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/char101/subscriptions","organizations_url":"https://api.github.com/users/char101/orgs","repos_url":"https://api.github.com/users/char101/repos","events_url":"https://api.github.com/users/char101/events{/privacy}","received_events_url":"https://api.github.com/users/char101/received_events","type":"User","site_admin":false},"labels":[{"id":1879006909,"node_id":"MDU6TGFiZWwxODc5MDA2OTA5","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":"New feature or request"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2024-03-21T12:16:08Z","updated_at":"2024-03-21T16:43:01Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hi,\r\n\r\nImporting `pandas` requires about 500ms on my machine. 500ms might not be long but for a GUI application that need to be restarted over and over it might increase the startup time. Since pandas is only used to check for `NA`, do you think it is possible to use another way to check for `NA` without importing `pandas`.\r\n\r\nFor example\r\n\r\n```python\r\ntype(s) == 'pandas._libs.missing.NAType'\r\n\r\nstr(s) == ''\r\n\r\nNA_hash = (2 ** 61 - 1) if sys.maxsize > 2 ** 32 else (2 ** 31 - 1)\r\nhash(s) == NA_hash\r\n```\r\n\r\n`pandas` can also only be imported when it is already in `sys.modules` thus making `pandas` import zero cost. So something like\r\n\r\n```python\r\nif 'pandas' in sys.modules:\r\n import pandas\r\n pandas_NA = pandas.NA\r\nelse:\r\n pandas_NA = None\r\n\r\ndef is_none(s):\r\n return s is None or s is pandas_NA or type(s) == 'pandas._libs.missing.NAType'\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2012952996","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370#issuecomment-2012952996","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","id":2012952996,"node_id":"IC_kwDODorr3c53-zmk","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T16:43:01Z","updated_at":"2024-03-21T16:43:01Z","author_association":"MEMBER","body":"Yes but that's already checked by `'pandas' in sys.modules and hasattr(sys.modules['pandas'], 'NA')` as well. The addition of `fullname.startswith('pandas.')` only avoids running `'pandas' in sys.modules` when not importing pandas as far as I understand.\r\n\r\nHowever from what I can tell the hashmap lookup should actually be faster, so I was a bit confused by the string comparison.","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2012952996/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-21T16:43:01Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36768758068","type":"PullRequestEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"closed","number":369,"pull_request":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/369","id":1776350076,"node_id":"PR_kwDODorr3c5p4PN8","html_url":"https://github.com/rapidfuzz/RapidFuzz/pull/369","diff_url":"https://github.com/rapidfuzz/RapidFuzz/pull/369.diff","patch_url":"https://github.com/rapidfuzz/RapidFuzz/pull/369.patch","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/369","number":369,"state":"closed","locked":false,"title":"Bump the github-actions group with 1 update","user":{"login":"dependabot[bot]","id":49699333,"node_id":"MDM6Qm90NDk2OTkzMzM=","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4","gravatar_id":"","url":"https://api.github.com/users/dependabot%5Bbot%5D","html_url":"https://github.com/apps/dependabot","followers_url":"https://api.github.com/users/dependabot%5Bbot%5D/followers","following_url":"https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dependabot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/dependabot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/dependabot%5Bbot%5D/repos","events_url":"https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/dependabot%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Bumps the github-actions group with 1 update: [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel).\n\nUpdates `pypa/cibuildwheel` from 2.16.5 to 2.17.0\n\nRelease notes
\nSourced from pypa/cibuildwheel's releases.
\n\nv2.17.0
\n\n- 🌟 Adds the ability to inherit configuration in TOML overrides. This makes certain configurations much simpler. If you're overriding an option like
before-build
or environment
, and you just want to add an extra command or environment variable, you can just append (or prepend) to the previous config. See the docs for more information. (#1730) \n- 🌟 Adds official support for native arm64 macOS GitHub runners. To use them, just specify
macos-14
as an os
of your job in your workflow file. You can also keep macos-13
in your build matrix to build x86_64. Check out the new GitHub Actions example config. \n- ✨ You no longer need to specify
--platform
to run cibuildwheel locally! Instead it will detect your platform automatically. This was a safety feature, no longer necessary. (#1727) \n- 🛠 Removed setuptools and wheel pinned versions. This only affects old-style projects without a
pyproject.toml
, projects with pyproject.toml
are already getting fresh versions of their build-system.requires
installed into an isolated environment. (#1725) \n- 🛠 Improve how the GitHub Action passes arguments (#1757)
\n- 🛠 Remove a system-wide install of pipx in the GitHub Action (#1745)
\n- 🐛 No longer will cibuildwheel override the PIP_CONSTRAINT environment variable when using the
build
frontend. Instead it will be extended. (#1675) \n- 🐛 Fix a bug where building and testing both x86_86 and arm64 wheels on the same runner caused the wrong architectures in the test environment (#1750)
\n- 🐛 Fix a bug that prevented testing a CPython 3.8 wheel targeting macOS 11+ on x86_64 (#1768)
\n- 📚 Moved the docs onto the official PyPA domain - they're now available at https://cibuildwheel.pypa.io . (#1775)
\n- 📚 Docs and examples improvements (#1762, #1734)
\n
\n
\n \n\nChangelog
\nSourced from pypa/cibuildwheel's changelog.
\n\nv2.17.0
\n11 March 2024
\n\n- 🌟 Adds the ability to inherit configuration in TOML overrides. This makes certain configurations much simpler. If you're overriding an option like
before-build
or environment
, and you just want to add an extra command or environment variable, you can just append (or prepend) to the previous config. See the docs for more information. (#1730) \n- 🌟 Adds official support for native arm64 macOS GitHub runners. To use them, just specify
macos-14
as an os
of your job in your workflow file. You can also keep macos-13
in your build matrix to build x86_64. Check out the new GitHub Actions example config. \n- ✨ You no longer need to specify
--platform
to run cibuildwheel locally! Instead it will detect your platform automatically. This was a safety feature, no longer necessary. (#1727) \n- 🛠 Removed setuptools and wheel pinned versions. This only affects old-style projects without a
pyproject.toml
, projects with pyproject.toml
are already getting fresh versions of their build-system.requires
installed into an isolated environment. (#1725) \n- 🛠 Improve how the GitHub Action passes arguments (#1757)
\n- 🛠 Remove a system-wide install of pipx in the GitHub Action (#1745)
\n- 🐛 No longer will cibuildwheel override the PIP_CONSTRAINT environment variable when using the
build
frontend. Instead it will be extended. (#1675) \n- 🐛 Fix a bug where building and testing both x86_86 and arm64 wheels on the same runner caused the wrong architectures in the test environment (#1750)
\n- 🐛 Fix a bug that prevented testing a CPython 3.8 wheel targeting macOS 11+ on x86_64 (#1768)
\n- 📚 Moved the docs onto the official PyPA domain - they're now available at https://cibuildwheel.pypa.io . (#1775)
\n- 📚 Docs and examples improvements (#1762, #1734)
\n
\n
\n \n\nCommits
\n\n \n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pypa/cibuildwheel&package-manager=github_actions&previous-version=2.16.5&new-version=2.17.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\nDependabot commands and options
\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n ","created_at":"2024-03-18T01:09:35Z","updated_at":"2024-03-21T16:31:30Z","closed_at":"2024-03-21T16:31:30Z","merged_at":"2024-03-21T16:31:30Z","merge_commit_sha":"fae6d6b75ac1106ccb494bc9ba73736e35242712","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":6659900531,"node_id":"LA_kwDODorr3c8AAAABjPYEcw","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/369/commits","review_comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/369/comments","review_comment_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/369/comments","statuses_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/statuses/d29dac746281cf68317021926db12af7d68652cc","head":{"label":"rapidfuzz:dependabot/github_actions/github-actions-baff653842","ref":"dependabot/github_actions/github-actions-baff653842","sha":"d29dac746281cf68317021926db12af7d68652cc","user":{"login":"rapidfuzz","id":118009645,"node_id":"O_kgDOBwivLQ","avatar_url":"https://avatars.githubusercontent.com/u/118009645?v=4","gravatar_id":"","url":"https://api.github.com/users/rapidfuzz","html_url":"https://github.com/rapidfuzz","followers_url":"https://api.github.com/users/rapidfuzz/followers","following_url":"https://api.github.com/users/rapidfuzz/following{/other_user}","gists_url":"https://api.github.com/users/rapidfuzz/gists{/gist_id}","starred_url":"https://api.github.com/users/rapidfuzz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapidfuzz/subscriptions","organizations_url":"https://api.github.com/users/rapidfuzz/orgs","repos_url":"https://api.github.com/users/rapidfuzz/repos","events_url":"https://api.github.com/users/rapidfuzz/events{/privacy}","received_events_url":"https://api.github.com/users/rapidfuzz/received_events","type":"Organization","site_admin":false},"repo":{"id":243985373,"node_id":"MDEwOlJlcG9zaXRvcnkyNDM5ODUzNzM=","name":"RapidFuzz","full_name":"rapidfuzz/RapidFuzz","private":false,"owner":{"login":"rapidfuzz","id":118009645,"node_id":"O_kgDOBwivLQ","avatar_url":"https://avatars.githubusercontent.com/u/118009645?v=4","gravatar_id":"","url":"https://api.github.com/users/rapidfuzz","html_url":"https://github.com/rapidfuzz","followers_url":"https://api.github.com/users/rapidfuzz/followers","following_url":"https://api.github.com/users/rapidfuzz/following{/other_user}","gists_url":"https://api.github.com/users/rapidfuzz/gists{/gist_id}","starred_url":"https://api.github.com/users/rapidfuzz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapidfuzz/subscriptions","organizations_url":"https://api.github.com/users/rapidfuzz/orgs","repos_url":"https://api.github.com/users/rapidfuzz/repos","events_url":"https://api.github.com/users/rapidfuzz/events{/privacy}","received_events_url":"https://api.github.com/users/rapidfuzz/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rapidfuzz/RapidFuzz","description":"Rapid fuzzy string matching in Python using various string metrics","fork":false,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","forks_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/forks","keys_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/teams","hooks_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/hooks","issue_events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/events{/number}","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/events","assignees_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/assignees{/user}","branches_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/branches{/branch}","tags_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/tags","blobs_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/refs{/sha}","trees_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/statuses/{sha}","languages_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/languages","stargazers_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/stargazers","contributors_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/contributors","subscribers_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/subscribers","subscription_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/subscription","commits_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits{/sha}","git_commits_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/commits{/sha}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/comments{/number}","issue_comment_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments{/number}","contents_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/contents/{+path}","compare_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/merges","archive_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/downloads","issues_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues{/number}","pulls_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls{/number}","milestones_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/milestones{/number}","notifications_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels{/name}","releases_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/releases{/id}","deployments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/deployments","created_at":"2020-02-29T14:41:44Z","updated_at":"2024-03-21T05:56:00Z","pushed_at":"2024-03-21T16:31:30Z","git_url":"git://github.com/rapidfuzz/RapidFuzz.git","ssh_url":"git@github.com:rapidfuzz/RapidFuzz.git","clone_url":"https://github.com/rapidfuzz/RapidFuzz.git","svn_url":"https://github.com/rapidfuzz/RapidFuzz","homepage":"https://rapidfuzz.github.io/RapidFuzz/","size":7557,"stargazers_count":2295,"watchers_count":2295,"language":"C++","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"has_discussions":true,"forks_count":102,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":24,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["cpp","levenshtein","levenshtein-distance","python","string-comparison","string-matching","string-similarity"],"visibility":"public","forks":102,"open_issues":24,"watchers":2295,"default_branch":"main"}},"base":{"label":"rapidfuzz:main","ref":"main","sha":"af9e1b76bea9c6f5dcfd7bf37f2ab571fef4d8f7","user":{"login":"rapidfuzz","id":118009645,"node_id":"O_kgDOBwivLQ","avatar_url":"https://avatars.githubusercontent.com/u/118009645?v=4","gravatar_id":"","url":"https://api.github.com/users/rapidfuzz","html_url":"https://github.com/rapidfuzz","followers_url":"https://api.github.com/users/rapidfuzz/followers","following_url":"https://api.github.com/users/rapidfuzz/following{/other_user}","gists_url":"https://api.github.com/users/rapidfuzz/gists{/gist_id}","starred_url":"https://api.github.com/users/rapidfuzz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapidfuzz/subscriptions","organizations_url":"https://api.github.com/users/rapidfuzz/orgs","repos_url":"https://api.github.com/users/rapidfuzz/repos","events_url":"https://api.github.com/users/rapidfuzz/events{/privacy}","received_events_url":"https://api.github.com/users/rapidfuzz/received_events","type":"Organization","site_admin":false},"repo":{"id":243985373,"node_id":"MDEwOlJlcG9zaXRvcnkyNDM5ODUzNzM=","name":"RapidFuzz","full_name":"rapidfuzz/RapidFuzz","private":false,"owner":{"login":"rapidfuzz","id":118009645,"node_id":"O_kgDOBwivLQ","avatar_url":"https://avatars.githubusercontent.com/u/118009645?v=4","gravatar_id":"","url":"https://api.github.com/users/rapidfuzz","html_url":"https://github.com/rapidfuzz","followers_url":"https://api.github.com/users/rapidfuzz/followers","following_url":"https://api.github.com/users/rapidfuzz/following{/other_user}","gists_url":"https://api.github.com/users/rapidfuzz/gists{/gist_id}","starred_url":"https://api.github.com/users/rapidfuzz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapidfuzz/subscriptions","organizations_url":"https://api.github.com/users/rapidfuzz/orgs","repos_url":"https://api.github.com/users/rapidfuzz/repos","events_url":"https://api.github.com/users/rapidfuzz/events{/privacy}","received_events_url":"https://api.github.com/users/rapidfuzz/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rapidfuzz/RapidFuzz","description":"Rapid fuzzy string matching in Python using various string metrics","fork":false,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","forks_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/forks","keys_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/teams","hooks_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/hooks","issue_events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/events{/number}","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/events","assignees_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/assignees{/user}","branches_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/branches{/branch}","tags_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/tags","blobs_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/refs{/sha}","trees_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/statuses/{sha}","languages_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/languages","stargazers_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/stargazers","contributors_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/contributors","subscribers_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/subscribers","subscription_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/subscription","commits_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits{/sha}","git_commits_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/commits{/sha}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/comments{/number}","issue_comment_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments{/number}","contents_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/contents/{+path}","compare_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/merges","archive_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/downloads","issues_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues{/number}","pulls_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls{/number}","milestones_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/milestones{/number}","notifications_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels{/name}","releases_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/releases{/id}","deployments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/deployments","created_at":"2020-02-29T14:41:44Z","updated_at":"2024-03-21T05:56:00Z","pushed_at":"2024-03-21T16:31:30Z","git_url":"git://github.com/rapidfuzz/RapidFuzz.git","ssh_url":"git@github.com:rapidfuzz/RapidFuzz.git","clone_url":"https://github.com/rapidfuzz/RapidFuzz.git","svn_url":"https://github.com/rapidfuzz/RapidFuzz","homepage":"https://rapidfuzz.github.io/RapidFuzz/","size":7557,"stargazers_count":2295,"watchers_count":2295,"language":"C++","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"has_discussions":true,"forks_count":102,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":24,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["cpp","levenshtein","levenshtein-distance","python","string-comparison","string-matching","string-similarity"],"visibility":"public","forks":102,"open_issues":24,"watchers":2295,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/369"},"html":{"href":"https://github.com/rapidfuzz/RapidFuzz/pull/369"},"issue":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/369"},"comments":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/369/comments"},"review_comments":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/369/comments"},"review_comment":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/369/commits"},"statuses":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/statuses/d29dac746281cf68317021926db12af7d68652cc"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null,"merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":3,"deletions":3,"changed_files":1}},"public":true,"created_at":"2024-03-21T16:31:31Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36768758562","type":"PushEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"repository_id":243985373,"push_id":17648866463,"size":1,"distinct_size":1,"ref":"refs/heads/main","head":"fae6d6b75ac1106ccb494bc9ba73736e35242712","before":"af9e1b76bea9c6f5dcfd7bf37f2ab571fef4d8f7","commits":[{"sha":"fae6d6b75ac1106ccb494bc9ba73736e35242712","author":{"email":"49699333+dependabot[bot]@users.noreply.github.com","name":"dependabot[bot]"},"message":"Bump the github-actions group with 1 update\n\nBumps the github-actions group with 1 update: [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel).\n\n\nUpdates `pypa/cibuildwheel` from 2.16.5 to 2.17.0\n- [Release notes](https://github.com/pypa/cibuildwheel/releases)\n- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)\n- [Commits](https://github.com/pypa/cibuildwheel/compare/v2.16.5...v2.17.0)\n\n---\nupdated-dependencies:\n- dependency-name: pypa/cibuildwheel\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] ","distinct":true,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits/fae6d6b75ac1106ccb494bc9ba73736e35242712"}]},"public":true,"created_at":"2024-03-21T16:31:31Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36768645426","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370","id":2200035075,"node_id":"I_kwDODorr3c6DId8D","number":370,"title":"Checking for NA without importing pandas","user":{"login":"char101","id":71255,"node_id":"MDQ6VXNlcjcxMjU1","avatar_url":"https://avatars.githubusercontent.com/u/71255?v=4","gravatar_id":"","url":"https://api.github.com/users/char101","html_url":"https://github.com/char101","followers_url":"https://api.github.com/users/char101/followers","following_url":"https://api.github.com/users/char101/following{/other_user}","gists_url":"https://api.github.com/users/char101/gists{/gist_id}","starred_url":"https://api.github.com/users/char101/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/char101/subscriptions","organizations_url":"https://api.github.com/users/char101/orgs","repos_url":"https://api.github.com/users/char101/repos","events_url":"https://api.github.com/users/char101/events{/privacy}","received_events_url":"https://api.github.com/users/char101/received_events","type":"User","site_admin":false},"labels":[{"id":1879006909,"node_id":"MDU6TGFiZWwxODc5MDA2OTA5","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":"New feature or request"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-03-21T12:16:08Z","updated_at":"2024-03-21T16:28:16Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hi,\r\n\r\nImporting `pandas` requires about 500ms on my machine. 500ms might not be long but for a GUI application that need to be restarted over and over it might increase the startup time. Since pandas is only used to check for `NA`, do you think it is possible to use another way to check for `NA` without importing `pandas`.\r\n\r\nFor example\r\n\r\n```python\r\ntype(s) == 'pandas._libs.missing.NAType'\r\n\r\nstr(s) == ''\r\n\r\nNA_hash = (2 ** 61 - 1) if sys.maxsize > 2 ** 32 else (2 ** 31 - 1)\r\nhash(s) == NA_hash\r\n```\r\n\r\n`pandas` can also only be imported when it is already in `sys.modules` thus making `pandas` import zero cost. So something like\r\n\r\n```python\r\nif 'pandas' in sys.modules:\r\n import pandas\r\n pandas_NA = pandas.NA\r\nelse:\r\n pandas_NA = None\r\n\r\ndef is_none(s):\r\n return s is None or s is pandas_NA or type(s) == 'pandas._libs.missing.NAType'\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2012894942","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370#issuecomment-2012894942","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","id":2012894942,"node_id":"IC_kwDODorr3c53-lbe","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T16:28:16Z","updated_at":"2024-03-21T16:28:16Z","author_association":"MEMBER","body":"What's the reason behind `fullname.startswith('pandas.')`? Does this allow any faster exit than `'pandas' in sys.modules` in the case that pandas is not imported?","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2012894942/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-21T16:28:16Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36767711005","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370","id":2200035075,"node_id":"I_kwDODorr3c6DId8D","number":370,"title":"Checking for NA without importing pandas","user":{"login":"char101","id":71255,"node_id":"MDQ6VXNlcjcxMjU1","avatar_url":"https://avatars.githubusercontent.com/u/71255?v=4","gravatar_id":"","url":"https://api.github.com/users/char101","html_url":"https://github.com/char101","followers_url":"https://api.github.com/users/char101/followers","following_url":"https://api.github.com/users/char101/following{/other_user}","gists_url":"https://api.github.com/users/char101/gists{/gist_id}","starred_url":"https://api.github.com/users/char101/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/char101/subscriptions","organizations_url":"https://api.github.com/users/char101/orgs","repos_url":"https://api.github.com/users/char101/repos","events_url":"https://api.github.com/users/char101/events{/privacy}","received_events_url":"https://api.github.com/users/char101/received_events","type":"User","site_admin":false},"labels":[{"id":1879006909,"node_id":"MDU6TGFiZWwxODc5MDA2OTA5","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":"New feature or request"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-03-21T12:16:08Z","updated_at":"2024-03-21T16:02:00Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hi,\r\n\r\nImporting `pandas` requires about 500ms on my machine. 500ms might not be long but for a GUI application that need to be restarted over and over it might increase the startup time. Since pandas is only used to check for `NA`, do you think it is possible to use another way to check for `NA` without importing `pandas`.\r\n\r\nFor example\r\n\r\n```python\r\ntype(s) == 'pandas._libs.missing.NAType'\r\n\r\nstr(s) == ''\r\n\r\nNA_hash = (2 ** 61 - 1) if sys.maxsize > 2 ** 32 else (2 ** 31 - 1)\r\nhash(s) == NA_hash\r\n```\r\n\r\n`pandas` can also only be imported when it is already in `sys.modules` thus making `pandas` import zero cost. So something like\r\n\r\n```python\r\nif 'pandas' in sys.modules:\r\n import pandas\r\n pandas_NA = pandas.NA\r\nelse:\r\n pandas_NA = None\r\n\r\ndef is_none(s):\r\n return s is None or s is pandas_NA or type(s) == 'pandas._libs.missing.NAType'\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2012784904","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370#issuecomment-2012784904","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","id":2012784904,"node_id":"IC_kwDODorr3c53-KkI","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T16:02:00Z","updated_at":"2024-03-21T16:02:00Z","author_association":"MEMBER","body":"Wow didn't know about this. Pretty sure that's what I will go with.","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2012784904/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-21T16:02:01Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36764977295","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370","id":2200035075,"node_id":"I_kwDODorr3c6DId8D","number":370,"title":"Checking for NA without importing pandas","user":{"login":"char101","id":71255,"node_id":"MDQ6VXNlcjcxMjU1","avatar_url":"https://avatars.githubusercontent.com/u/71255?v=4","gravatar_id":"","url":"https://api.github.com/users/char101","html_url":"https://github.com/char101","followers_url":"https://api.github.com/users/char101/followers","following_url":"https://api.github.com/users/char101/following{/other_user}","gists_url":"https://api.github.com/users/char101/gists{/gist_id}","starred_url":"https://api.github.com/users/char101/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/char101/subscriptions","organizations_url":"https://api.github.com/users/char101/orgs","repos_url":"https://api.github.com/users/char101/repos","events_url":"https://api.github.com/users/char101/events{/privacy}","received_events_url":"https://api.github.com/users/char101/received_events","type":"User","site_admin":false},"labels":[{"id":1879006909,"node_id":"MDU6TGFiZWwxODc5MDA2OTA5","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":"New feature or request"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-21T12:16:08Z","updated_at":"2024-03-21T14:51:37Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hi,\r\n\r\nImporting `pandas` requires about 500ms on my machine. 500ms might not be long but for a GUI application that need to be restarted over and over it might increase the startup time. Since pandas is only used to check for `NA`, do you think it is possible to use another way to check for `NA` without importing `pandas`.\r\n\r\nFor example\r\n\r\n```python\r\ntype(s) == 'pandas._libs.missing.NAType'\r\n\r\nstr(s) == ''\r\n\r\nNA_hash = (2 ** 61 - 1) if sys.maxsize > 2 ** 32 else (2 ** 31 - 1)\r\nhash(s) == NA_hash\r\n```\r\n\r\n`pandas` can also only be imported when it is already in `sys.modules` thus making `pandas` import zero cost. So something like\r\n\r\n```python\r\nif 'pandas' in sys.modules:\r\n import pandas\r\n pandas_NA = pandas.NA\r\nelse:\r\n pandas_NA = None\r\n\r\ndef is_none(s):\r\n return s is None or s is pandas_NA or type(s) == 'pandas._libs.missing.NAType'\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2012513181","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/370#issuecomment-2012513181","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/370","id":2012513181,"node_id":"IC_kwDODorr3c539IOd","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-21T14:51:36Z","updated_at":"2024-03-21T14:51:36Z","author_association":"MEMBER","body":"From your suggestions I think comparing the type would be the only option that is at all feasible. It would need to be done as:\r\n```python\r\ntype_ = type(s)\r\nif type_.__module__ == 'pandas._libs.missing' and type_.__name__ == 'NAType':\r\n return True\r\n```\r\nthough. This costs quite a bit of performance `process.extract(\"a\", [\"a\"]*10000)` takes 0.6ms instead of 0.46ms, which is around 30% slower. So I would need to move e.g the None check after the string check to reduce this impact (which could make sense anyways since strings are much more likely than None).\r\n\r\n\r\nOne idea I had is something like the following:\r\n```python\r\nif 'pandas' in sys.modules:\r\n import pandas\r\n pandas_NA = pandas.NA\r\nelse:\r\n pandas_NA = None\r\n\r\ndef extract(...):\r\n if pandas_NA is None and 'pandas' in sys.modules:\r\n import pandas\r\n global pandas_NA\r\n pandas_NA = pandas.NA\r\n```\r\nI will experiment around with this this evening.\r\n\r\n","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/2012513181/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-21T14:51:37Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36513082285","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/368","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/368/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/368/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/368/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/368","id":2183114382,"node_id":"I_kwDODorr3c6CH66O","number":368,"title":"Processor Extraction Choices Documentation","user":{"login":"Scrxtchy","id":12771982,"node_id":"MDQ6VXNlcjEyNzcxOTgy","avatar_url":"https://avatars.githubusercontent.com/u/12771982?v=4","gravatar_id":"","url":"https://api.github.com/users/Scrxtchy","html_url":"https://github.com/Scrxtchy","followers_url":"https://api.github.com/users/Scrxtchy/followers","following_url":"https://api.github.com/users/Scrxtchy/following{/other_user}","gists_url":"https://api.github.com/users/Scrxtchy/gists{/gist_id}","starred_url":"https://api.github.com/users/Scrxtchy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Scrxtchy/subscriptions","organizations_url":"https://api.github.com/users/Scrxtchy/orgs","repos_url":"https://api.github.com/users/Scrxtchy/repos","events_url":"https://api.github.com/users/Scrxtchy/events{/privacy}","received_events_url":"https://api.github.com/users/Scrxtchy/received_events","type":"User","site_admin":false},"labels":[{"id":1879006913,"node_id":"MDU6TGFiZWwxODc5MDA2OTEz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/question","name":"question","color":"d876e3","default":true,"description":"Further information is requested"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-13T04:53:42Z","updated_at":"2024-03-13T13:57:15Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"https://github.com/rapidfuzz/RapidFuzz/blob/af9e1b76bea9c6f5dcfd7bf37f2ab571fef4d8f7/src/rapidfuzz/process_py.py#L77-L79\r\n\r\nIs this still accurate? I've found that using a dict with\r\n```py\r\nprocess.extract(\"Test\",choices=[{item['key']: item['name']} for item in items ],scorer=fuzz.WRatio ,limit=7)\r\n```\r\nWill return a KeyError 0, \r\nTrace
\r\n\r\n```\r\nTraceback (most recent call last):\r\n File \"\", line 1, in \r\n File \"src/rapidfuzz/process_cpp_impl.pyx\", line 1251, in rapidfuzz.process_cpp_impl.extract\r\n File \"src/rapidfuzz/process_cpp_impl.pyx\", line 1130, in rapidfuzz.process_cpp_impl.extract_list\r\n File \"src/rapidfuzz/process_cpp_impl.pyx\", line 1011, in rapidfuzz.process_cpp_impl.extract_list_f64\r\n File \"src/rapidfuzz/process_cpp_impl.pyx\", line 220, in rapidfuzz.process_cpp_impl.preprocess_list\r\n File \"./src/rapidfuzz/cpp_common.pxd\", line 333, in cpp_common.conv_sequence\r\n File \"./src/rapidfuzz/cpp_common.pxd\", line 322, in cpp_common.hash_sequence\r\n File \"./src/rapidfuzz/cpp_common.pxd\", line 311, in cpp_common.hash_sequence\r\nKeyError: 0\r\n```\r\n \r\nbut a tuple is what I should be using\r\n\r\n```py\r\nprocess.extract(\"Test\",choices=[(item['key'], item['name']) for item in items ],scorer=fuzz.WRatio ,limit=7)\r\n```\r\nRef: https://github.com/rapidfuzz/RapidFuzz/blob/af9e1b76bea9c6f5dcfd7bf37f2ab571fef4d8f7/src/rapidfuzz/process_py.py#L142","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/368/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/368/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1994469517","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/368#issuecomment-1994469517","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/368","id":1994469517,"node_id":"IC_kwDODorr3c524TCN","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-13T13:57:14Z","updated_at":"2024-03-13T13:57:14Z","author_association":"MEMBER","body":"Probably those do not a second look. Especially to make sure the documentation is the same as the type hint above.\r\n\r\nI assume you are trying to use the Mapping version, which according to the type hint would be `Mapping[Any, Sequence[Hashable] | None]`. However you are passing a `Sequence[Mapping[...]]` instead.\r\n\r\nWhat you could do is something like the following:\r\n```python\r\n>>> items=[{\"name\": \"test\", \"key\": \"test2\"}]\r\n>>> process.extract(\"Test\",choices={item['key']: item['name'] for item in items},scorer=fuzz.WRatio ,limit=7)\r\n[('test', 75.0, 'test2')]\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1994469517/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-13T13:57:15Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36474527859","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/366","id":2179254476,"node_id":"I_kwDODorr3c6B5MjM","number":366,"title":"understanding similitude differences between extract, cdist and extractOne","user":{"login":"abubelinha","id":698946,"node_id":"MDQ6VXNlcjY5ODk0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/698946?v=4","gravatar_id":"","url":"https://api.github.com/users/abubelinha","html_url":"https://github.com/abubelinha","followers_url":"https://api.github.com/users/abubelinha/followers","following_url":"https://api.github.com/users/abubelinha/following{/other_user}","gists_url":"https://api.github.com/users/abubelinha/gists{/gist_id}","starred_url":"https://api.github.com/users/abubelinha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abubelinha/subscriptions","organizations_url":"https://api.github.com/users/abubelinha/orgs","repos_url":"https://api.github.com/users/abubelinha/repos","events_url":"https://api.github.com/users/abubelinha/events{/privacy}","received_events_url":"https://api.github.com/users/abubelinha/received_events","type":"User","site_admin":false},"labels":[{"id":1879006913,"node_id":"MDU6TGFiZWwxODc5MDA2OTEz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/question","name":"question","color":"d876e3","default":true,"description":"Further information is requested"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-03-11T14:18:55Z","updated_at":"2024-03-12T13:36:43Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"I am trying to understand by example how the different RapidFuzz methods work.\r\nMy real use case is matching names column in a fuzzy dataframe, against another dataframe of name choices coming from a database, to extract the closest name in DB and its associated columns -index, parent, family-.\r\n\r\nI looked into some examples in repository and tried to apply them to my sample data. See code below.\r\nI have some questions about the output:\r\n1. Why does `extract()` return an empty list for some of the explicit scorer values I tried? (`fuzz.ratio` and `fuzz.QRatio`)\r\n2. Which scorer should I use in first test, so similitudes are not the same? (can't understand why all matches get a 90.0 score)\r\n3. Why 2nd and 3rd example produce a 71.42857 similitude of 'Soliva sessilis' against 'Soliva sessilis Ruiz & Pav.', whereas in 1st example the output is 90, as I said above?\r\n\r\nThanks a lot in advance\r\n@abubelinha\r\n\r\n#### My code:\r\n\r\n```Python\r\n\tfrom rapidfuzz import fuzz,process\r\n\tfrom rapidfuzz.process import cdist, extract\r\n\r\n\tif True: # single string tests:\r\n\t\tx = 'Soliva sessilis'\r\n\t\tprint(\"\\n1. RapidFuzz extract() using different scorers for matching '{}' against different strings:\\n\".format(x))\r\n\t\tchoices = ['Soliva sessilis auct., non Ruiz & Pav.', 'Soliva sessilis Ruiz & Pav.', 'Soliva']\r\n\t\tprint(\"String list (choices): \",choices)\r\n\t\tresult = extract(query = x, choices = choices, score_cutoff=90)\r\n\t\tprint(\"\\n- Result with no scorer (default scorer):\\n\",result)\r\n\t\tfor sco in ['fuzz.ratio','fuzz.WRatio','fuzz.QRatio']:\r\n\t\t\ttry:\r\n\t\t\t\tresult = extract(query = x, choices = choices, score_cutoff=90, scorer=eval(sco))\r\n\t\t\t\tprint(\"\\n+ Result when explicitly passing scorer={}:\\n\".format(sco),result)\r\n\t\t\texcept Exception as e:\r\n\t\t\t\tprint(\"\\n* Error when explicitly passing scorer={}:\\n\".format(sco),str(e))\r\n\tif True: # dataframe matching tests:\r\n\t\tdfchoices = pd.DataFrame(data = [\r\n\t\t\t\t[1001,'Soliva sessilis auct., non Ruiz & Pav.',1006,'Asteraceae'],\r\n\t\t\t\t[1002,'Soliva sessilis Ruiz & Pav.',1006,'Asteraceae'],\r\n\t\t\t\t[1004,'Soliva pterosperma (Juss.) Samp.',1006,'Asteraceae'],\r\n\t\t\t\t[1005,'Soliva sp.',1006,'Asteraceae'],\r\n\t\t\t\t[1006,'Soliva',1006,'Asteraceae'],\r\n\t\t\t\t[1007,'Solanum L.',1007,'Solanaceae'],\r\n\t\t\t\t[1009,'Solanum tuberosum L.',1007,'Solanaceae'],\r\n\t\t\t],\r\n\t\t\tcolumns=['id','name','parent','family']\r\n\t\t)\r\n\t\tdfuzdata = pd.DataFrame(data = [\r\n\t\t\t\t['Soliva sessilis','USA'],\r\n\t\t\t\t['Saliva sesilis','Brazil'],\r\n\t\t\t\t['Solanun tuberosun','Perú-Bolivia'],\r\n\t\t\t],\r\n\t\t\tcolumns = ['fuzname','origin']\r\n\t\t)\r\n\t\tprint(\"\\n\",\"=\"*50)\r\n\t\t\r\n\t\t# TESTING cdist() as in https://github.com/rapidfuzz/RapidFuzz/issues/283#issuecomment-1291704481\r\n\t\tname_score = cdist(dfuzdata['fuzname'], dfchoices['name'])\r\n\t\tname_score = cdist(dfuzdata.iloc[0,:][['fuzname']], dfchoices['name'])\r\n\t\tprint(\"\\n2. cdist() as in https://github.com/rapidfuzz/RapidFuzz/issues/283#issuecomment-1291704481 outputs \",type(name_score),\":\")\r\n\t\tprint(name_score)\r\n\t\tprint(\"\\n\",\"=\"*50)\r\n\r\n\t\tprint(\"\\n3. process.extractOne as in https://github.com/rapidfuzz/RapidFuzz/issues/91#issuecomment-799548760 :\\n\")\r\n\t\tfor fuzname in dfuzdata['fuzname']:\r\n\t\t\tchoice,score,index = process.extractOne(fuzname, dfchoices[\"name\"], scorer=fuzz.ratio, processor=None)\r\n\t\t\tprint(\" | \".join([str(x) for x in [fuzname,choice,score,index]]))\r\n```\r\n\r\n#### Output:\r\n\r\n```DOS\r\n1. RapidFuzz extract() using different scorers for matching 'Soliva sessilis' against different strings:\r\n\r\nString list (choices): ['Soliva sessilis auct., non Ruiz & Pav.', 'Soliva sessilis Ruiz & Pav.', 'Soliva']\r\n\r\n - Result with no scorer (default scorer):\r\n [('Soliva sessilis auct., non Ruiz & Pav.', 90.0, 0), ('Soliva sessilis Ruiz & Pav.', 90.0, 1), ('Soliva', 90.0, 2)]\r\n\r\n + Result when explicitly passing scorer=fuzz.ratio:\r\n []\r\n\r\n + Result when explicitly passing scorer=fuzz.WRatio:\r\n [('Soliva sessilis auct., non Ruiz & Pav.', 90.0, 0), ('Soliva sessilis Ruiz & Pav.', 90.0, 1), ('Soliva', 90.0, 2)]\r\n\r\n + Result when explicitly passing scorer=fuzz.QRatio:\r\n []\r\n\r\n ==================================================\r\n\r\n2. cdist() as in https://github.com/rapidfuzz/RapidFuzz/issues/283#issuecomment-1291704481 outputs :\r\n[[56.603775 71.42857 46.80851 64. 57.142857 40. 40. ]]\r\n\r\n ==================================================\r\n\r\n3. process.extractOne as in https://github.com/rapidfuzz/RapidFuzz/issues/91#issuecomment-799548760 :\r\n\r\nSoliva sessilis | Soliva sessilis Ruiz & Pav. | 71.42857142857143 | 1\r\nSaliva sesilis | Soliva sessilis Ruiz & Pav. | 63.41463414634146 | 1\r\nSolanun tuberosun | Solanum tuberosum L. | 81.08108108108108 | 6\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1991671762","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/366#issuecomment-1991671762","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366","id":1991671762,"node_id":"IC_kwDODorr3c52tn_S","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-12T13:36:43Z","updated_at":"2024-03-12T13:36:43Z","author_association":"MEMBER","body":"> I misread and thought fuzz.ratio was the default scorer value for extract() so the 1st two lines of my test 1 output looked inconsistent to me (but its default is actually fuzz.WRatio, which explains their different output).\r\n\r\nYes this is a bit inconsistent, since `cdist` defaults to `fuzz.ratio`, while `extract` and `extractOne` default to `fuzz.WRatio`.\r\n\r\n> Any particular modification of my query that would produce differences between fuzz.ratio and fuzz.QRatio outputs?\r\n\r\nThey are pretty much exactly the same. The only difference between the two is the handling of empty strings.\r\n```python\r\n>>> from rapidfuzz import fuzz\r\n>>> fuzz.ratio(\"\", \"\")\r\n100.0\r\n>>> fuzz.QRatio(\"\", \"\")\r\n0.0\r\n```\r\nIn the past they had different defaults for the preprocessing function, but this was changed in v3.0.0.","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1991671762/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-12T13:36:44Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36458059806","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/365","id":2178288510,"node_id":"I_kwDODorr3c6B1gt-","number":365,"title":"utils.default_process is not work like what the doc says.","user":{"login":"qkxie","id":134578340,"node_id":"U_kgDOCAWApA","avatar_url":"https://avatars.githubusercontent.com/u/134578340?v=4","gravatar_id":"","url":"https://api.github.com/users/qkxie","html_url":"https://github.com/qkxie","followers_url":"https://api.github.com/users/qkxie/followers","following_url":"https://api.github.com/users/qkxie/following{/other_user}","gists_url":"https://api.github.com/users/qkxie/gists{/gist_id}","starred_url":"https://api.github.com/users/qkxie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qkxie/subscriptions","organizations_url":"https://api.github.com/users/qkxie/orgs","repos_url":"https://api.github.com/users/qkxie/repos","events_url":"https://api.github.com/users/qkxie/events{/privacy}","received_events_url":"https://api.github.com/users/qkxie/received_events","type":"User","site_admin":false},"labels":[{"id":1879006913,"node_id":"MDU6TGFiZWwxODc5MDA2OTEz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/question","name":"question","color":"d876e3","default":true,"description":"Further information is requested"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2024-03-11T05:54:36Z","updated_at":"2024-03-12T03:41:47Z","closed_at":"2024-03-12T03:32:10Z","author_association":"NONE","active_lock_reason":null,"body":"![image](https://github.com/rapidfuzz/RapidFuzz/assets/134578340/5bfb85e8-e2f3-4362-84f7-f0ff4ac96b9b)\r\n\r\nThe doc says that this function will remove all non alphanumeric characters. However, when I call this function, it doesn't remove chinese char\r\n\r\n![image](https://github.com/rapidfuzz/RapidFuzz/assets/134578340/147df282-fa01-49bb-bd6a-0bd5c1b42768)\r\n","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/timeline","performed_via_github_app":null,"state_reason":"completed"},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1990090932","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/365#issuecomment-1990090932","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365","id":1990090932,"node_id":"IC_kwDODorr3c52nmC0","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-12T03:41:46Z","updated_at":"2024-03-12T03:41:46Z","author_association":"MEMBER","body":"In general both for lowercase and for filtering non-alphanumeric I use the same definition as Python. Right now the only exception to this is the lowercasing of `U+0130`. In Cpython this results into two characters when lowercased, while in my implementation it only returns a single character\r\n```python\r\n>>> ord(\"İ\".lower()[0])\r\n105\r\n>>> ord(\"İ\".lower()[1])\r\n775\r\n\r\n>>> ord(default_process(\"İ\"))\r\n105\r\n```\r\n","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1990090932/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-12T03:41:47Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36457740396","type":"PushEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"repository_id":243985373,"push_id":17497603556,"size":1,"distinct_size":1,"ref":"refs/heads/main","head":"af9e1b76bea9c6f5dcfd7bf37f2ab571fef4d8f7","before":"7788d5ecb4e2b9839ed8e274b2a5ad91671828fd","commits":[{"sha":"af9e1b76bea9c6f5dcfd7bf37f2ab571fef4d8f7","author":{"email":"kontakt@maxbachmann.de","name":"Max Bachmann"},"message":"fix spelling","distinct":true,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits/af9e1b76bea9c6f5dcfd7bf37f2ab571fef4d8f7"}]},"public":true,"created_at":"2024-03-12T03:21:21Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36457709406","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/365","id":2178288510,"node_id":"I_kwDODorr3c6B1gt-","number":365,"title":"utils.default_process is not work like what the doc says.","user":{"login":"qkxie","id":134578340,"node_id":"U_kgDOCAWApA","avatar_url":"https://avatars.githubusercontent.com/u/134578340?v=4","gravatar_id":"","url":"https://api.github.com/users/qkxie","html_url":"https://github.com/qkxie","followers_url":"https://api.github.com/users/qkxie/followers","following_url":"https://api.github.com/users/qkxie/following{/other_user}","gists_url":"https://api.github.com/users/qkxie/gists{/gist_id}","starred_url":"https://api.github.com/users/qkxie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qkxie/subscriptions","organizations_url":"https://api.github.com/users/qkxie/orgs","repos_url":"https://api.github.com/users/qkxie/repos","events_url":"https://api.github.com/users/qkxie/events{/privacy}","received_events_url":"https://api.github.com/users/qkxie/received_events","type":"User","site_admin":false},"labels":[{"id":1879006913,"node_id":"MDU6TGFiZWwxODc5MDA2OTEz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/question","name":"question","color":"d876e3","default":true,"description":"Further information is requested"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-03-11T05:54:36Z","updated_at":"2024-03-12T03:19:21Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"![image](https://github.com/rapidfuzz/RapidFuzz/assets/134578340/5bfb85e8-e2f3-4362-84f7-f0ff4ac96b9b)\r\n\r\nThe doc says that this function will remove all non alphanumeric characters. However, when I call this function, it doesn't remove chinese char\r\n\r\n![image](https://github.com/rapidfuzz/RapidFuzz/assets/134578340/147df282-fa01-49bb-bd6a-0bd5c1b42768)\r\n","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1989992443","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/365#issuecomment-1989992443","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365","id":1989992443,"node_id":"IC_kwDODorr3c52nN_7","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-12T03:19:19Z","updated_at":"2024-03-12T03:19:19Z","author_association":"MEMBER","body":"I use alphanumeric similar to the way it's defined for `str.isalnum` in python:\r\n```\r\n>>> \"哈\".isalnum()\r\nTrue\r\n```\r\n\r\nFor specific languages you could have tighter definitions of what an alphanumeric character would be. So e.g. for english your definition using 0-9, a-z and A-Z would work.","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1989992443/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-12T03:19:21Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36439950854","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/366","id":2179254476,"node_id":"I_kwDODorr3c6B5MjM","number":366,"title":"understanding similitude differences between extract, cdist and extractOne","user":{"login":"abubelinha","id":698946,"node_id":"MDQ6VXNlcjY5ODk0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/698946?v=4","gravatar_id":"","url":"https://api.github.com/users/abubelinha","html_url":"https://github.com/abubelinha","followers_url":"https://api.github.com/users/abubelinha/followers","following_url":"https://api.github.com/users/abubelinha/following{/other_user}","gists_url":"https://api.github.com/users/abubelinha/gists{/gist_id}","starred_url":"https://api.github.com/users/abubelinha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abubelinha/subscriptions","organizations_url":"https://api.github.com/users/abubelinha/orgs","repos_url":"https://api.github.com/users/abubelinha/repos","events_url":"https://api.github.com/users/abubelinha/events{/privacy}","received_events_url":"https://api.github.com/users/abubelinha/received_events","type":"User","site_admin":false},"labels":[{"id":1879006913,"node_id":"MDU6TGFiZWwxODc5MDA2OTEz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/question","name":"question","color":"d876e3","default":true,"description":"Further information is requested"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-11T14:18:55Z","updated_at":"2024-03-11T15:27:13Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"I am trying to understand by example how the different RapidFuzz methods work.\r\nMy real use case is matching names column in a fuzzy dataframe, against another dataframe of name choices coming from a database, to extract the closest name in DB and its associated columns -index, parent, family-.\r\n\r\nI looked into some examples in repository and tried to apply them to my sample data. See code below.\r\nI have some questions about the output:\r\n1. Why does `extract()` return an empty list from some of the explicit scorer values I tried? (`fuzz.ratio` and `fuzz.QRatio`)\r\n2. Which scorer should I use in first test, so similitudes are not the same? (can't understand why all matches get a 90.0 score)\r\n3. Why 2nd and 3rd example produce a 71.42857 similitude of 'Soliva sessilis' against 'Soliva sessilis Ruiz & Pav.', whereas in 1st example the output is 90, as I said above?\r\n\r\nThanks a lot in advance\r\n@abubelinha\r\n\r\n#### My code:\r\n\r\n```Python\r\n\tfrom rapidfuzz import fuzz,process\r\n\tfrom rapidfuzz.process import cdist, extract\r\n\r\n\tif True: # single string tests:\r\n\t\tx = 'Soliva sessilis'\r\n\t\tprint(\"\\n1. RapidFuzz extract() using different scorers for matching '{}' against different strings:\\n\".format(x))\r\n\t\tchoices = ['Soliva sessilis auct., non Ruiz & Pav.', 'Soliva sessilis Ruiz & Pav.', 'Soliva']\r\n\t\tprint(\"String list (choices): \",choices)\r\n\t\tresult = extract(query = x, choices = choices, score_cutoff=90)\r\n\t\tprint(\"\\n- Result with no scorer (default scorer):\\n\",result)\r\n\t\tfor sco in ['fuzz.ratio','fuzz.WRatio','fuzz.QRatio']:\r\n\t\t\ttry:\r\n\t\t\t\tresult = extract(query = x, choices = choices, score_cutoff=90, scorer=eval(sco))\r\n\t\t\t\tprint(\"\\n+ Result when explicitly passing scorer={}:\\n\".format(sco),result)\r\n\t\t\texcept Exception as e:\r\n\t\t\t\tprint(\"\\n* Error when explicitly passing scorer={}:\\n\".format(sco),str(e))\r\n\tif True: # dataframe matching tests:\r\n\t\tdfchoices = pd.DataFrame(data = [\r\n\t\t\t\t[1001,'Soliva sessilis auct., non Ruiz & Pav.',1006,'Asteraceae'],\r\n\t\t\t\t[1002,'Soliva sessilis Ruiz & Pav.',1006,'Asteraceae'],\r\n\t\t\t\t[1004,'Soliva pterosperma (Juss.) Samp.',1006,'Asteraceae'],\r\n\t\t\t\t[1005,'Soliva sp.',1006,'Asteraceae'],\r\n\t\t\t\t[1006,'Soliva',1006,'Asteraceae'],\r\n\t\t\t\t[1007,'Solanum L.',1007,'Solanaceae'],\r\n\t\t\t\t[1009,'Solanum tuberosum L.',1007,'Solanaceae'],\r\n\t\t\t],\r\n\t\t\tcolumns=['id','name','parent','family']\r\n\t\t)\r\n\t\tdfuzdata = pd.DataFrame(data = [\r\n\t\t\t\t['Soliva sessilis','USA'],\r\n\t\t\t\t['Saliva sesilis','Brazil'],\r\n\t\t\t\t['Solanun tuberosun','Perú-Bolivia'],\r\n\t\t\t],\r\n\t\t\tcolumns = ['fuzname','origin']\r\n\t\t)\r\n\t\tprint(\"\\n\",\"=\"*50)\r\n\t\t\r\n\t\t# TESTING cdist() as in https://github.com/rapidfuzz/RapidFuzz/issues/283#issuecomment-1291704481\r\n\t\tname_score = cdist(dfuzdata['fuzname'], dfchoices['name'])\r\n\t\tname_score = cdist(dfuzdata.iloc[0,:][['fuzname']], dfchoices['name'])\r\n\t\tprint(\"\\n2. cdist() as in https://github.com/rapidfuzz/RapidFuzz/issues/283#issuecomment-1291704481 outputs \",type(name_score),\":\")\r\n\t\tprint(name_score)\r\n\t\tprint(\"\\n\",\"=\"*50)\r\n\r\n\t\tprint(\"\\n3. process.extractOne as in https://github.com/rapidfuzz/RapidFuzz/issues/91#issuecomment-799548760 :\\n\")\r\n\t\tfor fuzname in dfuzdata['fuzname']:\r\n\t\t\tchoice,score,index = process.extractOne(fuzname, dfchoices[\"name\"], scorer=fuzz.ratio, processor=None)\r\n\t\t\tprint(\" | \".join([str(x) for x in [fuzname,choice,score,index]]))\r\n```\r\n\r\n#### Output:\r\n\r\n```DOS\r\n1. RapidFuzz extract() using different scorers for matching 'Soliva sessilis' against different strings:\r\n\r\nString list (choices): ['Soliva sessilis auct., non Ruiz & Pav.', 'Soliva sessilis Ruiz & Pav.', 'Soliva']\r\n\r\n- Result with no scorer (default scorer):\r\n [('Soliva sessilis auct., non Ruiz & Pav.', 90.0, 0), ('Soliva sessilis Ruiz & Pav.', 90.0, 1), ('Soliva', 90.0, 2)]\r\n\r\n+ Result when explicitly passing scorer=fuzz.ratio:\r\n []\r\n\r\n+ Result when explicitly passing scorer=fuzz.WRatio:\r\n [('Soliva sessilis auct., non Ruiz & Pav.', 90.0, 0), ('Soliva sessilis Ruiz & Pav.', 90.0, 1), ('Soliva', 90.0, 2)]\r\n\r\n+ Result when explicitly passing scorer=fuzz.QRatio:\r\n []\r\n\r\n ==================================================\r\n\r\n5. cdist() as in https://github.com/rapidfuzz/RapidFuzz/issues/283#issuecomment-1291704481 outputs :\r\n[[56.603775 71.42857 46.80851 64. 57.142857 40. 40. ]]\r\n\r\n ==================================================\r\n\r\n6. process.extractOne as in https://github.com/rapidfuzz/RapidFuzz/issues/91#issuecomment-799548760 :\r\n\r\nSoliva sessilis | Soliva sessilis Ruiz & Pav. | 71.42857142857143 | 1\r\nSaliva sesilis | Soliva sessilis Ruiz & Pav. | 63.41463414634146 | 1\r\nSolanun tuberosun | Solanum tuberosum L. | 81.08108108108108 | 6\r\n```","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1988712557","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/366#issuecomment-1988712557","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/366","id":1988712557,"node_id":"IC_kwDODorr3c52iVht","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-11T15:27:11Z","updated_at":"2024-03-11T15:27:11Z","author_association":"MEMBER","body":"```\r\nfor sco in ['fuzz.ratio','fuzz.WRatio','fuzz.QRatio']:\r\n result = extract(query = x, choices = choices, score_cutoff=90, scorer=eval(sco))\r\n```\r\nwhy would you use eval for this :fearful: You can simply iterate over the functions:\r\n```\r\nfor scorer in [fuzz.ratio, fuzz.WRatio, fuzz.QRatio]:\r\n result = extract(x, choices, score_cutoff=90, scorer=scorer)\r\n```\r\n\r\n> Why does extract() return an empty list from some of the explicit scorer values I tried? (fuzz.ratio and fuzz.QRatio)\r\n\r\n`process.extract` filters out results if you pass a score_cutoff. In your case `fuzz.ratio`/`fuzz.QRatio` return a similarity below 90 for each element.\r\n\r\n> Which scorer should I use in first test, so similitudes are not the same? (can't understand why all matches get a 90.0 score)\r\n\r\nA lot of the scorers use a partial match and since:\r\n- 'Soliva sessilis' is a substring of 'Soliva sessilis auct., non Ruiz & Pav.'\r\n- 'Soliva sessilis' is a substring of 'Soliva sessilis Ruiz & Pav.'\r\n- 'Soliva' is a substring of 'Soliva sessilis'\r\n\r\nThis partial match always has a similarity of 100. `fuzz.WRatio` puts a weight of `0.9` on these partial matches, so you end up with a similarity of 90. E.g. `fuzz.ratio` or the distances in `rapidfuzz.distance.*` do not show this behaviour.\r\n\r\n> Why 2nd and 3rd example produce a 71.42857 similitude of 'Soliva sessilis' against 'Soliva sessilis Ruiz & Pav.', whereas in 1st example the output is 90, as I said above?\r\n\r\n`fuzz.ratio` and `fuzz.QRatio` are based on the normalized Indel similarity. Not sure whether you have any specific questions into how they work.","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1988712557/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-11T15:27:13Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36439216707","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/365","id":2178288510,"node_id":"I_kwDODorr3c6B1gt-","number":365,"title":"utils.default_process is not work like what the doc says.","user":{"login":"qkxie","id":134578340,"node_id":"U_kgDOCAWApA","avatar_url":"https://avatars.githubusercontent.com/u/134578340?v=4","gravatar_id":"","url":"https://api.github.com/users/qkxie","html_url":"https://github.com/qkxie","followers_url":"https://api.github.com/users/qkxie/followers","following_url":"https://api.github.com/users/qkxie/following{/other_user}","gists_url":"https://api.github.com/users/qkxie/gists{/gist_id}","starred_url":"https://api.github.com/users/qkxie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qkxie/subscriptions","organizations_url":"https://api.github.com/users/qkxie/orgs","repos_url":"https://api.github.com/users/qkxie/repos","events_url":"https://api.github.com/users/qkxie/events{/privacy}","received_events_url":"https://api.github.com/users/qkxie/received_events","type":"User","site_admin":false},"labels":[{"id":1879006913,"node_id":"MDU6TGFiZWwxODc5MDA2OTEz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/question","name":"question","color":"d876e3","default":true,"description":"Further information is requested"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-11T05:54:36Z","updated_at":"2024-03-11T15:08:44Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"![image](https://github.com/rapidfuzz/RapidFuzz/assets/134578340/5bfb85e8-e2f3-4362-84f7-f0ff4ac96b9b)\r\n\r\nThe doc says that this function will remove all non alphanumeric characters. However, when I call this function, it doesn't remove chinese char\r\n\r\n![image](https://github.com/rapidfuzz/RapidFuzz/assets/134578340/147df282-fa01-49bb-bd6a-0bd5c1b42768)\r\n","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1988667847","html_url":"https://github.com/rapidfuzz/RapidFuzz/issues/365#issuecomment-1988667847","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/365","id":1988667847,"node_id":"IC_kwDODorr3c52iKnH","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-11T15:08:43Z","updated_at":"2024-03-11T15:08:43Z","author_association":"MEMBER","body":"I don't know chinese characters. So without anything to copy and paste into google, I can't really check whether those are alphanumeric. My assumption is that you might misunderstand between \"non alphanumeric\" and \"non ascii\".","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1988667847/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-11T15:08:44Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36419944260","type":"PushEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"repository_id":243985373,"push_id":17479431058,"size":1,"distinct_size":1,"ref":"refs/heads/main","head":"7788d5ecb4e2b9839ed8e274b2a5ad91671828fd","before":"092232e2a63aede14a30479aad81107c7aa31cc3","commits":[{"sha":"7788d5ecb4e2b9839ed8e274b2a5ad91671828fd","author":{"email":"49699333+dependabot[bot]@users.noreply.github.com","name":"dependabot[bot]"},"message":"Bump the github-actions group with 1 update\n\nBumps the github-actions group with 1 update: [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish).\n\n\nUpdates `pypa/gh-action-pypi-publish` from 1.8.12 to 1.8.14\n- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)\n- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.12...v1.8.14)\n\n---\nupdated-dependencies:\n- dependency-name: pypa/gh-action-pypi-publish\n dependency-type: direct:production\n update-type: version-update:semver-patch\n dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] ","distinct":true,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits/7788d5ecb4e2b9839ed8e274b2a5ad91671828fd"}]},"public":true,"created_at":"2024-03-11T04:26:38Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36419944071","type":"PullRequestEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"closed","number":364,"pull_request":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/364","id":1764670900,"node_id":"PR_kwDODorr3c5pLr20","html_url":"https://github.com/rapidfuzz/RapidFuzz/pull/364","diff_url":"https://github.com/rapidfuzz/RapidFuzz/pull/364.diff","patch_url":"https://github.com/rapidfuzz/RapidFuzz/pull/364.patch","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/364","number":364,"state":"closed","locked":false,"title":"Bump the github-actions group with 1 update","user":{"login":"dependabot[bot]","id":49699333,"node_id":"MDM6Qm90NDk2OTkzMzM=","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4","gravatar_id":"","url":"https://api.github.com/users/dependabot%5Bbot%5D","html_url":"https://github.com/apps/dependabot","followers_url":"https://api.github.com/users/dependabot%5Bbot%5D/followers","following_url":"https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dependabot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/dependabot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/dependabot%5Bbot%5D/repos","events_url":"https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/dependabot%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Bumps the github-actions group with 1 update: [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish).\n\nUpdates `pypa/gh-action-pypi-publish` from 1.8.12 to 1.8.14\n\nRelease notes
\nSourced from pypa/gh-action-pypi-publish's releases.
\n\nv1.8.14
\n🛠️ Internal Dependencies
\nNothing changed feature-wise. The only notable update is that the underlying container runtime now uses Python 3.12 and pip has been updated to v24.0 there.\nThis is should go unnoticed in terms of behavior. It's just a bit of maintenance burden to be done occasionally by @webknjaz
💰.\nEnjoy!
\n🪞 Full Diff: https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.13...v1.8.14
\n🧔♂️ Release Manager: @webknjaz 🇺🇦
\nv1.8.13
\n🐛 What's Fixed
\nThis action is now able to consume and publish distribution packages with Metadata-Version: 2.3
embedded.
\n🛠️ Internal Dependencies
\n@SigureMo
💰 sent us a bump of pkginfo
version to version 1.10.0 in #219. It's a transitive dependency for us and is not an API-level change but upgrading it has a side effect of letting Twine recognize distribution packages declaring Metadata-Version: 2.3
. In particular, it is known to affect distributions built with Maturin >= 1.5.0
.
\nFollowing that, @webknjaz
💰 upgraded other transitive and direct dependency pins, including, among others, the following notable bumps:
\n\ncryptography == 42.0.5
\nid == 1.3.0
\nreadme-renderer == 43.0
\nTwine == 5.0.0
\n
\n💪 New Contributors
\n@SigureMo
made their first contribution in pypa/gh-action-pypi-publish#219
\n🪞 Full Diff: https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.12...v1.8.13
\n🧔♂️ Release Manager: @webknjaz 🇺🇦
\n
\n \n\nCommits
\n\n81e9d93
Bump pip
to v24.0 in runtime prerequisites lock \n91527c4
Regenerate lockfiles with pip-tools v7.4.1 \n3a817c6
Bump action runtime to CPython 3.12 \n741947b
Add a config file for pip-tools
\nd7af439
Mass-bump transitive dependencies of runtime \ne90ddca
Bump readme-renderer
to v43.0 \ndae7fa3
Bump Twine to v5.0.0 \n0fe04ae
Bump id
to v1.3.0 \n444e179
Bump cryptography to v42.0.5 \n820be4e
Normalize pip-tools' header comment @ runtime.txt
\n- Additional commits viewable in compare view
\n
\n \n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pypa/gh-action-pypi-publish&package-manager=github_actions&previous-version=1.8.12&new-version=1.8.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\nDependabot commands and options
\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n ","created_at":"2024-03-11T00:34:34Z","updated_at":"2024-03-11T04:26:37Z","closed_at":"2024-03-11T04:26:36Z","merged_at":"2024-03-11T04:26:36Z","merge_commit_sha":"7788d5ecb4e2b9839ed8e274b2a5ad91671828fd","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":6659900531,"node_id":"LA_kwDODorr3c8AAAABjPYEcw","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/364/commits","review_comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/364/comments","review_comment_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/364/comments","statuses_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/statuses/b572dfecd81dfe20bd6b119fa3a85cf6a53d462a","head":{"label":"rapidfuzz:dependabot/github_actions/github-actions-7aaf6e754f","ref":"dependabot/github_actions/github-actions-7aaf6e754f","sha":"b572dfecd81dfe20bd6b119fa3a85cf6a53d462a","user":{"login":"rapidfuzz","id":118009645,"node_id":"O_kgDOBwivLQ","avatar_url":"https://avatars.githubusercontent.com/u/118009645?v=4","gravatar_id":"","url":"https://api.github.com/users/rapidfuzz","html_url":"https://github.com/rapidfuzz","followers_url":"https://api.github.com/users/rapidfuzz/followers","following_url":"https://api.github.com/users/rapidfuzz/following{/other_user}","gists_url":"https://api.github.com/users/rapidfuzz/gists{/gist_id}","starred_url":"https://api.github.com/users/rapidfuzz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapidfuzz/subscriptions","organizations_url":"https://api.github.com/users/rapidfuzz/orgs","repos_url":"https://api.github.com/users/rapidfuzz/repos","events_url":"https://api.github.com/users/rapidfuzz/events{/privacy}","received_events_url":"https://api.github.com/users/rapidfuzz/received_events","type":"Organization","site_admin":false},"repo":{"id":243985373,"node_id":"MDEwOlJlcG9zaXRvcnkyNDM5ODUzNzM=","name":"RapidFuzz","full_name":"rapidfuzz/RapidFuzz","private":false,"owner":{"login":"rapidfuzz","id":118009645,"node_id":"O_kgDOBwivLQ","avatar_url":"https://avatars.githubusercontent.com/u/118009645?v=4","gravatar_id":"","url":"https://api.github.com/users/rapidfuzz","html_url":"https://github.com/rapidfuzz","followers_url":"https://api.github.com/users/rapidfuzz/followers","following_url":"https://api.github.com/users/rapidfuzz/following{/other_user}","gists_url":"https://api.github.com/users/rapidfuzz/gists{/gist_id}","starred_url":"https://api.github.com/users/rapidfuzz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapidfuzz/subscriptions","organizations_url":"https://api.github.com/users/rapidfuzz/orgs","repos_url":"https://api.github.com/users/rapidfuzz/repos","events_url":"https://api.github.com/users/rapidfuzz/events{/privacy}","received_events_url":"https://api.github.com/users/rapidfuzz/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rapidfuzz/RapidFuzz","description":"Rapid fuzzy string matching in Python using various string metrics","fork":false,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","forks_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/forks","keys_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/teams","hooks_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/hooks","issue_events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/events{/number}","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/events","assignees_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/assignees{/user}","branches_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/branches{/branch}","tags_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/tags","blobs_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/refs{/sha}","trees_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/statuses/{sha}","languages_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/languages","stargazers_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/stargazers","contributors_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/contributors","subscribers_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/subscribers","subscription_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/subscription","commits_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits{/sha}","git_commits_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/commits{/sha}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/comments{/number}","issue_comment_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments{/number}","contents_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/contents/{+path}","compare_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/merges","archive_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/downloads","issues_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues{/number}","pulls_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls{/number}","milestones_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/milestones{/number}","notifications_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels{/name}","releases_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/releases{/id}","deployments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/deployments","created_at":"2020-02-29T14:41:44Z","updated_at":"2024-03-10T17:38:30Z","pushed_at":"2024-03-11T04:26:37Z","git_url":"git://github.com/rapidfuzz/RapidFuzz.git","ssh_url":"git@github.com:rapidfuzz/RapidFuzz.git","clone_url":"https://github.com/rapidfuzz/RapidFuzz.git","svn_url":"https://github.com/rapidfuzz/RapidFuzz","homepage":"https://rapidfuzz.github.io/RapidFuzz/","size":7550,"stargazers_count":2276,"watchers_count":2276,"language":"C++","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"has_discussions":true,"forks_count":101,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":22,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["cpp","levenshtein","levenshtein-distance","python","string-comparison","string-matching","string-similarity"],"visibility":"public","forks":101,"open_issues":22,"watchers":2276,"default_branch":"main"}},"base":{"label":"rapidfuzz:main","ref":"main","sha":"092232e2a63aede14a30479aad81107c7aa31cc3","user":{"login":"rapidfuzz","id":118009645,"node_id":"O_kgDOBwivLQ","avatar_url":"https://avatars.githubusercontent.com/u/118009645?v=4","gravatar_id":"","url":"https://api.github.com/users/rapidfuzz","html_url":"https://github.com/rapidfuzz","followers_url":"https://api.github.com/users/rapidfuzz/followers","following_url":"https://api.github.com/users/rapidfuzz/following{/other_user}","gists_url":"https://api.github.com/users/rapidfuzz/gists{/gist_id}","starred_url":"https://api.github.com/users/rapidfuzz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapidfuzz/subscriptions","organizations_url":"https://api.github.com/users/rapidfuzz/orgs","repos_url":"https://api.github.com/users/rapidfuzz/repos","events_url":"https://api.github.com/users/rapidfuzz/events{/privacy}","received_events_url":"https://api.github.com/users/rapidfuzz/received_events","type":"Organization","site_admin":false},"repo":{"id":243985373,"node_id":"MDEwOlJlcG9zaXRvcnkyNDM5ODUzNzM=","name":"RapidFuzz","full_name":"rapidfuzz/RapidFuzz","private":false,"owner":{"login":"rapidfuzz","id":118009645,"node_id":"O_kgDOBwivLQ","avatar_url":"https://avatars.githubusercontent.com/u/118009645?v=4","gravatar_id":"","url":"https://api.github.com/users/rapidfuzz","html_url":"https://github.com/rapidfuzz","followers_url":"https://api.github.com/users/rapidfuzz/followers","following_url":"https://api.github.com/users/rapidfuzz/following{/other_user}","gists_url":"https://api.github.com/users/rapidfuzz/gists{/gist_id}","starred_url":"https://api.github.com/users/rapidfuzz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapidfuzz/subscriptions","organizations_url":"https://api.github.com/users/rapidfuzz/orgs","repos_url":"https://api.github.com/users/rapidfuzz/repos","events_url":"https://api.github.com/users/rapidfuzz/events{/privacy}","received_events_url":"https://api.github.com/users/rapidfuzz/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rapidfuzz/RapidFuzz","description":"Rapid fuzzy string matching in Python using various string metrics","fork":false,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","forks_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/forks","keys_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/teams","hooks_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/hooks","issue_events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/events{/number}","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/events","assignees_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/assignees{/user}","branches_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/branches{/branch}","tags_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/tags","blobs_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/refs{/sha}","trees_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/statuses/{sha}","languages_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/languages","stargazers_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/stargazers","contributors_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/contributors","subscribers_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/subscribers","subscription_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/subscription","commits_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits{/sha}","git_commits_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/git/commits{/sha}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/comments{/number}","issue_comment_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments{/number}","contents_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/contents/{+path}","compare_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/merges","archive_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/downloads","issues_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues{/number}","pulls_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls{/number}","milestones_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/milestones{/number}","notifications_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/labels{/name}","releases_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/releases{/id}","deployments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/deployments","created_at":"2020-02-29T14:41:44Z","updated_at":"2024-03-10T17:38:30Z","pushed_at":"2024-03-11T04:26:37Z","git_url":"git://github.com/rapidfuzz/RapidFuzz.git","ssh_url":"git@github.com:rapidfuzz/RapidFuzz.git","clone_url":"https://github.com/rapidfuzz/RapidFuzz.git","svn_url":"https://github.com/rapidfuzz/RapidFuzz","homepage":"https://rapidfuzz.github.io/RapidFuzz/","size":7550,"stargazers_count":2276,"watchers_count":2276,"language":"C++","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"has_discussions":true,"forks_count":101,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":22,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["cpp","levenshtein","levenshtein-distance","python","string-comparison","string-matching","string-similarity"],"visibility":"public","forks":101,"open_issues":22,"watchers":2276,"default_branch":"main"}},"_links":{"self":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/364"},"html":{"href":"https://github.com/rapidfuzz/RapidFuzz/pull/364"},"issue":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/364"},"comments":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/364/comments"},"review_comments":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/364/comments"},"review_comment":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/364/commits"},"statuses":{"href":"https://api.github.com/repos/rapidfuzz/RapidFuzz/statuses/b572dfecd81dfe20bd6b119fa3a85cf6a53d462a"}},"author_association":"CONTRIBUTOR","auto_merge":null,"active_lock_reason":null,"merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":1,"deletions":1,"changed_files":1}},"public":true,"created_at":"2024-03-11T04:26:37Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36402078636","type":"PushEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"repository_id":243985373,"push_id":17467766696,"size":2,"distinct_size":2,"ref":"refs/heads/main","head":"092232e2a63aede14a30479aad81107c7aa31cc3","before":"4d896f63f010c18d44534a49a277ea2c8b5b02b3","commits":[{"sha":"875f0eca0b2e61171ed9b9f62538a3a583f27322","author":{"email":"oss@maxbachmann.de","name":"Max Bachmann"},"message":"improve testing for none","distinct":true,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits/875f0eca0b2e61171ed9b9f62538a3a583f27322"},{"sha":"092232e2a63aede14a30479aad81107c7aa31cc3","author":{"email":"oss@maxbachmann.de","name":"Max Bachmann"},"message":"add more tests with processor","distinct":true,"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/commits/092232e2a63aede14a30479aad81107c7aa31cc3"}]},"public":true,"created_at":"2024-03-09T22:25:36Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36355479425","type":"IssueCommentEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/363","repository_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz","labels_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/363/labels{/name}","comments_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/363/comments","events_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/363/events","html_url":"https://github.com/rapidfuzz/RapidFuzz/pull/363","id":2174458680,"node_id":"PR_kwDODorr3c5o_4GZ","number":363,"title":"Use pytest-cov to allow external contributors to see coverage","user":{"login":"cclauss","id":3709715,"node_id":"MDQ6VXNlcjM3MDk3MTU=","avatar_url":"https://avatars.githubusercontent.com/u/3709715?v=4","gravatar_id":"","url":"https://api.github.com/users/cclauss","html_url":"https://github.com/cclauss","followers_url":"https://api.github.com/users/cclauss/followers","following_url":"https://api.github.com/users/cclauss/following{/other_user}","gists_url":"https://api.github.com/users/cclauss/gists{/gist_id}","starred_url":"https://api.github.com/users/cclauss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cclauss/subscriptions","organizations_url":"https://api.github.com/users/cclauss/orgs","repos_url":"https://api.github.com/users/cclauss/repos","events_url":"https://api.github.com/users/cclauss/events{/privacy}","received_events_url":"https://api.github.com/users/cclauss/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-03-07T18:10:40Z","updated_at":"2024-03-07T23:19:43Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/pulls/363","html_url":"https://github.com/rapidfuzz/RapidFuzz/pull/363","diff_url":"https://github.com/rapidfuzz/RapidFuzz/pull/363.diff","patch_url":"https://github.com/rapidfuzz/RapidFuzz/pull/363.patch","merged_at":null},"body":"https://github.com/rapidfuzz/RapidFuzz/pull/362#discussion_r1516069391\r\n* https://pytest-cov.readthedocs.io","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/363/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/363/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1984766850","html_url":"https://github.com/rapidfuzz/RapidFuzz/pull/363#issuecomment-1984766850","issue_url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/363","id":1984766850,"node_id":"IC_kwDODorr3c52TSOC","user":{"login":"maxbachmann","id":44199644,"node_id":"MDQ6VXNlcjQ0MTk5NjQ0","avatar_url":"https://avatars.githubusercontent.com/u/44199644?v=4","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","html_url":"https://github.com/maxbachmann","followers_url":"https://api.github.com/users/maxbachmann/followers","following_url":"https://api.github.com/users/maxbachmann/following{/other_user}","gists_url":"https://api.github.com/users/maxbachmann/gists{/gist_id}","starred_url":"https://api.github.com/users/maxbachmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxbachmann/subscriptions","organizations_url":"https://api.github.com/users/maxbachmann/orgs","repos_url":"https://api.github.com/users/maxbachmann/repos","events_url":"https://api.github.com/users/maxbachmann/events{/privacy}","received_events_url":"https://api.github.com/users/maxbachmann/received_events","type":"User","site_admin":false},"created_at":"2024-03-07T23:19:43Z","updated_at":"2024-03-07T23:19:43Z","author_association":"MEMBER","body":"From what I can tell this actually gives less information on the CI.\r\nhttps://github.com/rapidfuzz/RapidFuzz/actions/runs/8187667912/job/22388641398 is without the change\r\nhttps://github.com/rapidfuzz/RapidFuzz/actions/runs/8196082185/job/22415597027 is with your change\r\n\r\nThe new version doesn't print the coverage anymore.","reactions":{"url":"https://api.github.com/repos/rapidfuzz/RapidFuzz/issues/comments/1984766850/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2024-03-07T23:19:44Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}},{"id":"36355335737","type":"CreateEvent","actor":{"id":44199644,"login":"maxbachmann","display_login":"maxbachmann","gravatar_id":"","url":"https://api.github.com/users/maxbachmann","avatar_url":"https://avatars.githubusercontent.com/u/44199644?"},"repo":{"id":243985373,"name":"rapidfuzz/RapidFuzz","url":"https://api.github.com/repos/rapidfuzz/RapidFuzz"},"payload":{"ref":"pytest-cov","ref_type":"branch","master_branch":"main","description":"Rapid fuzzy string matching in Python using various string metrics","pusher_type":"user"},"public":true,"created_at":"2024-03-07T23:12:17Z","org":{"id":118009645,"login":"rapidfuzz","gravatar_id":"","url":"https://api.github.com/orgs/rapidfuzz","avatar_url":"https://avatars.githubusercontent.com/u/118009645?"}}]