{"id":68191,"name":"narrative","description":"A small Python package for splitting text into dialogue and narrative.","url":"https://github.com/prosegrinder/python-narrative","last_synced_at":"2025-09-08T14:05:17.994Z","repository":{"id":48075049,"uuid":"128488283","full_name":"prosegrinder/python-narrative","owner":"prosegrinder","description":"A small Python package for splitting text into dialogue and narrative.","archived":false,"fork":false,"pushed_at":"2025-08-02T11:43:57.000Z","size":140,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-02T13:27:24.925Z","etag":null,"topics":["dialogue","narrative","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prosegrinder.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-04-07T02:07:22.000Z","updated_at":"2025-08-02T11:44:00.000Z","dependencies_parsed_at":"2023-02-17T03:00:59.549Z","dependency_job_id":"2adb208b-a56f-4040-b956-c3727f7d564f","html_url":"https://github.com/prosegrinder/python-narrative","commit_stats":{"total_commits":47,"total_committers":6,"mean_commits":7.833333333333333,"dds":"0.36170212765957444","last_synced_commit":"81cbb6fe2abef39190423d86d2ba621213399b2c"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/prosegrinder/python-narrative","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prosegrinder","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/sbom","scorecard":{"id":747109,"data":{"date":"2025-08-18","repo":{"name":"github.com/prosegrinder/python-narrative","commit":"8aa3e5280ef20b82c90534447ada639130343b3a"},"scorecard":{"version":"v5.2.1-41-g40576783","commit":"40576783fda6698350fcbbeaea760ff827433034"},"score":5.1,"checks":[{"name":"Code-Review","score":3,"reason":"Found 5/13 approved changesets -- score normalized to 3","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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#code-review"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"12 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#maintained"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#packaging"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/python-release.yml:42","Warn: no topLevel permission defined: .github/workflows/dependabot-batcher.yaml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/pypi-publish.yml:4","Info: topLevel 'contents' permission set to 'read': .github/workflows/python-ci.yml:4","Info: topLevel 'contents' permission set to 'read': .github/workflows/python-release.yml:4"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/autoapprove-prs.yaml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/autoapprove-prs.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dependabot-batcher.yaml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/dependabot-batcher.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/pypi-publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/pypi-publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/pypi-publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/pypi-publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/pypi-publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/pypi-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-ci.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-ci.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-ci.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-ci.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-ci.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-ci.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-ci.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-release.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-release.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-release.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-release.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-release.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/prosegrinder/python-narrative/python-release.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  20 third-party GitHubAction 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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#pinned-dependencies"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#cii-best-practices"}},{"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/40576783fda6698350fcbbeaea760ff827433034/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: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#signed-releases"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#branch-protection"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#security-policy"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T19:10:15.657Z","repository_id":48075049,"created_at":"2025-08-22T19:10:15.657Z","updated_at":"2025-08-22T19:10:15.657Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274196119,"owners_count":25239148,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"prosegrinder","name":"ProseGrinder","uuid":"36105406","kind":"organization","description":"","email":null,"website":"https://www.prosegrinder.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/36105406?v=4","repositories_count":10,"last_synced_at":"2023-02-28T21:35:34.636Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/prosegrinder","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-11T22:36:55.724Z","updated_at":"2023-02-28T21:35:34.642Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prosegrinder","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prosegrinder/repositories"},"packages":[{"id":2813934,"name":"narrative","ecosystem":"pypi","description":"A small Python package for splitting text into dialogue and narrative.","homepage":"https://github.com/prosegrinder/python-narrative","licenses":"GPLv3","normalized_licenses":["GPL-3.0"],"repository_url":"https://github.com/prosegrinder/python-narrative","keywords_array":[],"namespace":null,"versions_count":9,"first_release_published_at":"2018-04-07T19:08:00.000Z","latest_release_published_at":"2025-07-22T21:39:45.000Z","latest_release_number":"1.2.1","last_synced_at":"2025-08-02T13:37:06.654Z","created_at":"2022-04-10T11:42:45.296Z","updated_at":"2025-08-02T13:39:53.466Z","registry_url":"https://pypi.org/project/narrative/","install_command":"pip install narrative --index-url https://pypi.org/simple","documentation_url":"https://narrative.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","Intended Audience :: Science/Research","License :: OSI Approved :: GNU General Public License v3 (GPLv3)","License :: Other/Proprietary License","Natural Language :: English","Operating System :: OS Independent","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.9","Topic :: Software Development :: Libraries :: Python Modules","Topic :: Text Processing :: Linguistic"],"normalized_name":"narrative"},"repo_metadata":{"id":48075049,"uuid":"128488283","full_name":"prosegrinder/python-narrative","owner":"prosegrinder","description":"A small Python package for splitting text into dialogue and narrative.","archived":false,"fork":false,"pushed_at":"2025-08-02T11:43:57.000Z","size":140,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-02T13:27:24.925Z","etag":null,"topics":["dialogue","narrative","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prosegrinder.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-04-07T02:07:22.000Z","updated_at":"2025-08-02T11:44:00.000Z","dependencies_parsed_at":"2023-02-17T03:00:59.549Z","dependency_job_id":"2adb208b-a56f-4040-b956-c3727f7d564f","html_url":"https://github.com/prosegrinder/python-narrative","commit_stats":{"total_commits":47,"total_committers":6,"mean_commits":7.833333333333333,"dds":"0.36170212765957444","last_synced_commit":"81cbb6fe2abef39190423d86d2ba621213399b2c"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/prosegrinder/python-narrative","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prosegrinder","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268400667,"owners_count":24244445,"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-08-02T02:00:12.353Z","response_time":74,"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_record":{"login":"prosegrinder","name":"ProseGrinder","uuid":"36105406","kind":"organization","description":"","email":null,"website":"https://www.prosegrinder.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/36105406?v=4","repositories_count":10,"last_synced_at":"2023-02-28T21:35:34.636Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/prosegrinder","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-11T22:36:55.724Z","updated_at":"2023-02-28T21:35:34.642Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prosegrinder","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prosegrinder/repositories"},"tags":[{"name":"v1.2.1","sha":"c30552cec4351f0d3065e9388e734fd515da3a13","kind":"commit","published_at":"2025-07-22T21:38:18.000Z","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/v1.2.1","html_url":"https://github.com/prosegrinder/python-narrative/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/prosegrinder/python-narrative@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"529a92d72adbf658727c31f2d5835c7f74b9ba26","kind":"commit","published_at":"2025-07-21T00:03:23.000Z","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/v1.2.0","html_url":"https://github.com/prosegrinder/python-narrative/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/prosegrinder/python-narrative@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.2.0/manifests"},{"name":"v1.1.2","sha":"0e661208186cfa214748b3280fd7f9bbcb77c4d6","kind":"commit","published_at":"2022-12-19T20:04:28.000Z","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/v1.1.2","html_url":"https://github.com/prosegrinder/python-narrative/releases/tag/v1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/prosegrinder/python-narrative@v1.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.1.2/manifests"},{"name":"v1.1.1","sha":"156645bd3b7d1fb9eeac5c6bbf131bd9be334e3b","kind":"tag","published_at":"2022-12-11T16:17:48.000Z","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/v1.1.1","html_url":"https://github.com/prosegrinder/python-narrative/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/prosegrinder/python-narrative@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"f303e21ced011a6d7e86c58d61cfefc215e56fd9","kind":"commit","published_at":"2022-10-16T16:09:26.000Z","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/v1.1.0","html_url":"https://github.com/prosegrinder/python-narrative/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/prosegrinder/python-narrative@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.1.0/manifests"},{"name":"v1.0.1","sha":"e584fbbf8dcbf8e8c1cc4c598b7d8de4ddc806c2","kind":"commit","published_at":"2021-08-26T11:14:29.000Z","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/v1.0.1","html_url":"https://github.com/prosegrinder/python-narrative/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/prosegrinder/python-narrative@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"eabf438745a4b3398d815102d466602a753c682a","kind":"commit","published_at":"2021-08-08T18:50:27.000Z","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/v1.0.0","html_url":"https://github.com/prosegrinder/python-narrative/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/prosegrinder/python-narrative@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v1.0.0/manifests"},{"name":"v0.1.2","sha":"4876d8662d6d13596f800b3ce5d8869406771b7d","kind":"commit","published_at":"2018-04-07T19:42:27.000Z","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/v0.1.2","html_url":"https://github.com/prosegrinder/python-narrative/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/prosegrinder/python-narrative@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"1f70a1c8037b553fb3b864980343372aaec9ab19","kind":"commit","published_at":"2018-04-07T19:21:36.000Z","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/v0.1.1","html_url":"https://github.com/prosegrinder/python-narrative/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/prosegrinder/python-narrative@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"ac3cf2d2a70f3921ddee5898c80f24b793cf4e05","kind":"commit","published_at":"2018-04-07T19:01:39.000Z","download_url":"https://codeload.github.com/prosegrinder/python-narrative/tar.gz/v0.1.0","html_url":"https://github.com/prosegrinder/python-narrative/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/prosegrinder/python-narrative@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2025-08-02T13:39:53.466Z","dependent_packages_count":1,"downloads":1095,"downloads_period":"last-month","dependent_repos_count":3,"rankings":{"downloads":18.314607611899255,"dependent_repos_count":9.074764798611836,"dependent_packages_count":4.555120031605612,"stargazers_count":31.95885871870201,"forks_count":29.87071085788652,"docker_downloads_count":null,"average":18.75481240374105},"purl":"pkg:pypi/narrative","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/narrative","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/narrative","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/narrative/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-07-21T00:15:46.553Z","issues_count":2,"pull_requests_count":42,"avg_time_to_close_issue":1243139.0,"avg_time_to_close_pull_request":1762480.8095238095,"issues_closed_count":2,"pull_requests_closed_count":42,"pull_request_authors_count":3,"issue_authors_count":2,"avg_comments_per_issue":2.0,"avg_comments_per_pull_request":0.7857142857142857,"merged_pull_requests_count":23,"bot_issues_count":0,"bot_pull_requests_count":25,"past_year_issues_count":0,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":965028.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":3,"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.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":3,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/issues","maintainers":[],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/narrative/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/narrative/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/narrative/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/narrative/related_packages","maintainers":[{"uuid":"davidlday","login":"davidlday","name":null,"email":null,"url":null,"packages_count":5,"html_url":"https://pypi.org/user/davidlday/","role":null,"created_at":"2022-12-11T16:47:33.723Z","updated_at":"2022-12-11T16:47:33.723Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/davidlday/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":726156,"maintainers_count":308801,"namespaces_count":0,"keywords_count":238245,"github":"pypi","metadata":{"funded_packages_count":50579},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-08T05:32:36.857Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":616465,"full_name":"prosegrinder/python-narrative","default_branch":"main","committers":[{"name":"David L. Day","email":"dday376@gmail.com","login":null,"count":30},{"name":"David L. Day","email":"1132144+davidlday","login":"davidlday","count":10},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":4},{"name":"github-actions[bot]","email":"github-actions[bot]","login":"github-actions[bot]","count":1},{"name":"davidlday","email":"david@davidlday.com","login":null,"count":1},{"name":"dependabot-preview[bot]","email":"27856297+dependabot-preview[bot]","login":"dependabot-preview[bot]","count":1}],"total_commits":47,"total_committers":6,"total_bot_commits":6,"total_bot_committers":3,"mean_commits":7.833333333333333,"dds":0.36170212765957444,"past_year_committers":[{"name":"David L. Day","email":"dday376@gmail.com","login":null,"count":9},{"name":"David L. Day","email":"1132144+davidlday","login":"davidlday","count":7},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":4},{"name":"davidlday","email":"david@davidlday.com","login":null,"count":1},{"name":"github-actions[bot]","email":"github-actions[bot]","login":"github-actions[bot]","count":1}],"past_year_total_commits":22,"past_year_total_committers":5,"past_year_total_bot_commits":5,"past_year_total_bot_committers":2,"past_year_mean_commits":4.4,"past_year_dds":0.5909090909090908,"last_synced_at":"2023-10-25T14:26:09.900Z","last_synced_commit":"81cbb6fe2abef39190423d86d2ba621213399b2c","created_at":"2023-03-09T07:42:40.655Z","updated_at":"2023-10-25T14:26:09.901Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-06T00:00:13.651Z","repositories_count":5480019,"commits_count":853389126,"contributors_count":31098155,"owners_count":906558,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"prosegrinder/python-narrative","html_url":"https://github.com/prosegrinder/python-narrative","last_synced_at":"2025-09-01T15:01:54.853Z","status":null,"issues_count":2,"pull_requests_count":52,"avg_time_to_close_issue":1243139.0,"avg_time_to_close_pull_request":1406447.9387755103,"issues_closed_count":2,"pull_requests_closed_count":49,"pull_request_authors_count":3,"issue_authors_count":2,"avg_comments_per_issue":2.0,"avg_comments_per_pull_request":0.75,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":32,"past_year_issues_count":0,"past_year_pull_requests_count":12,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":590673.7,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":10,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.5,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":10,"past_year_merged_pull_requests_count":8,"created_at":"2023-05-14T18:23:35.106Z","updated_at":"2025-09-03T00:16:19.225Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosegrinder%2Fpython-narrative/issues","issue_labels_count":{"enhancement":2},"pull_request_labels_count":{"dependencies":32,"python":22,"dependabot-batched":11,"github_actions":9,"enhancement":1},"issue_author_associations_count":{"NONE":1,"CONTRIBUTOR":1},"pull_request_author_associations_count":{"CONTRIBUTOR":52},"issue_authors":{"davidlday":1,"ceruulean":1},"pull_request_authors":{"dependabot[bot]":31,"davidlday":20,"dependabot-preview[bot]":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-08T00:00:17.013Z","repositories_count":10156380,"issues_count":32044730,"pull_requests_count":100170895,"authors_count":10725164,"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":{"dependencies":10,"github_actions":7,"python":3},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":12},"past_year_issue_authors":{},"past_year_pull_request_authors":{"dependabot[bot]":10,"davidlday":2},"maintainers":[],"active_maintainers":[]},"events":{"total":{"ReleaseEvent":2,"WatchEvent":1,"DeleteEvent":7,"IssueCommentEvent":6,"PushEvent":15,"PullRequestReviewEvent":12,"PullRequestEvent":18,"CreateEvent":9},"last_year":{"ReleaseEvent":2,"WatchEvent":1,"DeleteEvent":7,"IssueCommentEvent":6,"PushEvent":15,"PullRequestReviewEvent":12,"PullRequestEvent":18,"CreateEvent":9}},"keywords":["dialogue","narrative","python"],"dependencies":[{"ecosystem":"pypi","filepath":"poetry.lock","sha":null,"kind":"lockfile","created_at":"2023-01-31T21:15:52.331Z","updated_at":"2023-01-31T21:15:52.331Z","repository_link":"https://github.com/prosegrinder/python-narrative/blob/main/poetry.lock","dependencies":[{"id":7281328449,"package_name":"astroid","ecosystem":"pypi","requirements":"2.12.13","direct":false,"kind":"develop","optional":false},{"id":7281328450,"package_name":"attrs","ecosystem":"pypi","requirements":"22.1.0","direct":false,"kind":"develop","optional":false},{"id":7281328451,"package_name":"black","ecosystem":"pypi","requirements":"22.12.0","direct":false,"kind":"develop","optional":false},{"id":7281328452,"package_name":"click","ecosystem":"pypi","requirements":"8.1.3","direct":false,"kind":"develop","optional":false},{"id":7281328453,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"develop","optional":false},{"id":7281328454,"package_name":"dill","ecosystem":"pypi","requirements":"0.3.6","direct":false,"kind":"develop","optional":false},{"id":7281328455,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.0.4","direct":false,"kind":"develop","optional":false},{"id":7281328456,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"5.1.0","direct":false,"kind":"runtime","optional":false},{"id":7281328457,"package_name":"iniconfig","ecosystem":"pypi","requirements":"1.1.1","direct":false,"kind":"develop","optional":false},{"id":7281328458,"package_name":"isort","ecosystem":"pypi","requirements":"5.10.1","direct":false,"kind":"develop","optional":false},{"id":7281328459,"package_name":"lazy-object-proxy","ecosystem":"pypi","requirements":"1.8.0","direct":false,"kind":"develop","optional":false},{"id":7281328460,"package_name":"mccabe","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"develop","optional":false},{"id":7281328461,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"0.4.3","direct":false,"kind":"develop","optional":false},{"id":7281328462,"package_name":"packaging","ecosystem":"pypi","requirements":"22.0","direct":false,"kind":"develop","optional":false},{"id":7281328463,"package_name":"pathspec","ecosystem":"pypi","requirements":"0.10.3","direct":false,"kind":"develop","optional":false},{"id":7281328464,"package_name":"platformdirs","ecosystem":"pypi","requirements":"2.6.0","direct":false,"kind":"develop","optional":false},{"id":7281328465,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"develop","optional":false},{"id":7281328466,"package_name":"pylint","ecosystem":"pypi","requirements":"2.15.8","direct":false,"kind":"develop","optional":false},{"id":7281328467,"package_name":"pytest","ecosystem":"pypi","requirements":"7.2.0","direct":false,"kind":"develop","optional":false},{"id":7281328468,"package_name":"tomli","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":"develop","optional":false},{"id":7281328469,"package_name":"tomlkit","ecosystem":"pypi","requirements":"0.11.6","direct":false,"kind":"develop","optional":false},{"id":7281328470,"package_name":"typed-ast","ecosystem":"pypi","requirements":"1.5.4","direct":false,"kind":"develop","optional":false},{"id":7281328471,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.4.0","direct":false,"kind":"runtime","optional":false},{"id":7281328472,"package_name":"wrapt","ecosystem":"pypi","requirements":"1.14.1","direct":false,"kind":"develop","optional":false},{"id":7281328473,"package_name":"zipp","ecosystem":"pypi","requirements":"3.11.0","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2023-01-31T21:15:52.362Z","updated_at":"2023-01-31T21:15:52.362Z","repository_link":"https://github.com/prosegrinder/python-narrative/blob/main/pyproject.toml","dependencies":[{"id":7281328475,"package_name":"python","ecosystem":"pypi","requirements":"^3.7.2","direct":true,"kind":"runtime","optional":false},{"id":7281328476,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"^5.1.0","direct":true,"kind":"runtime","optional":false}]}],"score":10.181119289134408,"created_at":"2025-09-08T11:18:53.782Z","updated_at":"2025-10-07T08:25:30.613Z","avatar_url":"https://github.com/prosegrinder.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":1095,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["annotation","yolov5","optim","serializer","sequences","xunit-test","data-structures","distribution","packaging","xunit-framework"],"project_url":"https://science.ecosyste.ms/api/v1/projects/68191","html_url":"https://science.ecosyste.ms/projects/68191"}