{"id":35193032,"url":"https://github.com/dralshehri/epiweeks","last_synced_at":"2026-01-07T20:19:02.007Z","repository":{"id":57426737,"uuid":"159482380","full_name":"dralshehri/epiweeks","owner":"dralshehri","description":"Epidemiological weeks calculation based on the US CDC (MMWR) and ISO week numbering systems","archived":false,"fork":false,"pushed_at":"2024-05-24T09:02:35.000Z","size":149,"stargazers_count":19,"open_issues_count":0,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-05T06:42:26.250Z","etag":null,"topics":["calendar","cdc","epidemiology","iso","mmwr","public-health","python","surveillance","weeks"],"latest_commit_sha":null,"homepage":"https://epiweeks.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dralshehri.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2018-11-28T10:12:08.000Z","updated_at":"2025-07-10T19:40:25.000Z","dependencies_parsed_at":"2023-01-29T18:01:06.761Z","dependency_job_id":"b883f4e0-d16c-4b29-85cc-d091958d4e12","html_url":"https://github.com/dralshehri/epiweeks","commit_stats":null,"previous_names":["mhalshehri/epiweeks"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/dralshehri/epiweeks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dralshehri%2Fepiweeks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dralshehri%2Fepiweeks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dralshehri%2Fepiweeks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dralshehri%2Fepiweeks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dralshehri","download_url":"https://codeload.github.com/dralshehri/epiweeks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dralshehri%2Fepiweeks/sbom","scorecard":{"id":355162,"data":{"date":"2025-08-11","repo":{"name":"github.com/dralshehri/epiweeks","commit":"70c8e519213b205bb186f014cbb33bbd7f7a41ff"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"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":"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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","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":"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/checks.yml:78: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/checks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/checks.yml:80: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/checks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/checks.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/checks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/checks.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/checks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/checks.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/checks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/checks.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/checks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/draft.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/draft.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/draft.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/draft.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/draft.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/draft.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/dralshehri/epiweeks/release.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/checks.yml:87","Warn: pipCommand not pinned by hash: .github/workflows/checks.yml:88","Warn: pipCommand not pinned by hash: .github/workflows/checks.yml:89","Warn: pipCommand not pinned by hash: .github/workflows/checks.yml:39","Warn: pipCommand not pinned by hash: .github/workflows/checks.yml:40","Warn: pipCommand not pinned by hash: .github/workflows/checks.yml:41","Warn: pipCommand not pinned by hash: .github/workflows/checks.yml:68","Warn: pipCommand not pinned by hash: .github/workflows/checks.yml:69","Warn: pipCommand not pinned by hash: .github/workflows/checks.yml:70","Warn: pipCommand not pinned by hash: .github/workflows/release.yml:47","Info:   0 out of  12 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of  10 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/checks.yml:1","Warn: no topLevel permission defined: .github/workflows/draft.yml:1","Warn: no topLevel permission defined: .github/workflows/release.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":"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":"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":"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: MIT License: 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":"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":"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T09:21:24.384Z","repository_id":57426737,"created_at":"2025-08-18T09:21:24.384Z","updated_at":"2025-08-18T09:21:24.384Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28111428,"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-12-29T02:00:07.021Z","response_time":58,"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"}},"keywords":["calendar","cdc","epidemiology","iso","mmwr","public-health","python","surveillance","weeks"],"created_at":"2025-12-29T06:10:47.673Z","updated_at":"2026-01-07T20:19:01.990Z","avatar_url":"https://github.com/dralshehri.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EpiWeeks\n\n\u003c!-- start description --\u003e\n\nA Python package for accurate epidemiological weeks calculation using the US CDC (MMWR) and ISO week numbering systems.\n\nEpiWeeks provides reliable week calculations validated against CDC reference data, essential for disease surveillance, public health reporting, and epidemiological research.\n\n\u003c!-- end description --\u003e\n\n\u003c!-- start badges --\u003e\n\n[![Release Status](https://img.shields.io/badge/release-pass-success)][release] [![Coverage Status](https://img.shields.io/badge/coverage-100%25-success)][coverage] [![PyPI Downloads](https://static.pepy.tech/badge/epiweeks)][downloads] [![PyPI Version](https://img.shields.io/pypi/v/epiweeks)][pypi-version] [![Conda Version](https://img.shields.io/conda/vn/bioconda/epiweeks)][conda-version] [![Package License](https://img.shields.io/github/license/dralshehri/epiweeks)][license] [![Package DOI](https://img.shields.io/badge/doi-10.5281%2Fzenodo.18171641-blue)][doi]\n\n[release]: https://github.com/dralshehri/epiweeks/releases/latest\n[coverage]: https://github.com/dralshehri/epiweeks/releases/latest\n[downloads]: https://pepy.tech/project/epiweeks\n[pypi-version]: https://pypi.python.org/pypi/epiweeks\n[conda-version]: https://anaconda.org/bioconda/epiweeks\n[license]: https://github.com/dralshehri/epiweeks/blob/main/LICENSE\n[doi]: https://doi.org/10.5281/zenodo.18171641\n\n\u003c!-- end badges --\u003e\n\n\u003c!-- start summary --\u003e\n\n## ✨ Features\n\n- Support for both the US CDC (MMWR) and ISO week numbering systems\n- Accurate and tested calculations validated against CDC reference data\n- Intuitive, clean, and easy-to-use interface\n- Calculation of the start and end dates of weeks\n- Iteration of year's weeks or week's dates\n- Rich comparison between weeks\n- Logical operations for weeks (addition, subtraction and containment)\n- Comprehensive input validation and error handling\n- Full type annotations and 100% test coverage\n- Zero runtime dependencies\n\n## 📦 Installation\n\nTo install using `uv`, run:\n\n```shell\nuv add epiweeks\n```\n\nTo install using `pip`, run:\n\n```shell\npip install epiweeks\n```\n\nTo install using `conda`, run:\n\n```shell\nconda install -c bioconda epiweeks\n```\n\n## 🚀 Basic Usage\n\n```python\nfrom epiweeks import Week, Year\n\nweek = Week(2019, 1)\nprint(week.enddate())\n# 2019-01-05\n\nfor week in Year(2019).iterweeks():\n    print(week.enddate())\n# 2019-01-05\n# 2019-01-12\n# ...\n# 2019-12-21\n# 2019-12-28\n```\n\n\u003c!-- end summary --\u003e\n\n## 📚 Documentation\n\nPlease refer to \u003chttps://epiweeks.readthedocs.io\u003e for complete documentation on this package, which includes background information, usage examples, and API reference.\n\n## 🤝 Contributing\n\nIf you're interested in contributing, please check out the [Contributing](https://github.com/dralshehri/epiweeks/blob/main/CONTRIBUTING.md) guide for more information on how you can help!\n\n## 📄 License\n\nThis project is licensed under the terms of the MIT license.\n\n## 📝 Citation\n\nIf you plan to cite this project in your academic publication, please refer to \u003chttps://doi.org/10.5281/zenodo.18171641\u003e for citation information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdralshehri%2Fepiweeks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdralshehri%2Fepiweeks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdralshehri%2Fepiweeks/lists"}