{"id":53802,"name":"academic-observatory-workflows","description":"Telescopes, Workflows and Data Services for the Academic Observatory","url":"https://github.com/the-academic-observatory/academic-observatory-workflows","last_synced_at":"2025-09-05T13:13:20.396Z","repository":{"id":36975448,"uuid":"401298815","full_name":"The-Academic-Observatory/academic-observatory-workflows","owner":"The-Academic-Observatory","description":"Telescopes, Workflows and Data Services for the Academic Observatory","archived":false,"fork":false,"pushed_at":"2025-08-18T00:42:25.000Z","size":9952,"stargazers_count":16,"open_issues_count":6,"forks_count":2,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-18T02:34:33.704Z","etag":null,"topics":["academic","data","higher-education","research-evaluation","science","workflow"],"latest_commit_sha":null,"homepage":"https://academic-observatory-workflows.readthedocs.io","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/The-Academic-Observatory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json"}},"created_at":"2021-08-30T10:10:55.000Z","updated_at":"2025-08-18T00:32:14.000Z","dependencies_parsed_at":"2025-07-24T03:28:27.135Z","dependency_job_id":"e52c43a8-754f-4a5b-8e41-9628a81b3e34","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows","commit_stats":{"total_commits":303,"total_committers":14,"mean_commits":"21.642857142857142","dds":0.636963696369637,"last_synced_commit":"2a46d6941451f9807845faf1ef467a516f6d794e"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/sbom","scorecard":{"id":139667,"data":{"date":"2025-08-04","repo":{"name":"github.com/The-Academic-Observatory/academic-observatory-workflows","commit":"3bf67456fcba3cf0335ac82645568383503d0afb"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":5,"checks":[{"name":"Code-Review","score":3,"reason":"Found 9/30 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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"16 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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/build-and-push-container.yml:1","Warn: no topLevel permission defined: .github/workflows/deploy.yml:1","Warn: no topLevel permission defined: .github/workflows/publish-pypi.yml:1","Warn: no topLevel permission defined: .github/workflows/unit-tests.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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/build-and-push-container.yml:12"],"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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"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/build-and-push-container.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/build-and-push-container.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-and-push-container.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/build-and-push-container.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/deploy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-pypi.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/publish-pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-pypi.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/publish-pypi.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-pypi.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/publish-pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/unit-tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/unit-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/unit-tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/unit-tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:113: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/unit-tests.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating quay.io/astronomer/astro-runtime:12.7.1 to quay.io/astronomer/astro-runtime:12.7.1@sha256:b1752587e132f2decfe3a2e3ff7d9fa1a432152066adcbecfb7d08ccbae778a5","Warn: containerImage not pinned by hash: ftp-server-Dockerfile:1: pin your Docker image by updating python:3.9-slim to python:3.9-slim@sha256:4b826e2ca2191c24a03bdbf0c342a73c6ee4ce929eac5ebc47fef78f66b839d6","Warn: containerImage not pinned by hash: http-server-Dockerfile:1: pin your Docker image by updating python:3.9-slim to python:3.9-slim@sha256:4b826e2ca2191c24a03bdbf0c342a73c6ee4ce929eac5ebc47fef78f66b839d6","Warn: pipCommand not pinned by hash: Dockerfile:29","Warn: pipCommand not pinned by hash: Dockerfile:33","Warn: pipCommand not pinned by hash: ftp-server-Dockerfile:5","Warn: pipCommand not pinned by hash: http-server-Dockerfile:5","Warn: pipCommand not pinned by hash: .github/workflows/unit-tests.yml:66","Warn: pipCommand not pinned by hash: .github/workflows/unit-tests.yml:71","Warn: pipCommand not pinned by hash: .github/workflows/unit-tests.yml:74","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   6 third-party GitHubAction dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned","Info:   0 out of   7 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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2021-356 / GHSA-2ww3-fxvq-293j","Warn: Project is vulnerable to: PYSEC-2024-167 / GHSA-cgvx-9447-vcch","Warn: Project is vulnerable to: PYSEC-2021-859 / GHSA-f8m6-h2c7-8h9x","Warn: Project is vulnerable to: PYSEC-2019-106 / GHSA-mr7p-25v2-35wr","Warn: Project is vulnerable to: PYSEC-2022-5 / GHSA-rqjh-jp2r-59cj"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T07:38:42.791Z","repository_id":36975448,"created_at":"2025-08-16T07:38:42.791Z","updated_at":"2025-08-16T07:38:42.791Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273761167,"owners_count":25163185,"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-05T02:00:09.113Z","response_time":402,"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":"The-Academic-Observatory","name":"The Academic Observatory","uuid":"55219966","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/55219966?v=4","repositories_count":14,"last_synced_at":"2023-03-03T21:58:14.257Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/The-Academic-Observatory","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T05:53:44.272Z","updated_at":"2023-03-03T21:58:14.261Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory/repositories"},"packages":[{"id":2630772,"name":"academic-observatory-workflows","ecosystem":"pypi","description":"Academic Observatory Workflows provides Apache Airflow Workflows for fetching, processing and analysing data about academic institutions.","homepage":"https://github.com/The-Academic-Observatory/academic-observatory-workflows","licenses":"Apache License Version 2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows","keywords_array":["science","data","workflows","academic institutes","academic-observatory-workflows"],"namespace":null,"versions_count":3,"first_release_published_at":"2021-09-10T05:59:20.000Z","latest_release_published_at":"2022-03-18T00:21:52.000Z","latest_release_number":"2022.3.0","last_synced_at":"2025-08-18T02:41:07.453Z","created_at":"2022-04-10T09:57:29.176Z","updated_at":"2025-08-18T02:41:33.749Z","registry_url":"https://pypi.org/project/academic-observatory-workflows/","install_command":"pip install academic-observatory-workflows --index-url https://pypi.org/simple","documentation_url":"https://academic-observatory-workflows.readthedocs.io/en/latest/","metadata":{"funding":null,"documentation":"https://academic-observatory-workflows.readthedocs.io/en/latest/","classifiers":["Development Status :: 2 - Pre-Alpha","Environment :: Console","Environment :: Web Environment","Intended Audience :: Developers","Intended Audience :: Science/Research","License :: OSI Approved :: Apache Software License","Operating System :: OS Independent","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.7","Topic :: Scientific/Engineering","Topic :: Software Development :: Libraries","Topic :: Software Development :: Libraries :: Python Modules","Topic :: Utilities"],"normalized_name":"academic-observatory-workflows","project_status":null},"repo_metadata":{"id":36975448,"uuid":"401298815","full_name":"The-Academic-Observatory/academic-observatory-workflows","owner":"The-Academic-Observatory","description":"Telescopes, Workflows and Data Services for the Academic Observatory","archived":false,"fork":false,"pushed_at":"2025-08-18T00:42:25.000Z","size":9952,"stargazers_count":16,"open_issues_count":6,"forks_count":2,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-18T02:34:33.704Z","etag":null,"topics":["academic","data","higher-education","research-evaluation","science","workflow"],"latest_commit_sha":null,"homepage":"https://academic-observatory-workflows.readthedocs.io","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/The-Academic-Observatory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json"}},"created_at":"2021-08-30T10:10:55.000Z","updated_at":"2025-08-18T00:32:14.000Z","dependencies_parsed_at":"2025-07-24T03:28:27.135Z","dependency_job_id":"e52c43a8-754f-4a5b-8e41-9628a81b3e34","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows","commit_stats":{"total_commits":303,"total_committers":14,"mean_commits":"21.642857142857142","dds":0.636963696369637,"last_synced_commit":"2a46d6941451f9807845faf1ef467a516f6d794e"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/sbom","scorecard":{"id":139667,"data":{"date":"2025-08-04","repo":{"name":"github.com/The-Academic-Observatory/academic-observatory-workflows","commit":"3bf67456fcba3cf0335ac82645568383503d0afb"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":5,"checks":[{"name":"Code-Review","score":3,"reason":"Found 9/30 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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"16 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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/build-and-push-container.yml:1","Warn: no topLevel permission defined: .github/workflows/deploy.yml:1","Warn: no topLevel permission defined: .github/workflows/publish-pypi.yml:1","Warn: no topLevel permission defined: .github/workflows/unit-tests.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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/build-and-push-container.yml:12"],"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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"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/build-and-push-container.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/build-and-push-container.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-and-push-container.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/build-and-push-container.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/deploy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-pypi.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/publish-pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-pypi.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/publish-pypi.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-pypi.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/publish-pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/unit-tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/unit-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/unit-tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/unit-tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:113: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/academic-observatory-workflows/unit-tests.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating quay.io/astronomer/astro-runtime:12.7.1 to quay.io/astronomer/astro-runtime:12.7.1@sha256:b1752587e132f2decfe3a2e3ff7d9fa1a432152066adcbecfb7d08ccbae778a5","Warn: containerImage not pinned by hash: ftp-server-Dockerfile:1: pin your Docker image by updating python:3.9-slim to python:3.9-slim@sha256:4b826e2ca2191c24a03bdbf0c342a73c6ee4ce929eac5ebc47fef78f66b839d6","Warn: containerImage not pinned by hash: http-server-Dockerfile:1: pin your Docker image by updating python:3.9-slim to python:3.9-slim@sha256:4b826e2ca2191c24a03bdbf0c342a73c6ee4ce929eac5ebc47fef78f66b839d6","Warn: pipCommand not pinned by hash: Dockerfile:29","Warn: pipCommand not pinned by hash: Dockerfile:33","Warn: pipCommand not pinned by hash: ftp-server-Dockerfile:5","Warn: pipCommand not pinned by hash: http-server-Dockerfile:5","Warn: pipCommand not pinned by hash: .github/workflows/unit-tests.yml:66","Warn: pipCommand not pinned by hash: .github/workflows/unit-tests.yml:71","Warn: pipCommand not pinned by hash: .github/workflows/unit-tests.yml:74","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   6 third-party GitHubAction dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned","Info:   0 out of   7 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/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2021-356 / GHSA-2ww3-fxvq-293j","Warn: Project is vulnerable to: PYSEC-2024-167 / GHSA-cgvx-9447-vcch","Warn: Project is vulnerable to: PYSEC-2021-859 / GHSA-f8m6-h2c7-8h9x","Warn: Project is vulnerable to: PYSEC-2019-106 / GHSA-mr7p-25v2-35wr","Warn: Project is vulnerable to: PYSEC-2022-5 / GHSA-rqjh-jp2r-59cj"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/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 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T07:38:42.791Z","repository_id":36975448,"created_at":"2025-08-16T07:38:42.791Z","updated_at":"2025-08-16T07:38:42.791Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270936073,"owners_count":24670945,"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-18T02:00:08.743Z","response_time":89,"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":"The-Academic-Observatory","name":"The Academic Observatory","uuid":"55219966","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/55219966?v=4","repositories_count":14,"last_synced_at":"2023-03-03T21:58:14.257Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/The-Academic-Observatory","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T05:53:44.272Z","updated_at":"2023-03-03T21:58:14.261Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory/repositories"},"tags":[{"name":"v0.1.7","sha":"b71e4f3feeaf344488d0e1961268030612848490","kind":"commit","published_at":"2025-08-18T00:32:10.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/v0.1.7","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/v0.1.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@v0.1.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.7/manifests"},{"name":"v0.1.6","sha":"0cd2128a98f4483beb764f80f5e59e592a0b6f48","kind":"commit","published_at":"2025-07-21T05:01:47.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/v0.1.6","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/v0.1.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@v0.1.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.6/manifests"},{"name":"v0.1.5","sha":"f67698571c9f65ab3c1161388e668b6d03a5766a","kind":"commit","published_at":"2025-07-16T00:10:06.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/v0.1.5","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/v0.1.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@v0.1.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.5/manifests"},{"name":"v0.1.4","sha":"82fc64fc999de776a404143a8dadc420da72b8f9","kind":"commit","published_at":"2025-07-10T05:10:47.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/v0.1.4","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/v0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@v0.1.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.4/manifests"},{"name":"v0.1.3","sha":"3f66af67d6103d7027704ea5bc910e7e3c977d54","kind":"commit","published_at":"2025-07-09T00:04:00.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/v0.1.3","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/v0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@v0.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.3/manifests"},{"name":"v0.1.2","sha":"0390e86df116262529145f4888600d62dcfd999b","kind":"commit","published_at":"2025-07-07T01:32:22.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/v0.1.2","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"e0e5affe020a1ec4c20fd79754e8fc01a9d4d09c","kind":"commit","published_at":"2025-07-04T00:22:54.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/v0.1.1","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"fd78153b0599a57330ffe14cd49695a70eff1065","kind":"commit","published_at":"2025-07-03T01:51:17.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/v0.1.0","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/v0.1.0/manifests"},{"name":"2023.12.0","sha":"3f0bad15ac3491e0ee15e2c1a61d1f0f79140fa3","kind":"commit","published_at":"2023-12-06T23:09:59.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/2023.12.0","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/2023.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@2023.12.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/2023.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/2023.12.0/manifests"},{"name":"2022.03.0","sha":"6a6669a29344d394b0bfe85a543dadddb9f09293","kind":"commit","published_at":"2022-03-15T19:55:18.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/2022.03.0","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/2022.03.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@2022.03.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/2022.03.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/2022.03.0/manifests"},{"name":"2021.09.1","sha":"48905c548cd3162a73678b2e4b1f73a73f6127e8","kind":"commit","published_at":"2021-09-28T01:38:46.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/2021.09.1","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/2021.09.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@2021.09.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/2021.09.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/2021.09.1/manifests"},{"name":"2021.09.0","sha":"a25ed8b12517136e2197544576c86c53eab76a93","kind":"commit","published_at":"2021-09-10T05:50:43.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/academic-observatory-workflows/tar.gz/2021.09.0","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/releases/tag/2021.09.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/academic-observatory-workflows@2021.09.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/2021.09.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/tags/2021.09.0/manifests"}]},"repo_metadata_updated_at":"2025-08-18T02:41:33.749Z","dependent_packages_count":0,"downloads":18,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":24.056699239707797,"dependent_repos_count":21.619800316896704,"dependent_packages_count":10.082087700208083,"stargazers_count":15.580554240058664,"forks_count":29.75774583357196,"docker_downloads_count":null,"average":20.21937746608864},"purl":"pkg:pypi/academic-observatory-workflows","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/academic-observatory-workflows","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/academic-observatory-workflows","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/academic-observatory-workflows/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-07-24T06:07:52.462Z","issues_count":2,"pull_requests_count":173,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":1817956.2704402516,"issues_closed_count":0,"pull_requests_closed_count":159,"pull_request_authors_count":11,"issue_authors_count":2,"avg_comments_per_issue":0.0,"avg_comments_per_pull_request":0.9421965317919075,"merged_pull_requests_count":139,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"past_year_pull_requests_count":14,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2109704.6666666665,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.14285714285714285,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":9,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/issues","maintainers":[{"login":"aroelo","count":28,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aroelo"},{"login":"tuanchien","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tuanchien"},{"login":"alexmassen-hane","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/alexmassen-hane"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/academic-observatory-workflows/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/academic-observatory-workflows/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/academic-observatory-workflows/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/academic-observatory-workflows/related_packages","maintainers":[{"uuid":"jdddog","login":"jdddog","name":null,"email":null,"url":null,"packages_count":6,"html_url":"https://pypi.org/user/jdddog/","role":null,"created_at":"2022-11-14T22:02:25.379Z","updated_at":"2022-11-14T22:02:25.379Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/jdddog/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":725136,"maintainers_count":308365,"namespaces_count":0,"keywords_count":238006,"github":"pypi","metadata":{"funded_packages_count":50519},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-05T05:40:58.860Z","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":530012,"full_name":"The-Academic-Observatory/academic-observatory-workflows","default_branch":"develop","committers":[{"name":"Jamie Diprose","email":"jamie.diprose@gmail.com","count":110},{"name":"aroelo","email":"aniek.roelofs@curtin.edu.au","count":76},{"name":"tuanchien","email":"tuanchien@users.noreply.github.com","count":39},{"name":"Bec Handcock","email":"43615088+bechandcock@users.noreply.github.com","count":17},{"name":"Richard Hosking","email":"richard@hoskingnz.com","count":15},{"name":"Bec Handcock","email":"43615088+rnhandcock@users.noreply.github.com","count":10},{"name":"Richard Hosking","email":"richard.hosking@curtin.edu.au","count":9},{"name":"Cameron Neylon","email":"cn@cameronneylon.net","count":6},{"name":"Jamie Diprose","email":"5715104+jdddog@users.noreply.github.com","count":6},{"name":"Keegan Smith","email":"34429506+keegansmith21@users.noreply.github.com","count":6},{"name":"aroelo","email":"aniek93@live.nl","count":4},{"name":"Alex Massen-Hane","email":"104514872+alexmassen-hane@users.noreply.github.com","count":3},{"name":"kathrynnapier","email":"42160715+kathrynnapier@users.noreply.github.com","count":1},{"name":"Samuel Klein","email":"meta.sj@gmail.com","count":1}],"total_commits":303,"total_committers":14,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":21.642857142857142,"dds":0.636963696369637,"past_year_committers":null,"past_year_total_commits":null,"past_year_total_committers":null,"past_year_total_bot_commits":null,"past_year_total_bot_committers":null,"past_year_mean_commits":null,"past_year_dds":null,"last_synced_at":"2023-03-17T19:51:16.738Z","last_synced_commit":"2a46d6941451f9807845faf1ef467a516f6d794e","created_at":"2023-03-09T03:44:55.104Z","updated_at":"2023-09-19T17:09:26.698Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-08-31T00:00:08.451Z","repositories_count":5479765,"commits_count":853310318,"contributors_count":31095240,"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":"The-Academic-Observatory/academic-observatory-workflows","html_url":"https://github.com/The-Academic-Observatory/academic-observatory-workflows","last_synced_at":"2025-08-31T16:30:18.562Z","status":null,"issues_count":4,"pull_requests_count":193,"avg_time_to_close_issue":256784.0,"avg_time_to_close_pull_request":1893735.2758620689,"issues_closed_count":1,"pull_requests_closed_count":174,"pull_request_authors_count":11,"issue_authors_count":4,"avg_comments_per_issue":0.0,"avg_comments_per_pull_request":0.8497409326424871,"merged_pull_requests_count":154,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":3,"past_year_pull_requests_count":29,"past_year_avg_time_to_close_issue":256784.0,"past_year_avg_time_to_close_pull_request":1095081.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":19,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.034482758620689655,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":19,"created_at":"2023-05-14T08:23:27.921Z","updated_at":"2025-09-02T23:40:28.243Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Facademic-observatory-workflows/issues","issue_labels_count":{"bug":1},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":1,"CONTRIBUTOR":1,"COLLABORATOR":1},"pull_request_author_associations_count":{"CONTRIBUTOR":164,"COLLABORATOR":40,"NONE":2},"issue_authors":{"aroelo":1,"denraf":1,"jdddog":1},"pull_request_authors":{"jdddog":97,"keegansmith21":32,"aroelo":27,"alexmassen-hane":21,"tuanchien":11,"kathrynnapier":8,"rhosking":4,"bechandcock":2,"bmkramer":2,"cameronneylon":1,"JulianTonti":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-05T00:00:10.444Z","repositories_count":10100132,"issues_count":31474143,"pull_requests_count":97447451,"authors_count":10702673,"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":{"bug":1},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"CONTRIBUTOR":1,"NONE":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":26,"NONE":1},"past_year_issue_authors":{"denraf":1,"jdddog":1},"past_year_pull_request_authors":{"keegansmith21":16,"jdddog":9,"bmkramer":2},"maintainers":[{"login":"aroelo","count":28,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aroelo"},{"login":"tuanchien","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tuanchien"},{"login":"alexmassen-hane","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/alexmassen-hane"}],"active_maintainers":[]},"events":{"total":{"CreateEvent":26,"ReleaseEvent":8,"IssuesEvent":7,"DeleteEvent":24,"MemberEvent":1,"IssueCommentEvent":5,"PushEvent":141,"PullRequestReviewCommentEvent":28,"PullRequestReviewEvent":35,"PullRequestEvent":45,"ForkEvent":1},"last_year":{"CreateEvent":26,"ReleaseEvent":8,"IssuesEvent":7,"DeleteEvent":24,"MemberEvent":1,"IssueCommentEvent":5,"PushEvent":141,"PullRequestReviewCommentEvent":28,"PullRequestReviewEvent":35,"PullRequestEvent":45,"ForkEvent":1}},"keywords":["academic","data","higher-education","research-evaluation","science","workflow"],"dependencies":[{"ecosystem":"pypi","filepath":"docs/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-06-29T00:39:59.613Z","updated_at":"2022-06-29T00:39:59.613Z","repository_link":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/blob/main/docs/requirements.txt","dependencies":[{"id":86570328,"package_name":"Sphinx","ecosystem":"pypi","requirements":"\u003e3","direct":true,"kind":"runtime","optional":false},{"id":86570329,"package_name":"sphinx-autoapi","ecosystem":"pypi","requirements":"==1.8.","direct":true,"kind":"runtime","optional":false},{"id":86570330,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"==0.5.","direct":true,"kind":"runtime","optional":false},{"id":86570331,"package_name":"recommonmark","ecosystem":"pypi","requirements":"==0.7.","direct":true,"kind":"runtime","optional":false},{"id":86570332,"package_name":"pbr","ecosystem":"pypi","requirements":"==5.5.","direct":true,"kind":"runtime","optional":false},{"id":86570333,"package_name":"six","ecosystem":"pypi","requirements":"==1.16.","direct":true,"kind":"runtime","optional":false},{"id":86570334,"package_name":"nltk","ecosystem":"pypi","requirements":"==3.","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2022-06-29T00:39:59.674Z","updated_at":"2022-06-29T00:39:59.674Z","repository_link":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/blob/main/requirements.txt","dependencies":[{"id":86570336,"package_name":"xmltodict","ecosystem":"pypi","requirements":"==0.12.","direct":true,"kind":"runtime","optional":false},{"id":86570337,"package_name":"backoff","ecosystem":"pypi","requirements":"\u003c2,\u003e=1.11.0","direct":true,"kind":"runtime","optional":false},{"id":86570338,"package_name":"ratelimit","ecosystem":"pypi","requirements":"==2.2.","direct":true,"kind":"runtime","optional":false},{"id":86570339,"package_name":"wos","ecosystem":"pypi","requirements":"==0.2.","direct":true,"kind":"runtime","optional":false},{"id":86570340,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e=1.3,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":86570341,"package_name":"beautifulsoup4","ecosystem":"pypi","requirements":"\u003e=4.9.3,\u003c5","direct":true,"kind":"runtime","optional":false},{"id":86570342,"package_name":"boto3","ecosystem":"pypi","requirements":"\u003e=1.15.0,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":86570343,"package_name":"pyarrow","ecosystem":"pypi","requirements":"\u003e=6,\u003c7","direct":true,"kind":"runtime","optional":false},{"id":86570344,"package_name":"nltk","ecosystem":"pypi","requirements":"==3.","direct":true,"kind":"runtime","optional":false},{"id":86570345,"package_name":"Deprecated","ecosystem":"pypi","requirements":"\u003e1,\u003c2","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/publish-pypi.yml","sha":null,"kind":"manifest","created_at":"2023-01-17T10:31:45.199Z","updated_at":"2023-01-17T10:31:45.199Z","repository_link":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/blob/main/.github/workflows/publish-pypi.yml","dependencies":[{"id":6981096633,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6981096639,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6981096640,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/unit-tests.yml","sha":null,"kind":"manifest","created_at":"2023-01-17T10:31:45.261Z","updated_at":"2023-01-17T10:31:45.261Z","repository_link":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/blob/main/.github/workflows/unit-tests.yml","dependencies":[{"id":6981096744,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6981096745,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6981096746,"package_name":"codecov/codecov-action","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2025-04-11T16:48:01.255Z","updated_at":"2025-04-11T16:48:01.255Z","repository_link":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/blob/main/Dockerfile","dependencies":[{"id":22643568469,"package_name":"quay.io/astronomer/astro-runtime","ecosystem":"docker","requirements":"12.7.1","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"academic-observatory-workflows/pyproject.toml","sha":null,"kind":"manifest","created_at":"2025-04-11T16:48:02.914Z","updated_at":"2025-04-11T16:48:02.914Z","repository_link":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/blob/main/academic-observatory-workflows/pyproject.toml","dependencies":[{"id":22643568506,"package_name":"xmltodict","ecosystem":"pypi","requirements":"\u003e=0.12.0,\u003c1","direct":true,"kind":"runtime","optional":false},{"id":22643568507,"package_name":"backoff","ecosystem":"pypi","requirements":"\u003e=2,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":22643568508,"package_name":"ratelimit","ecosystem":"pypi","requirements":"\u003e=2.2.0,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":22643568509,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e=1.3,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":22643568510,"package_name":"beautifulsoup4","ecosystem":"pypi","requirements":"\u003e=4.9.3,\u003c5","direct":true,"kind":"runtime","optional":false},{"id":22643568511,"package_name":"boto3","ecosystem":"pypi","requirements":"\u003e=1.15.0,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":22643568512,"package_name":"nltk","ecosystem":"pypi","requirements":"\u003e=3.9.1,\u003c4","direct":true,"kind":"runtime","optional":false},{"id":22643568513,"package_name":"Deprecated","ecosystem":"pypi","requirements":"\u003e=1,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":22643568514,"package_name":"limits","ecosystem":"pypi","requirements":"\u003e=4,\u003c5","direct":true,"kind":"runtime","optional":false},{"id":22643568515,"package_name":"biopython","ecosystem":"pypi","requirements":"\u003e=1.81,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":22643568516,"package_name":"glom","ecosystem":"pypi","requirements":"\u003e=23.0.0,\u003c24","direct":true,"kind":"runtime","optional":false},{"id":22643569756,"package_name":"bigquery-schema-generator","ecosystem":"pypi","requirements":"\u003e=1.6.1,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":22643569820,"package_name":"deepdiff","ecosystem":"pypi","requirements":"\u003e=8,\u003c9","direct":true,"kind":"runtime","optional":false},{"id":22643569821,"package_name":"lxml","ecosystem":"pypi","requirements":"\u003e=5,\u003c6","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/build-and-push-container.yml","sha":null,"kind":"manifest","created_at":"2025-07-09T01:22:37.318Z","updated_at":"2025-07-09T01:22:37.318Z","repository_link":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/blob/main/.github/workflows/build-and-push-container.yml","dependencies":[{"id":24045788247,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24045788248,"package_name":"google-github-actions/auth","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/deploy.yml","sha":null,"kind":"manifest","created_at":"2025-07-09T01:22:37.387Z","updated_at":"2025-07-09T01:22:37.387Z","repository_link":"https://github.com/The-Academic-Observatory/academic-observatory-workflows/blob/main/.github/workflows/deploy.yml","dependencies":[{"id":24045788550,"package_name":"astronomer/deploy-action","ecosystem":"actions","requirements":"v0.4","direct":true,"kind":"composite","optional":false}]}],"score":8.725832056527565,"created_at":"2025-09-04T15:51:29.471Z","updated_at":"2025-10-07T08:21:09.813Z","avatar_url":"https://github.com/The-Academic-Observatory.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":18,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["ebooks","airflow","observatory-platform"],"project_url":"https://science.ecosyste.ms/api/v1/projects/53802","html_url":"https://science.ecosyste.ms/projects/53802","bibtex_url":"https://science.ecosyste.ms/projects/53802/export.bibtex","apalike_url":"https://science.ecosyste.ms/projects/53802/export.apalike"}