{"id":278170,"name":null,"description":"Finite-state script normalization and processing utilities","url":"https://github.com/google-research/nisaba","last_synced_at":"2025-10-16T07:09:38.635Z","repository":{"id":37078210,"uuid":"318338748","full_name":"google-research/nisaba","owner":"google-research","description":"Finite-state script normalization and processing utilities","archived":false,"fork":false,"pushed_at":"2025-09-26T10:39:23.000Z","size":2256,"stargazers_count":43,"open_issues_count":19,"forks_count":4,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-09-26T12:25:41.060Z","etag":null,"topics":["bengali","brahmic-scripts","devanagari","finite-state","finite-state-automata","finite-state-transducers","grammars","gujarati","gurmukhi","indic-languages","kannada","malayalam","oriya","pynini","sinhala","tamil","telugu","unicode","unicode-normalization","writing-systems"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google-research.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-12-03T22:40:26.000Z","updated_at":"2025-09-26T10:39:25.000Z","dependencies_parsed_at":"2024-01-25T19:30:54.109Z","dependency_job_id":"df6c689e-3490-43b4-99cc-da3a13c8de6a","html_url":"https://github.com/google-research/nisaba","commit_stats":{"total_commits":402,"total_committers":16,"mean_commits":25.125,"dds":0.5796019900497513,"last_synced_commit":"529381726a74f45e580581d1d13ea61670211139"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/google-research/nisaba","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fnisaba","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fnisaba/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fnisaba/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fnisaba/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google-research","download_url":"https://codeload.github.com/google-research/nisaba/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fnisaba/sbom","scorecard":{"id":146744,"data":{"date":"2025-08-11","repo":{"name":"github.com/google-research/nisaba","commit":"58c4574e13976cf90ac3b12f80558882d19b78b5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.9,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":2,"reason":"Found 8/30 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":7,"reason":"9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/linux-ci.yml:1","Warn: no topLevel permission defined: .github/workflows/macos-ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux-ci.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/google-research/nisaba/linux-ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux-ci.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/google-research/nisaba/linux-ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos-ci.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/google-research/nisaba/macos-ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos-ci.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/google-research/nisaba/macos-ci.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/linux-ci.yml:40","Warn: pipCommand not pinned by hash: .github/workflows/linux-ci.yml:41","Warn: pipCommand not pinned by hash: .github/workflows/macos-ci.yml:46","Warn: pipCommand not pinned by hash: .github/workflows/macos-ci.yml:47","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.3.0-beta not signed: https://api.github.com/repos/google-research/nisaba/releases/83250527","Warn: release artifact v0.3.0-beta does not have provenance: https://api.github.com/repos/google-research/nisaba/releases/83250527"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (22) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T09:32:44.663Z","repository_id":37078210,"created_at":"2025-08-16T09:32:44.663Z","updated_at":"2025-08-16T09:32:44.663Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279164497,"owners_count":26117718,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-16T02:00:06.019Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"google-research","name":"Google Research","uuid":"43830688","kind":"organization","description":"","email":null,"website":"https://research.google","location":"Earth","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/43830688?v=4","repositories_count":226,"last_synced_at":"2023-03-02T14:20:27.989Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/google-research","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-13T06:07:28.793Z","updated_at":"2023-03-02T14:20:28.230Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google-research","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google-research/repositories"},"packages":[],"commits":{"id":1354549,"full_name":"google-research/nisaba","default_branch":"main","committers":[{"name":"Alexander Gutkin","email":"agutkin@google.com","login":null,"count":169},{"name":"Cibu Johny","email":"cibu@google.com","login":null,"count":107},{"name":"Isin Demirsahin","email":"isin@google.com","login":null,"count":80},{"name":"Nisaba Authors","email":"no-reply@google.com","login":null,"count":12},{"name":"Lawrence Wolf-Sonkin","email":"lawrencews@google.com","login":null,"count":11},{"name":"Anna Katanova","email":"akatanova@google.com","login":null,"count":5},{"name":"Kyle Gorman","email":"kbg@google.com","login":null,"count":5},{"name":"Brian Roark","email":"roark@google.com","login":null,"count":4},{"name":"Richard Levasseur","email":"rlevasseur@google.com","login":null,"count":2},{"name":"Derek Mauro","email":"dmauro@google.com","login":null,"count":1},{"name":"Jesse Emond","email":"emond@google.com","login":null,"count":1},{"name":"John Cater","email":"jcater@google.com","login":null,"count":1},{"name":"Lawrence Wolf-Sonkin","email":"wolfsonkin@google.com","login":null,"count":1},{"name":"Mauricio Alfonso","email":"malfonso@google.com","login":null,"count":1},{"name":"Stephen Thorne","email":"sthorne@google.com","login":null,"count":1},{"name":"Yilei Yang","email":"yileiyang@google.com","login":null,"count":1}],"total_commits":402,"total_committers":16,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":25.125,"dds":0.5796019900497513,"past_year_committers":[{"name":"Isin Demirsahin","email":"isin@google.com","login":null,"count":39},{"name":"Alexander Gutkin","email":"agutkin@google.com","login":null,"count":17},{"name":"Cibu Johny","email":"cibu@google.com","login":null,"count":16},{"name":"Lawrence Wolf-Sonkin","email":"lawrencews@google.com","login":null,"count":8},{"name":"Anna Katanova","email":"akatanova@google.com","login":null,"count":5},{"name":"Brian Roark","email":"roark@google.com","login":null,"count":4},{"name":"Kyle Gorman","email":"kbg@google.com","login":null,"count":3},{"name":"Nisaba Authors","email":"no-reply@google.com","login":null,"count":3},{"name":"Richard Levasseur","email":"rlevasseur@google.com","login":null,"count":2},{"name":"John Cater","email":"jcater@google.com","login":null,"count":1}],"past_year_total_commits":98,"past_year_total_committers":10,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":9.8,"past_year_dds":0.6020408163265306,"last_synced_at":"2024-01-25T23:38:34.949Z","last_synced_commit":"529381726a74f45e580581d1d13ea61670211139","created_at":"2023-09-12T11:29:31.266Z","updated_at":"2024-01-25T23:38:34.950Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fnisaba/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-10-16T00:09:37.962Z","repositories_count":6083693,"commits_count":925041024,"contributors_count":36101504,"owners_count":1107259,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"google-research/nisaba","html_url":"https://github.com/google-research/nisaba","last_synced_at":"2025-09-27T02:14:38.235Z","status":null,"issues_count":8,"pull_requests_count":384,"avg_time_to_close_issue":4319952.5,"avg_time_to_close_pull_request":546340.0524781342,"issues_closed_count":4,"pull_requests_closed_count":343,"pull_request_authors_count":1,"issue_authors_count":5,"avg_comments_per_issue":4.0,"avg_comments_per_pull_request":0.06770833333333333,"merged_pull_requests_count":184,"bot_issues_count":0,"bot_pull_requests_count":384,"past_year_issues_count":0,"past_year_pull_requests_count":58,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":137748.5652173913,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":46,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.2413793103448276,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":58,"past_year_merged_pull_requests_count":29,"created_at":"2023-09-12T11:30:05.479Z","updated_at":"2025-09-27T02:14:38.236Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fnisaba","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/google-research%2Fnisaba/issues","issue_labels_count":{"enhancement":5,"bug":3},"pull_request_labels_count":{"copybara":360},"issue_author_associations_count":{"NONE":7,"OWNER":1},"pull_request_author_associations_count":{"NONE":384},"issue_authors":{"raydoc":3,"Snorlaxcode":2,"sinaahmadi":1,"ramSeraph":1,"coderarjob":1},"pull_request_authors":{"copybara-service[bot]":384},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-10-16T00:00:07.423Z","repositories_count":10985003,"issues_count":33957582,"pull_requests_count":109753524,"authors_count":11037789,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{"copybara":49},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"NONE":57},"past_year_issue_authors":{},"past_year_pull_request_authors":{"copybara-service[bot]":57},"maintainers":[{"login":"coderarjob","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/coderarjob"}],"active_maintainers":[]},"events":{"total":{"WatchEvent":3,"DeleteEvent":47,"IssueCommentEvent":9,"PushEvent":124,"PullRequestEvent":99,"CreateEvent":42},"last_year":{"WatchEvent":3,"DeleteEvent":47,"IssueCommentEvent":9,"PushEvent":124,"PullRequestEvent":99,"CreateEvent":42}},"keywords":["bengali","brahmic-scripts","devanagari","finite-state","finite-state-automata","finite-state-transducers","grammars","gujarati","gurmukhi","indic-languages","kannada","malayalam","oriya","pynini","sinhala","tamil","telugu","unicode","unicode-normalization","writing-systems"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/linux-ci.yml","sha":null,"kind":"manifest","created_at":"2023-02-18T08:01:13.954Z","updated_at":"2023-02-18T08:01:13.954Z","repository_link":"https://github.com/google-research/nisaba/blob/main/.github/workflows/linux-ci.yml","dependencies":[{"id":7757084825,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7757084826,"package_name":"actions/cache","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/macos-ci.yml","sha":null,"kind":"manifest","created_at":"2023-02-18T08:01:14.011Z","updated_at":"2023-02-18T08:01:14.011Z","repository_link":"https://github.com/google-research/nisaba/blob/main/.github/workflows/macos-ci.yml","dependencies":[{"id":7757085394,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7757085395,"package_name":"actions/cache","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.in","sha":null,"kind":"manifest","created_at":"2024-01-09T16:14:36.671Z","updated_at":"2024-01-09T16:14:36.671Z","repository_link":"https://github.com/google-research/nisaba/blob/main/requirements.in","dependencies":[{"id":15520601294,"package_name":"networkx","ecosystem":"pypi","requirements":"\u003e=2.5","direct":true,"kind":"runtime","optional":false},{"id":15520601295,"package_name":"numpy","ecosystem":"pypi","requirements":"\u003e=1.26.1","direct":true,"kind":"runtime","optional":false},{"id":15520601296,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e=1.0.5","direct":true,"kind":"runtime","optional":false},{"id":15520601297,"package_name":"pycountry","ecosystem":"pypi","requirements":"\u003e=22.3.5","direct":true,"kind":"runtime","optional":false},{"id":15520601298,"package_name":"pyemd","ecosystem":"pypi","requirements":"\u003e=0.4.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"lockfile","created_at":"2024-01-09T16:14:36.960Z","updated_at":"2024-01-09T16:14:36.960Z","repository_link":"https://github.com/google-research/nisaba/blob/main/requirements.txt","dependencies":[{"id":15520602892,"package_name":"networkx","ecosystem":"pypi","requirements":"==3.1","direct":false,"kind":"runtime","optional":false},{"id":15520602893,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":false,"kind":"runtime","optional":false},{"id":15520602894,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.0.1","direct":false,"kind":"runtime","optional":false},{"id":15520602895,"package_name":"pycountry","ecosystem":"pypi","requirements":"==22.3.5","direct":false,"kind":"runtime","optional":false},{"id":15520602896,"package_name":"pyemd","ecosystem":"pypi","requirements":"==1.0.0","direct":false,"kind":"runtime","optional":false},{"id":15520602897,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"==2.8.2","direct":false,"kind":"runtime","optional":false},{"id":15520602898,"package_name":"pytz","ecosystem":"pypi","requirements":"==2023.3","direct":false,"kind":"runtime","optional":false},{"id":15520602899,"package_name":"setuptools","ecosystem":"pypi","requirements":"==67.7.2","direct":false,"kind":"runtime","optional":false},{"id":15520602900,"package_name":"six","ecosystem":"pypi","requirements":"==1.16.0","direct":false,"kind":"runtime","optional":false},{"id":15520602901,"package_name":"tzdata","ecosystem":"pypi","requirements":"==2023.3","direct":false,"kind":"runtime","optional":false}]}],"score":6.899723107284872,"created_at":"2025-09-09T11:54:44.713Z","updated_at":"2025-10-16T07:09:38.670Z","avatar_url":"https://github.com/google-research.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":0,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["deep-neural-networks","distributed","research","jax","tpu","reinforcement-learning","video-processing","stream-processing","pipeline-framework","perception"],"project_url":"https://science.ecosyste.ms/api/v1/projects/278170","html_url":"https://science.ecosyste.ms/projects/278170"}