{"id":20079,"name":"pythermalcomfort","description":"Package to calculate several thermal comfort indices (e.g. PMV, PPD, SET, adaptive) and convert physical variables.","url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort","last_synced_at":"2026-04-09T18:02:53.697Z","repository":{"id":39413480,"uuid":"239588350","full_name":"CenterForTheBuiltEnvironment/pythermalcomfort","owner":"CenterForTheBuiltEnvironment","description":"Package to calculate several thermal comfort indices (e.g. PMV, PPD, SET, adaptive) and convert physical variables.","archived":false,"fork":false,"pushed_at":"2026-03-26T17:47:30.000Z","size":21798,"stargazers_count":208,"open_issues_count":46,"forks_count":85,"subscribers_count":12,"default_branch":"master","last_synced_at":"2026-03-27T22:42:56.135Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pythermalcomfort.readthedocs.io/en/latest/","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/CenterForTheBuiltEnvironment.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-02-10T18:55:51.000Z","updated_at":"2026-03-25T11:06:25.000Z","dependencies_parsed_at":"2023-09-21T19:56:41.631Z","dependency_job_id":"f8c7877e-1688-496b-919e-615f9ce2bde9","html_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort","commit_stats":{"total_commits":667,"total_committers":6,"mean_commits":"111.16666666666667","dds":"0.21589205397301348","last_synced_commit":"496f3799de287737f2ea53cc6a8c900052a29aaa"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/CenterForTheBuiltEnvironment/pythermalcomfort","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment","download_url":"https://codeload.github.com/CenterForTheBuiltEnvironment/pythermalcomfort/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/sbom","scorecard":{"id":28047,"data":{"date":"2025-08-11","repo":{"name":"github.com/CenterForTheBuiltEnvironment/pythermalcomfort","commit":"fa35d6ec088f66119cd4693ea65fa49a9fd55f5d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.4,"checks":[{"name":"Code-Review","score":6,"reason":"Found 3/5 approved changesets -- score normalized to 6","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":"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":"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":"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":10,"reason":"30 commit(s) and 16 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build-test-publish-testPyPI.yml:1","Warn: no topLevel permission defined: .github/workflows/build-test-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/pull-request.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":"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-test-publish-testPyPI.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:54","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:55","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:56","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:30","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:52","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:25","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:49","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:50","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:51","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:52","Info:   0 out of  12 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  19 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":"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":"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":"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":"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T18:23:21.683Z","repository_id":39413480,"created_at":"2025-08-14T18:23:21.683Z","updated_at":"2025-08-14T18:23:21.683Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31144146,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-29T11:01:20.541Z","status":"ssl_error","status_checked_at":"2026-03-29T11:01:14.322Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"CenterForTheBuiltEnvironment","name":"CenterForTheBuiltEnvironment","uuid":"6592546","kind":"organization","description":"","email":null,"website":"http://cbe.berkeley.edu","location":"Berkeley, CA","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6592546?v=4","repositories_count":25,"last_synced_at":"2024-05-12T00:45:19.473Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/CenterForTheBuiltEnvironment","funding_links":[],"total_stars":320,"followers":45,"following":0,"created_at":"2022-11-06T23:19:51.643Z","updated_at":"2024-05-12T00:45:22.787Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment/repositories"},"packages":[{"id":776723,"name":"pythermalcomfort","ecosystem":"pypi","description":"pythermalcomfort is a comprehensive toolkit for calculating thermal comfort indices, heat/cold stress metrics, and thermophysiological responses. It supports multiple models, including PMV, PPD, adaptive comfort, SET, UTCI, Heat Index, Wind Chill Index, and Humidex. The package also includes thermophysiological models like the two-node (Gagge) and multinode (JOS-3) models to estimate physiological responses such as core temperature, skin temperature, and skin wettedness. ","homepage":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort","keywords_array":["thermal comfort","pmv","heat stress","cold stress","thermal sensation","thermal physiology","meteorology","climate analysis","discomfort","comfort","thermal environment","built environment"],"namespace":null,"versions_count":100,"first_release_published_at":"2020-02-11T05:45:57.000Z","latest_release_published_at":"2026-02-25T03:12:40.000Z","latest_release_number":"3.9.1","last_synced_at":"2026-04-02T02:18:04.347Z","created_at":"2022-04-07T12:22:18.876Z","updated_at":"2026-04-02T02:18:04.348Z","registry_url":"https://pypi.org/project/pythermalcomfort/","install_command":"pip install pythermalcomfort --index-url https://pypi.org/simple","documentation_url":"https://pythermalcomfort.readthedocs.io/","metadata":{"funding":null,"documentation":"https://pythermalcomfort.readthedocs.io/","classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","Intended Audience :: Education","Intended Audience :: Science/Research","License :: OSI Approved :: MIT License","Operating System :: Microsoft :: Windows","Operating System :: POSIX","Operating System :: Unix","Programming Language :: Python","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 :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy","Topic :: Education","Topic :: Scientific/Engineering","Topic :: Scientific/Engineering :: Atmospheric Science","Topic :: Utilities"],"normalized_name":"pythermalcomfort","project_status":null},"repo_metadata":{"id":39413480,"uuid":"239588350","full_name":"CenterForTheBuiltEnvironment/pythermalcomfort","owner":"CenterForTheBuiltEnvironment","description":"Package to calculate several thermal comfort indices (e.g. PMV, PPD, SET, adaptive) and convert physical variables.","archived":false,"fork":false,"pushed_at":"2024-10-23T11:53:44.000Z","size":4790,"stargazers_count":142,"open_issues_count":32,"forks_count":52,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-10-29T20:34:40.089Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pythermalcomfort.readthedocs.io/en/latest/","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/CenterForTheBuiltEnvironment.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null}},"created_at":"2020-02-10T18:55:51.000Z","updated_at":"2024-10-21T23:48:19.000Z","dependencies_parsed_at":"2023-09-21T19:56:41.631Z","dependency_job_id":"f8c7877e-1688-496b-919e-615f9ce2bde9","html_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort","commit_stats":{"total_commits":667,"total_committers":6,"mean_commits":"111.16666666666667","dds":"0.21589205397301348","last_synced_commit":"496f3799de287737f2ea53cc6a8c900052a29aaa"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment","download_url":"https://codeload.github.com/CenterForTheBuiltEnvironment/pythermalcomfort/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222131011,"owners_count":16936304,"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","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":"CenterForTheBuiltEnvironment","name":"CenterForTheBuiltEnvironment","uuid":"6592546","kind":"organization","description":"","email":null,"website":"http://cbe.berkeley.edu","location":"Berkeley, CA","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6592546?v=4","repositories_count":25,"last_synced_at":"2024-05-12T00:45:19.473Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/CenterForTheBuiltEnvironment","funding_links":[],"total_stars":320,"followers":45,"following":0,"created_at":"2022-11-06T23:19:51.643Z","updated_at":"2024-05-12T00:45:22.787Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment/repositories"},"tags":[{"name":"v0.0.0","sha":"45ef38fcbf3c529898cd89cca85d4ea549c95241","kind":"commit","published_at":"2020-02-11T01:52:56.000Z","download_url":"https://codeload.github.com/CenterForTheBuiltEnvironment/pythermalcomfort/tar.gz/v0.0.0","html_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/releases/tag/v0.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags/v0.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags/v0.0.0/manifests"}]},"repo_metadata_updated_at":"2024-10-29T23:13:02.840Z","dependent_packages_count":0,"downloads":11139,"downloads_period":"last-month","dependent_repos_count":4,"rankings":{"downloads":3.3941301513852515,"dependent_repos_count":7.648739077914628,"dependent_packages_count":7.31012528119255,"stargazers_count":6.762100910749664,"forks_count":6.058292566904903,"docker_downloads_count":null,"average":6.2346775976294},"purl":"pkg:pypi/pythermalcomfort","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pythermalcomfort","docker_dependents_count":1,"docker_downloads_count":38775,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pythermalcomfort","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pythermalcomfort/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-10-29T19:31:54.647Z","issues_count":94,"pull_requests_count":42,"avg_time_to_close_issue":3664264.7741935486,"avg_time_to_close_pull_request":236964.8205128205,"issues_closed_count":62,"pull_requests_closed_count":39,"pull_request_authors_count":10,"issue_authors_count":37,"avg_comments_per_issue":2.2659574468085104,"avg_comments_per_pull_request":1.4047619047619049,"merged_pull_requests_count":36,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":34,"past_year_pull_requests_count":17,"past_year_avg_time_to_close_issue":899953.0,"past_year_avg_time_to_close_pull_request":233511.5,"past_year_issues_closed_count":9,"past_year_pull_requests_closed_count":14,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":10,"past_year_avg_comments_per_issue":2.088235294117647,"past_year_avg_comments_per_pull_request":1.2352941176470589,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":12,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/issues","maintainers":[{"login":"FedericoTartarini","count":62,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/FedericoTartarini"},{"login":"AkihisaNomoto","count":10,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/AkihisaNomoto"}],"active_maintainers":[{"login":"FedericoTartarini","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/FedericoTartarini"},{"login":"AkihisaNomoto","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/AkihisaNomoto"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pythermalcomfort/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pythermalcomfort/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pythermalcomfort/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pythermalcomfort/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pythermalcomfort/codemeta","maintainers":[{"uuid":"FedericoTartarini","login":"FedericoTartarini","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/FedericoTartarini/","role":null,"created_at":"2023-02-23T15:19:10.071Z","updated_at":"2023-02-23T15:19:10.071Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/FedericoTartarini/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":830322,"maintainers_count":354407,"namespaces_count":0,"keywords_count":0,"github":"pypi","metadata":{"funded_packages_count":52946},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-04-01T06:27:22.786Z","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"}},{"id":4123718,"name":"github.com/centerforthebuiltenvironment/pythermalcomfort","ecosystem":"go","description":"","homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/centerforthebuiltenvironment/pythermalcomfort","keywords_array":[],"namespace":"github.com/centerforthebuiltenvironment","versions_count":2,"first_release_published_at":"2020-02-11T01:52:56.000Z","latest_release_published_at":"2025-07-31T02:06:34.000Z","latest_release_number":"v3.4.3+incompatible","last_synced_at":"2026-04-02T02:18:05.645Z","created_at":"2022-04-12T15:07:36.888Z","updated_at":"2026-04-02T02:18:05.645Z","registry_url":"https://pkg.go.dev/github.com/centerforthebuiltenvironment/pythermalcomfort","install_command":"go get github.com/centerforthebuiltenvironment/pythermalcomfort","documentation_url":"https://pkg.go.dev/github.com/centerforthebuiltenvironment/pythermalcomfort#section-documentation","metadata":{},"repo_metadata":{"id":39413480,"uuid":"239588350","full_name":"CenterForTheBuiltEnvironment/pythermalcomfort","owner":"CenterForTheBuiltEnvironment","description":"Package to calculate several thermal comfort indices (e.g. PMV, PPD, SET, adaptive) and convert physical variables.","archived":false,"fork":false,"pushed_at":"2025-10-08T08:27:56.000Z","size":7581,"stargazers_count":193,"open_issues_count":32,"forks_count":75,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-10-11T02:08:12.004Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pythermalcomfort.readthedocs.io/en/latest/","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/CenterForTheBuiltEnvironment.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-02-10T18:55:51.000Z","updated_at":"2025-10-08T23:39:18.000Z","dependencies_parsed_at":"2023-09-21T19:56:41.631Z","dependency_job_id":"f8c7877e-1688-496b-919e-615f9ce2bde9","html_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort","commit_stats":{"total_commits":667,"total_committers":6,"mean_commits":"111.16666666666667","dds":"0.21589205397301348","last_synced_commit":"496f3799de287737f2ea53cc6a8c900052a29aaa"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/CenterForTheBuiltEnvironment/pythermalcomfort","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment","download_url":"https://codeload.github.com/CenterForTheBuiltEnvironment/pythermalcomfort/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/sbom","scorecard":{"id":28047,"data":{"date":"2025-08-11","repo":{"name":"github.com/CenterForTheBuiltEnvironment/pythermalcomfort","commit":"fa35d6ec088f66119cd4693ea65fa49a9fd55f5d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.4,"checks":[{"name":"Code-Review","score":6,"reason":"Found 3/5 approved changesets -- score normalized to 6","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":"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":"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":"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":10,"reason":"30 commit(s) and 16 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build-test-publish-testPyPI.yml:1","Warn: no topLevel permission defined: .github/workflows/build-test-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/pull-request.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":"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-test-publish-testPyPI.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:54","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:55","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:56","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:30","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:52","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:25","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:49","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:50","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:51","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:52","Info:   0 out of  12 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  19 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":"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":"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":"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":"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T18:23:21.683Z","repository_id":39413480,"created_at":"2025-08-14T18:23:21.683Z","updated_at":"2025-08-14T18:23:21.683Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279011845,"owners_count":26085004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"CenterForTheBuiltEnvironment","name":"CenterForTheBuiltEnvironment","uuid":"6592546","kind":"organization","description":"","email":null,"website":"http://cbe.berkeley.edu","location":"Berkeley, CA","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6592546?v=4","repositories_count":25,"last_synced_at":"2024-05-12T00:45:19.473Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/CenterForTheBuiltEnvironment","funding_links":[],"total_stars":320,"followers":45,"following":0,"created_at":"2022-11-06T23:19:51.643Z","updated_at":"2024-05-12T00:45:22.787Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment/repositories"},"tags":[{"name":"v3.4.3","sha":"4d51e504023d4d9d754803f6180016be81873118","kind":"commit","published_at":"2025-07-31T02:06:34.000Z","download_url":"https://codeload.github.com/CenterForTheBuiltEnvironment/pythermalcomfort/tar.gz/v3.4.3","html_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/releases/tag/v3.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CenterForTheBuiltEnvironment/pythermalcomfort@v3.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags/v3.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags/v3.4.3/manifests"},{"name":"3.4.2","sha":"994c7019ba19980ec3ad104744f6a768b0983ac3","kind":"commit","published_at":"2025-07-22T06:11:51.000Z","download_url":"https://codeload.github.com/CenterForTheBuiltEnvironment/pythermalcomfort/tar.gz/3.4.2","html_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/releases/tag/3.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CenterForTheBuiltEnvironment/pythermalcomfort@3.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags/3.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags/3.4.2/manifests"},{"name":"2.10.1","sha":"5c6d6a58686826cbdc3e1d3b161d398a6cdeaae1","kind":"commit","published_at":"2024-12-19T23:48:02.000Z","download_url":"https://codeload.github.com/CenterForTheBuiltEnvironment/pythermalcomfort/tar.gz/2.10.1","html_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/releases/tag/2.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CenterForTheBuiltEnvironment/pythermalcomfort@2.10.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags/2.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags/2.10.1/manifests"},{"name":"v0.0.0","sha":"45ef38fcbf3c529898cd89cca85d4ea549c95241","kind":"commit","published_at":"2020-02-11T01:52:56.000Z","download_url":"https://codeload.github.com/CenterForTheBuiltEnvironment/pythermalcomfort/tar.gz/v0.0.0","html_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/releases/tag/v0.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/CenterForTheBuiltEnvironment/pythermalcomfort@v0.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags/v0.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags/v0.0.0/manifests"}]},"repo_metadata_updated_at":"2025-10-12T15:30:43.709Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":9.345852080216646,"dependent_packages_count":6.999148183520997,"stargazers_count":null,"forks_count":null,"average":8.172500131868823},"purl":"pkg:golang/github.com/centerforthebuiltenvironment/pythermalcomfort","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/centerforthebuiltenvironment/pythermalcomfort","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/centerforthebuiltenvironment/pythermalcomfort","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/centerforthebuiltenvironment/pythermalcomfort/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-10T16:13:14.257Z","issues_count":149,"pull_requests_count":128,"avg_time_to_close_issue":7615029.548076923,"avg_time_to_close_pull_request":403909.4424778761,"issues_closed_count":104,"pull_requests_closed_count":113,"pull_request_authors_count":22,"issue_authors_count":45,"avg_comments_per_issue":1.8053691275167785,"avg_comments_per_pull_request":1.6015625,"merged_pull_requests_count":96,"bot_issues_count":0,"bot_pull_requests_count":9,"past_year_issues_count":68,"past_year_pull_requests_count":84,"past_year_avg_time_to_close_issue":2821485.6774193547,"past_year_avg_time_to_close_pull_request":525772.5142857142,"past_year_issues_closed_count":31,"past_year_pull_requests_closed_count":70,"past_year_pull_request_authors_count":15,"past_year_issue_authors_count":12,"past_year_avg_comments_per_issue":1.5735294117647058,"past_year_avg_comments_per_pull_request":1.9166666666666667,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":9,"past_year_merged_pull_requests_count":56,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/issues","maintainers":[{"login":"FedericoTartarini","count":137,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/FedericoTartarini"},{"login":"AkihisaNomoto","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/AkihisaNomoto"}],"active_maintainers":[{"login":"FedericoTartarini","count":77,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/FedericoTartarini"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcenterforthebuiltenvironment%2Fpythermalcomfort/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcenterforthebuiltenvironment%2Fpythermalcomfort/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcenterforthebuiltenvironment%2Fpythermalcomfort/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcenterforthebuiltenvironment%2Fpythermalcomfort/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcenterforthebuiltenvironment%2Fpythermalcomfort/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2083890,"maintainers_count":0,"namespaces_count":778337,"keywords_count":0,"github":"golang","metadata":{"funded_packages_count":53388},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-01T06:07:14.682Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":4121074,"name":"github.com/CenterForTheBuiltEnvironment/pythermalcomfort","ecosystem":"go","description":"","homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort","keywords_array":[],"namespace":"github.com/CenterForTheBuiltEnvironment","versions_count":2,"first_release_published_at":"2020-02-11T01:52:56.000Z","latest_release_published_at":"2025-07-31T02:06:34.000Z","latest_release_number":"v3.4.3+incompatible","last_synced_at":"2026-04-02T02:18:05.639Z","created_at":"2022-04-12T14:57:07.414Z","updated_at":"2026-04-02T02:18:05.640Z","registry_url":"https://pkg.go.dev/github.com/CenterForTheBuiltEnvironment/pythermalcomfort","install_command":"go get github.com/CenterForTheBuiltEnvironment/pythermalcomfort","documentation_url":"https://pkg.go.dev/github.com/CenterForTheBuiltEnvironment/pythermalcomfort#section-documentation","metadata":{},"repo_metadata":{"id":39413480,"uuid":"239588350","full_name":"CenterForTheBuiltEnvironment/pythermalcomfort","owner":"CenterForTheBuiltEnvironment","description":"Package to calculate several thermal comfort indices (e.g. PMV, PPD, SET, adaptive) and convert physical variables.","archived":false,"fork":false,"pushed_at":"2025-10-08T08:27:56.000Z","size":7581,"stargazers_count":193,"open_issues_count":32,"forks_count":75,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-10-11T02:08:12.004Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pythermalcomfort.readthedocs.io/en/latest/","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/CenterForTheBuiltEnvironment.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-02-10T18:55:51.000Z","updated_at":"2025-10-08T23:39:18.000Z","dependencies_parsed_at":"2023-09-21T19:56:41.631Z","dependency_job_id":"f8c7877e-1688-496b-919e-615f9ce2bde9","html_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort","commit_stats":{"total_commits":667,"total_committers":6,"mean_commits":"111.16666666666667","dds":"0.21589205397301348","last_synced_commit":"496f3799de287737f2ea53cc6a8c900052a29aaa"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/CenterForTheBuiltEnvironment/pythermalcomfort","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment","download_url":"https://codeload.github.com/CenterForTheBuiltEnvironment/pythermalcomfort/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/sbom","scorecard":{"id":28047,"data":{"date":"2025-08-11","repo":{"name":"github.com/CenterForTheBuiltEnvironment/pythermalcomfort","commit":"fa35d6ec088f66119cd4693ea65fa49a9fd55f5d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.4,"checks":[{"name":"Code-Review","score":6,"reason":"Found 3/5 approved changesets -- score normalized to 6","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":"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":"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":"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":10,"reason":"30 commit(s) and 16 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build-test-publish-testPyPI.yml:1","Warn: no topLevel permission defined: .github/workflows/build-test-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/pull-request.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":"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-test-publish-testPyPI.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish-testPyPI.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test-publish.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/build-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/CenterForTheBuiltEnvironment/pythermalcomfort/pull-request.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:54","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:55","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish-testPyPI.yml:56","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:30","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:52","Warn: pipCommand not pinned by hash: .github/workflows/build-test-publish.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:25","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:49","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:50","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:51","Warn: pipCommand not pinned by hash: .github/workflows/pull-request.yml:52","Info:   0 out of  12 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  19 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":"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":"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":"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":"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T18:23:21.683Z","repository_id":39413480,"created_at":"2025-08-14T18:23:21.683Z","updated_at":"2025-08-14T18:23:21.683Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279009962,"owners_count":26084670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"CenterForTheBuiltEnvironment","name":"CenterForTheBuiltEnvironment","uuid":"6592546","kind":"organization","description":"","email":null,"website":"http://cbe.berkeley.edu","location":"Berkeley, CA","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6592546?v=4","repositories_count":25,"last_synced_at":"2024-05-12T00:45:19.473Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/CenterForTheBuiltEnvironment","funding_links":[],"total_stars":320,"followers":45,"following":0,"created_at":"2022-11-06T23:19:51.643Z","updated_at":"2024-05-12T00:45:22.787Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CenterForTheBuiltEnvironment/repositories"},"tags":[]},"repo_metadata_updated_at":"2025-10-12T15:30:41.466Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":9.345852080216646,"dependent_packages_count":6.999148183520997,"stargazers_count":null,"forks_count":null,"average":8.172500131868823},"purl":"pkg:golang/github.com/%21center%21for%21the%21built%21environment/pythermalcomfort","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/CenterForTheBuiltEnvironment/pythermalcomfort","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/CenterForTheBuiltEnvironment/pythermalcomfort","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/CenterForTheBuiltEnvironment/pythermalcomfort/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-10T16:13:14.257Z","issues_count":149,"pull_requests_count":128,"avg_time_to_close_issue":7615029.548076923,"avg_time_to_close_pull_request":403909.4424778761,"issues_closed_count":104,"pull_requests_closed_count":113,"pull_request_authors_count":22,"issue_authors_count":45,"avg_comments_per_issue":1.8053691275167785,"avg_comments_per_pull_request":1.6015625,"merged_pull_requests_count":96,"bot_issues_count":0,"bot_pull_requests_count":9,"past_year_issues_count":68,"past_year_pull_requests_count":84,"past_year_avg_time_to_close_issue":2821485.6774193547,"past_year_avg_time_to_close_pull_request":525772.5142857142,"past_year_issues_closed_count":31,"past_year_pull_requests_closed_count":70,"past_year_pull_request_authors_count":15,"past_year_issue_authors_count":12,"past_year_avg_comments_per_issue":1.5735294117647058,"past_year_avg_comments_per_pull_request":1.9166666666666667,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":9,"past_year_merged_pull_requests_count":56,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/issues","maintainers":[{"login":"FedericoTartarini","count":137,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/FedericoTartarini"},{"login":"AkihisaNomoto","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/AkihisaNomoto"}],"active_maintainers":[{"login":"FedericoTartarini","count":77,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/FedericoTartarini"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FCenterForTheBuiltEnvironment%2Fpythermalcomfort/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FCenterForTheBuiltEnvironment%2Fpythermalcomfort/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FCenterForTheBuiltEnvironment%2Fpythermalcomfort/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FCenterForTheBuiltEnvironment%2Fpythermalcomfort/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FCenterForTheBuiltEnvironment%2Fpythermalcomfort/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2083890,"maintainers_count":0,"namespaces_count":778337,"keywords_count":0,"github":"golang","metadata":{"funded_packages_count":53388},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-01T06:07:14.682Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":528470,"full_name":"CenterForTheBuiltEnvironment/pythermalcomfort","default_branch":"master","total_commits":1278,"total_committers":22,"total_bot_commits":5,"total_bot_committers":2,"mean_commits":58.09090909090909,"dds":0.2605633802816901,"past_year_total_commits":333,"past_year_total_committers":10,"past_year_total_bot_commits":5,"past_year_total_bot_committers":2,"past_year_mean_commits":33.3,"past_year_dds":0.3513513513513513,"last_synced_at":"2026-03-31T14:07:12.618Z","last_synced_commit":"356bbd3e6604a86329a4b17ffcbad52524dc08bd","created_at":"2023-03-09T03:40:06.030Z","updated_at":"2026-03-31T14:05:47.911Z","committers":[{"name":"federico tartarini","email":"federicotartarini@gmail.com","login":"FedericoTartarini","count":945},{"name":"AkihisaNomoto","email":"67300161+AkihisaNomoto","login":"AkihisaNomoto","count":133},{"name":"royce-chen","email":"chenqizi@gmail.com","login":"rcqz","count":47},{"name":"Twin Gan","email":"twin.c.gan@gmail.com","login":"TwinGan","count":30},{"name":"Connor Forbes","email":"connorforbes25@gmail.com","login":"connorf25","count":20},{"name":"Yehui Huang","email":"yehui.usyd@gmail.com","login":"yehui-h","count":16},{"name":"Lars Buntemeyer","email":"lars.buntemeyer@hzg.de","login":"larsbuntemeyer","count":16},{"name":"number9527-12","email":"lizheyu2000@gmail.com","login":"number9527-12","count":15},{"name":"kmar0531","email":"k.boychova1314@gmail.com","login":"kboychova1314-del","count":14},{"name":"Federico Tartarini","email":"{{ .email }}","login":null,"count":10},{"name":"Charles Simpson","email":"charles.simpson@ucl.ac.uk","login":"C-H-Simpson","count":5},{"name":"Jiayi Wang","email":"jwan0698@uni.sydney.edu.au","login":"Wangjiayi1115","count":5},{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot","login":"Copilot","count":4},{"name":"grjonathan","email":"jonathan.p.graham@ryerson.ca","login":"grjonathan","count":4},{"name":"周小希","email":"zhouxiaoxi@zhouxiaoxideMacBook-Pro.local","login":null,"count":4},{"name":"Jonas Kittner","email":"jonas.kittner@rub.de","login":"jkittner","count":3},{"name":"Tyler Hoyt","email":"tyler.hoyt@gmail.com","login":"thoyt","count":2},{"name":"Lorenzo Donadio","email":"49485753+lorenzodonadio","login":"lorenzodonadio","count":1},{"name":"benterich","email":"133053340+benterich","login":"benterich","count":1},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":1},{"name":"Freya Li","email":"freyali@Freyas-MacBook-Pro.local","login":null,"count":1},{"name":"t-kramer","email":"t.kramer@berkeley.edu","login":"t-kramer","count":1}],"past_year_committers":[{"name":"federico tartarini","email":"federicotartarini@gmail.com","login":"FedericoTartarini","count":216},{"name":"royce-chen","email":"chenqizi@gmail.com","login":"rcqz","count":47},{"name":"Connor Forbes","email":"connorforbes25@gmail.com","login":"connorf25","count":20},{"name":"Yehui Huang","email":"yehui.usyd@gmail.com","login":"yehui-h","count":16},{"name":"kmar0531","email":"k.boychova1314@gmail.com","login":"kboychova1314-del","count":14},{"name":"Federico Tartarini","email":"{{ .email }}","login":null,"count":10},{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot","login":"Copilot","count":4},{"name":"周小希","email":"zhouxiaoxi@zhouxiaoxideMacBook-Pro.local","login":null,"count":4},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":1},{"name":"Freya Li","email":"freyali@Freyas-MacBook-Pro.local","login":null,"count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-06T00:00:08.903Z","repositories_count":6211301,"commits_count":920227543,"contributors_count":35658240,"owners_count":1143042,"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":"CenterForTheBuiltEnvironment/pythermalcomfort","html_url":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort","last_synced_at":"2026-03-27T06:00:16.962Z","status":null,"issues_count":150,"pull_requests_count":137,"avg_time_to_close_issue":7726288.933962264,"avg_time_to_close_pull_request":425546.8620689655,"issues_closed_count":106,"pull_requests_closed_count":116,"pull_request_authors_count":25,"issue_authors_count":46,"avg_comments_per_issue":1.82,"avg_comments_per_pull_request":1.6423357664233578,"merged_pull_requests_count":98,"bot_issues_count":0,"bot_pull_requests_count":12,"past_year_issues_count":32,"past_year_pull_requests_count":70,"past_year_avg_time_to_close_issue":2335214.9166666665,"past_year_avg_time_to_close_pull_request":367583.64285714284,"past_year_issues_closed_count":12,"past_year_pull_requests_closed_count":56,"past_year_pull_request_authors_count":14,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":0.84375,"past_year_avg_comments_per_pull_request":1.957142857142857,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":12,"past_year_merged_pull_requests_count":46,"created_at":"2023-05-09T10:35:12.555Z","updated_at":"2026-03-27T06:00:16.979Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/CenterForTheBuiltEnvironment%2Fpythermalcomfort/issues","issue_labels_count":{"enhancement":24,"new model":17,"bug":7,"wontfix":3,"documentation":2,"question":1,"help wanted":1,"python":1},"pull_request_labels_count":{"dependencies":11,"python":11,"enhancement":5},"issue_author_associations_count":{"COLLABORATOR":90,"NONE":55,"CONTRIBUTOR":5},"pull_request_author_associations_count":{"COLLABORATOR":59,"NONE":40,"CONTRIBUTOR":38},"issue_authors":{"FedericoTartarini":85,"TwinGan":5,"AkihisaNomoto":4,"number9527-12":4,"adibantwal":4,"grjonathan":3,"oylinv":2,"stefanoschiavon":2,"eddes":2,"LeylayqZhang":2,"benterich":2,"ProteekChaudhuriBertLabs":1,"amitche8":1,"haze1986":1,"FazelGanji":1,"ibrahimmudassar":1,"simonmarti1992":1,"szvsw":1,"marcelschweiker":1,"QINQINKONG":1,"jarataraj":1,"MichaelMMS":1,"BingWangUS":1,"cpede":1,"larsbuntemeyer":1,"shakir-azad":1,"guoxuerui":1,"milankl":1,"Qianjk818":1,"frank984":1,"ML426":1,"vitorwdv":1,"ruijis":1,"Barbara-Stickel":1,"gaoshan222":1,"rcqz":1,"MaximeBoulinguezPimentLab":1,"PeterGrant":1,"nenazarian":1,"meganefukawa":1,"livingelectron":1,"t-kramer":1,"priyanko95":1,"Wangjiayi1115":1,"SDohm-dguv":1,"gulermelih":1},"pull_request_authors":{"FedericoTartarini":53,"rcqz":16,"dependabot[bot]":11,"TwinGan":9,"jkittner":7,"AkihisaNomoto":5,"benterich":5,"t-kramer":4,"Copilot":4,"LianqiWang111":3,"C-H-Simpson":2,"windsoul124":2,"yehui-h":2,"KristinaM93":2,"larsbuntemeyer":2,"thoyt":1,"connorf25":1,"nravanelli":1,"night-crawler":1,"ruijis":1,"lorenzodonadio":1,"Joyyyyyyyyyyyyyyy":1,"coderabbitai[bot]":1,"yuli0346":1,"grjonathan":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-29T00:00:10.666Z","repositories_count":13981847,"issues_count":34562972,"pull_requests_count":113026336,"authors_count":11211981,"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":{"new model":8,"enhancement":3,"bug":1,"python":1},"past_year_pull_request_labels_count":{"dependencies":11,"python":11},"past_year_issue_author_associations_count":{"COLLABORATOR":27,"NONE":4,"CONTRIBUTOR":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":31,"COLLABORATOR":25,"NONE":14},"past_year_issue_authors":{"FedericoTartarini":26,"stefanoschiavon":2,"benterich":1,"frank984":1,"marcelschweiker":1,"ruijis":1},"past_year_pull_request_authors":{"FedericoTartarini":24,"rcqz":16,"dependabot[bot]":11,"Copilot":4,"LianqiWang111":3,"KristinaM93":2,"windsoul124":2,"yehui-h":2,"benterich":1,"coderabbitai[bot]":1,"connorf25":1,"Joyyyyyyyyyyyyyyy":1,"nravanelli":1,"yuli0346":1},"maintainers":[{"login":"FedericoTartarini","count":138,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/FedericoTartarini"},{"login":"AkihisaNomoto","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/AkihisaNomoto"},{"login":"benterich","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/benterich"},{"login":"marcelschweiker","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/marcelschweiker"}],"active_maintainers":[{"login":"FedericoTartarini","count":50,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/FedericoTartarini"},{"login":"benterich","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/benterich"},{"login":"marcelschweiker","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/marcelschweiker"}]},"events":{"total":{"DeleteEvent":11,"MemberEvent":1,"PullRequestEvent":101,"ForkEvent":21,"IssuesEvent":111,"WatchEvent":53,"IssueCommentEvent":239,"PushEvent":143,"PullRequestReviewEvent":242,"PullRequestReviewCommentEvent":438,"CreateEvent":16},"last_year":{"DeleteEvent":11,"MemberEvent":1,"PullRequestEvent":81,"ForkEvent":17,"IssuesEvent":39,"WatchEvent":29,"IssueCommentEvent":129,"PushEvent":90,"PullRequestReviewEvent":169,"PullRequestReviewCommentEvent":329,"CreateEvent":13}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"ci/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-01T08:19:50.496Z","updated_at":"2022-08-01T08:19:50.496Z","repository_link":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/blob/master/ci/requirements.txt","dependencies":[{"id":536961416,"package_name":"virtualenv","ecosystem":"pypi","requirements":"\u003e=16.6.0","direct":true,"kind":"runtime","optional":false},{"id":536961417,"package_name":"pip","ecosystem":"pypi","requirements":"\u003e=19.1.1","direct":true,"kind":"runtime","optional":false},{"id":536961418,"package_name":"setuptools","ecosystem":"pypi","requirements":"\u003e=18.0.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"docs/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-01T08:19:50.858Z","updated_at":"2022-08-01T08:19:50.858Z","repository_link":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/blob/master/docs/requirements.txt","dependencies":[{"id":536964792,"package_name":"sphinx","ecosystem":"pypi","requirements":"\u003e=1.3","direct":true,"kind":"runtime","optional":false},{"id":536964793,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":536964794,"package_name":"docutils","ecosystem":"pypi","requirements":"\u003c0.18","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-08-01T08:19:51.187Z","updated_at":"2022-08-01T08:19:51.187Z","repository_link":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/blob/master/setup.py","dependencies":[{"id":536969844,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":536969845,"package_name":"numba","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":536969846,"package_name":"jos3","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":536969847,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/build-test-publish.yml","sha":null,"kind":"manifest","created_at":"2023-02-10T07:16:00.964Z","updated_at":"2023-02-10T07:16:00.964Z","repository_link":"https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/blob/master/.github/workflows/build-test-publish.yml","dependencies":[{"id":7520983035,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7520983036,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":7520983037,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7520983038,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]}],"score":19.446553723420163,"created_at":"2023-09-11T14:52:09.485Z","updated_at":"2026-04-09T18:02:53.720Z","avatar_url":"https://github.com/CenterForTheBuiltEnvironment.png","language":"Python","category":"Consumption","sub_category":"Buildings and Heating","monthly_downloads":11139,"total_dependent_repos":4,"total_dependent_packages":0,"readme":".. image:: https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/raw/development/docs/images/pythermalcomfort-3-short.png\n  :align: center\n  :alt: pythermalcomfort logo\n\n================\npythermalcomfort\n================\n\nThe ``pythermalcomfort`` Python package is a comprehensive toolkit for calculating\nthermal comfort indices, heat/cold stress metrics, and thermophysiological\nresponses based on international standards and peer-reviewed research. Designed\nfor researchers, engineers, and building-science professionals, it simplifies\ncomplex calculations while promoting accuracy and standards compliance.\n\nCite pythermalcomfort\n=====================\n\nIf you use ``pythermalcomfort`` in your research, please cite it as follows:\n\n.. code-block:: text\n\n   Tartarini, F., Schiavon, S., 2020.\n   pythermalcomfort: A Python package for thermal comfort research.\n   SoftwareX 12, 100578.\n   https://doi.org/10.1016/j.softx.2020.100578\n\nKey Features\n============\n\n- **Thermal Comfort Calculations**:\n  Supports multiple models, including **PMV**, **PPD**, **adaptive comfort**, and\n  **SET**.\n- **Heat and Cold Stress Indices**:\n  Calculate **UTCI**, **Heat Index**, **Wind Chill Index**, and **Humidex**.\n- **Thermophysiological Models**:\n  Includes the **two-node (Gagge)** and **multinode (JOS-3)** models to estimate\n  physiological responses such as core temperature, skin temperature, and skin\n  wettedness.\n- **Standards Compliance**:\n  Implements calculations based on **ASHRAE 55**, **ISO 7730**, **EN 16798**, and\n  more.\n- **Ease of Use**:\n  Intuitive API for seamless integration into Python projects.\n- **Extensive Documentation**:\n  Detailed guides, examples, and tutorials.\n- **Active Development**:\n  Regularly updated with new features, improvements, and bug fixes.\n- **Open Source**:\n  Licensed under the MIT License.\n\nWhy Use pythermalcomfort?\n=========================\n\n- **Accurate Assessments**:\n  Reliable thermal comfort and stress evaluations for diverse environments.\n- **Time-Saving**:\n  Automates complex calculations, saving time and effort.\n- **Versatility**:\n  Useful for building science, HVAC design, environmental design, thermal\n  physiology, sports science, and biometeorology.\n- **Enhanced Decision-Making**:\n  Supports data-driven decisions for HVAC systems, building performance, and\n  occupant comfort.\n\nInstallation\n============\n\nInstall ``pythermalcomfort`` via pip:\n\n.. code-block:: bash\n\n   pip install pythermalcomfort\n\nFor advanced installation options, refer to the\n`Installation Instructions \u003chttps://pythermalcomfort.readthedocs.io/en/latest/installation.html\u003e`_.\n\nRequirements\n============\n\nA typical environment includes:\n\n- Python 3.9+ (or the minimum version used in CI)\n- NumPy, SciPy, pandas (installed automatically as package dependencies)\n- Optional: Matplotlib / other plotting libraries for examples and visualizations\n\nQuick Start\n===========\n\nGet started with ``pythermalcomfort`` in just a few lines of code:\n\n.. code-block:: python\n\n   from pythermalcomfort.models import pmv_ppd_iso, utci\n\n   # Calculate PMV and PPD using ISO 7730 standard\n   result = pmv_ppd_iso(\n       tdb=25,  # Dry Bulb Temperature in °C\n       tr=25,  # Mean Radiant Temperature in °C\n       vr=0.1,  # Relative air speed in m/s\n       rh=50,  # Relative Humidity in %\n       met=1.4,  # Metabolic rate in met\n       clo=0.5,  # Clothing insulation in clo\n       model=\"7730-2005\"  # Year of the ISO standard\n   )\n   print(f\"PMV: {result.pmv}, PPD: {result.ppd}\")\n\n   # Calculate UTCI for heat stress assessment\n   utci_value = utci(tdb=30, tr=30, v=0.5, rh=50)\n   print(utci_value)\n\nFor more examples and detailed usage, check out models and indices in the models section of the documentation.\n\nSupport pythermalcomfort\n========================\n\nIf you find this project useful, consider supporting the maintainers. Maintaining\nan open-source scientific package requires time for development, review, CI,\nand user support.\n\nWays to support\n---------------\n\n- Sponsor via GitHub: https://github.com/sponsors/FedericoTartarini\n- Contribute code, tests, or documentation: open a PR against `pythermalcomfort`\n- Report bugs or request features with a minimal reproduction in `issues`\n- Help with testing, translations, or reviewing pull requests\n- Star or share the project to increase visibility\n\nAny support—financial or contribution-based—is appreciated and helps keep the\nproject healthy.\n\nContribute\n==========\n\nWe welcome contributions! Whether reporting a bug, suggesting a feature, or\nsubmitting a pull request, your input helps make ``pythermalcomfort`` better for\neveryone. See the `contributing guide \u003chttps://pythermalcomfort.readthedocs.io/en/latest/contributing.html\u003e`_ for full contribution instructions.\n\nQuick checklist\n---------------\n\n* Open an issue first for larger features to discuss scope and design.\n* Fork the repo and create a feature branch for your work.\n* Add tests for new behavior and run the test suite locally.\n* Run linters and formatters and fix reported issues.\n* Update documentation and changelog entries for public API changes.\n* Submit a clear, focused pull request referencing any related issues.\n\nCommon commands\n---------------\n\n.. code-block:: bash\n\n    # clone your fork and add upstream remote\n    git clone git@github.com:your-username/pythermalcomfort.git\n    cd pythermalcomfort\n    git remote add upstream git@github.com:CenterForTheBuiltEnvironment/pythermalcomfort.git\n    git fetch upstream\n\n    # create a branch and work on it\n    git checkout -b Feature/awesome-feature\n\n    # run the full test matrix (may be slow)\n    tox\n\n    # run a single test env locally (replace py312 with the env you want)\n    tox -e py312\n\n    # run a subset of pytest tests\n    pytest -k test_name_fragment\n\n    # fix linting/formatting\n    ruff check --fix\n    ruff format\n    docformatter --in-place --wrap-summaries 88 --wrap-descriptions 88 pythermalcomfort/*.py\n\n    # commit and push\n    git add .\n    git commit -m \"feat: short description of change\"\n    git push origin Feature/awesome-feature\n\nWhere to get help\n-----------------\n\n* Open an issue on GitHub with a minimal reproduction for bugs.\n* Ask questions in PR comments for implementation guidance.\n* See the `contribution guidelines \u003chttps://pythermalcomfort.readthedocs.io/en/latest/contributing.html\u003e`_ for detailed guidance on testing,\n  documentation, and changelog expectations.\n* For API reference and examples, consult the online docs:\n  https://pythermalcomfort.readthedocs.io/en/latest/\n\nDocumentation\n-------------\n\nDetailed docs, examples and API references are available at:\nhttps://pythermalcomfort.readthedocs.io/en/latest/\n\nLicense\n=======\n\n``pythermalcomfort`` is released under the MIT License.\n\n=====\nStats\n=====\n\n.. start-badges\n\n.. list-table::\n    :stub-columns: 1\n\n    * - Documentation\n      - |docs|\n    * - License\n      - |license|\n    * - Downloads\n      - |downloads|\n    * - Tests\n      - | |codecov|\n        | |tests|\n    * - Package\n      - | |version| |wheel|\n        | |supported-ver|\n        | |package-health|\n\n.. |tests| image:: https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/actions/workflows/build-test-publish.yml/badge.svg\n    :target: https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/actions/workflows/build-test-publish.yml\n    :alt: Tests to ensure pythermalcomfort works on different Python versions and OS\n\n.. |package-health| image:: https://img.shields.io/snyk/vulnerability-score/pip/pythermalcomfort.svg\n    :target: https://security.snyk.io/package/pip/pythermalcomfort\n    :alt: pythermalcomfort\n\n.. |license| image:: https://img.shields.io/pypi/l/pythermalcomfort?color=brightgreen\n    :target: https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/blob/master/LICENSE\n    :alt: pythermalcomfort license\n\n.. |docs| image:: https://readthedocs.org/projects/pythermalcomfort/badge/?style=flat\n    :target: https://readthedocs.org/projects/pythermalcomfort\n    :alt: Documentation Status\n\n.. |downloads| image:: https://img.shields.io/pypi/dm/pythermalcomfort?color=brightgreen\n    :alt: PyPI - Downloads\n\n.. |codecov| image:: https://codecov.io/github/CenterForTheBuiltEnvironment/pythermalcomfort/coverage.svg?branch=master\n    :alt: Coverage Status\n    :target: https://codecov.io/github/CenterForTheBuiltEnvironment/pythermalcomfort\n\n.. |version| image:: https://img.shields.io/pypi/v/pythermalcomfort.svg\n    :alt: PyPI Package latest release\n    :target: https://pypi.org/project/pythermalcomfort\n\n.. |wheel| image:: https://img.shields.io/pypi/wheel/pythermalcomfort.svg\n    :alt: pythermalcomfort wheel\n    :target: https://pypi.org/project/pythermalcomfort\n\n.. |supported-ver| image:: https://img.shields.io/pypi/pyversions/pythermalcomfort.svg\n    :alt: Supported versions\n    :target: https://pypi.org/project/pythermalcomfort\n\n.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/pythermalcomfort.svg\n    :alt: Supported implementations\n    :target: https://pypi.org/project/pythermalcomfort\n\n.. end-badges\n","funding_links":["https://github.com/sponsors/FedericoTartarini"],"readme_doi_urls":["https://doi.org/10.1016/j.softx.2020.100578"],"works":{"https://doi.org/10.1016/j.softx.2020.100578":{"id":"https://openalex.org/W3048660708","doi":"https://doi.org/10.1016/j.softx.2020.100578","title":"pythermalcomfort: A Python package for thermal comfort research","display_name":"pythermalcomfort: A Python package for thermal comfort research","publication_year":2020,"publication_date":"2020-07-01","ids":{"openalex":"https://openalex.org/W3048660708","doi":"https://doi.org/10.1016/j.softx.2020.100578","mag":"3048660708"},"language":"en","primary_location":{"is_oa":true,"landing_page_url":"https://doi.org/10.1016/j.softx.2020.100578","pdf_url":null,"source":{"id":"https://openalex.org/S2506067282","display_name":"SoftwareX","issn_l":"2352-7110","issn":["2352-7110"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310320990","host_organization_name":"Elsevier BV","host_organization_lineage":["https://openalex.org/P4310320990"],"host_organization_lineage_names":["Elsevier BV"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},"type":"article","type_crossref":"journal-article","open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://doi.org/10.1016/j.softx.2020.100578","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5074444246","display_name":"Federico Tartarini","orcid":"https://orcid.org/0000-0002-8739-5062"},"institutions":[{"id":"https://openalex.org/I4210167254","display_name":"Singapore-MIT Alliance for Research and Technology","ror":"https://ror.org/05yb3w112","country_code":"SG","type":"education","lineage":["https://openalex.org/I4210167254"]}],"countries":["SG"],"is_corresponding":true,"raw_author_name":"Federico Tartarini","raw_affiliation_string":"Berkeley Education Alliance for Research in Singapore, Singapore","raw_affiliation_strings":["Berkeley Education Alliance for Research in Singapore, Singapore"]},{"author_position":"last","author":{"id":"https://openalex.org/A5050027372","display_name":"Stefano Schiavon","orcid":"https://orcid.org/0000-0003-1285-5682"},"institutions":[{"id":"https://openalex.org/I95457486","display_name":"University of California, Berkeley","ror":"https://ror.org/01an7q238","country_code":"US","type":"education","lineage":["https://openalex.org/I2803209242","https://openalex.org/I95457486"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Stefano Schiavon","raw_affiliation_string":"Center for the Built Environment, University of California Berkeley, USA","raw_affiliation_strings":["Center for the Built Environment, University of California Berkeley, USA"]}],"countries_distinct_count":2,"institutions_distinct_count":2,"corresponding_author_ids":["https://openalex.org/A5074444246"],"corresponding_institution_ids":["https://openalex.org/I4210167254"],"apc_list":{"value":500,"currency":"USD","value_usd":500,"provenance":"doaj"},"apc_paid":{"value":500,"currency":"USD","value_usd":500,"provenance":"doaj"},"has_fulltext":false,"cited_by_count":59,"cited_by_percentile_year":{"min":98,"max":99},"biblio":{"volume":"12","issue":null,"first_page":"100578","last_page":"100578"},"is_retracted":false,"is_paratext":false,"keywords":[{"keyword":"pythermalcomfort","score":0.5322},{"keyword":"python package","score":0.3712}],"concepts":[{"id":"https://openalex.org/C519991488","wikidata":"https://www.wikidata.org/wiki/Q28865","display_name":"Python (programming language)","level":2,"score":0.8786127},{"id":"https://openalex.org/C51983180","wikidata":"https://www.wikidata.org/wiki/Q899784","display_name":"Psychrometrics","level":3,"score":0.8558715},{"id":"https://openalex.org/C133913538","wikidata":"https://www.wikidata.org/wiki/Q774514","display_name":"Thermal comfort","level":2,"score":0.71966904},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.67706233},{"id":"https://openalex.org/C56666940","wikidata":"https://www.wikidata.org/wiki/Q788790","display_name":"Documentation","level":2,"score":0.6756417},{"id":"https://openalex.org/C187007274","wikidata":"https://www.wikidata.org/wiki/Q256135","display_name":"Equivalent temperature","level":2,"score":0.5626276},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.50144005},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.45231053},{"id":"https://openalex.org/C170154142","wikidata":"https://www.wikidata.org/wiki/Q150737","display_name":"Architectural engineering","level":1,"score":0.384247},{"id":"https://openalex.org/C44154836","wikidata":"https://www.wikidata.org/wiki/Q45045","display_name":"Simulation","level":1,"score":0.3265468},{"id":"https://openalex.org/C103742991","wikidata":"https://www.wikidata.org/wiki/Q173725","display_name":"Air conditioning","level":2,"score":0.20482996},{"id":"https://openalex.org/C78519656","wikidata":"https://www.wikidata.org/wiki/Q101333","display_name":"Mechanical engineering","level":1,"score":0.19434974},{"id":"https://openalex.org/C127413603","wikidata":"https://www.wikidata.org/wiki/Q11023","display_name":"Engineering","level":0,"score":0.10295364},{"id":"https://openalex.org/C153294291","wikidata":"https://www.wikidata.org/wiki/Q25261","display_name":"Meteorology","level":1,"score":0.08130464},{"id":"https://openalex.org/C121332964","wikidata":"https://www.wikidata.org/wiki/Q413","display_name":"Physics","level":0,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"is_oa":true,"landing_page_url":"https://doi.org/10.1016/j.softx.2020.100578","pdf_url":null,"source":{"id":"https://openalex.org/S2506067282","display_name":"SoftwareX","issn_l":"2352-7110","issn":["2352-7110"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310320990","host_organization_name":"Elsevier BV","host_organization_lineage":["https://openalex.org/P4310320990"],"host_organization_lineage_names":["Elsevier BV"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true}],"best_oa_location":{"is_oa":true,"landing_page_url":"https://doi.org/10.1016/j.softx.2020.100578","pdf_url":null,"source":{"id":"https://openalex.org/S2506067282","display_name":"SoftwareX","issn_l":"2352-7110","issn":["2352-7110"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310320990","host_organization_name":"Elsevier BV","host_organization_lineage":["https://openalex.org/P4310320990"],"host_organization_lineage_names":["Elsevier BV"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},"sustainable_development_goals":[{"id":"https://metadata.un.org/sdg/4","display_name":"Quality Education","score":0.35},{"id":"https://metadata.un.org/sdg/9","display_name":"Industry, innovation and infrastructure","score":0.29},{"id":"https://metadata.un.org/sdg/8","display_name":"Decent work and economic growth","score":0.1}],"grants":[{"funder":"https://openalex.org/F4320320709","funder_display_name":"National Research Foundation Singapore","award_id":null}],"referenced_works_count":11,"referenced_works":["https://openalex.org/W1967188314","https://openalex.org/W2070844476","https://openalex.org/W2074787411","https://openalex.org/W2113837250","https://openalex.org/W2119329024","https://openalex.org/W2565218073","https://openalex.org/W2625803038","https://openalex.org/W2904680339","https://openalex.org/W2974100084","https://openalex.org/W3022611903","https://openalex.org/W3042202111"],"related_works":["https://openalex.org/W3157094858","https://openalex.org/W2903795674","https://openalex.org/W2325131018","https://openalex.org/W2341630340","https://openalex.org/W4385897616","https://openalex.org/W2342234653","https://openalex.org/W2965152863","https://openalex.org/W4318477718","https://openalex.org/W2592016076","https://openalex.org/W4310862820"],"ngrams_url":"https://api.openalex.org/works/W3048660708/ngrams","abstract_inverted_index":{"We":[0,73],"developed":[1,75],"pythermalcomfort,":[2],"a":[3,129,142],"Python":[4,111,125],"package":[5],"that":[6,138],"allows":[7,91],"users":[8,83],"to":[9,31,81,86,95],"calculate":[10],"the":[11,20,63,68,103,107,114,123,147],"most":[12,115],"common":[13],"thermal":[14,22,35,70,99,133],"comfort":[15,23,36,71,100,134],"indices":[16,37],"in":[17,67],"compliance":[18],"with":[19],"main":[21],"standards.":[24,72],"For":[25],"example,":[26],"pythermalcomfort":[27,57,90,121,139],"can":[28],"be":[29],"used":[30],"calculate:":[32],"whole":[33],"body":[34],"(e.g.,":[38],"Predicted":[39],"Mean":[40],"Vote,":[41],"adaptive":[42],"models,":[43],"Standard":[44],"Equivalent":[45],"Temperature),":[46],"local":[47],"discomfort,":[48],"clothing":[49],"insulation,":[50],"and":[51,78,93,120,149],"psychrometric":[52],"properties":[53],"of":[54,105,132],"air.":[55],"All":[56],"functions":[58],"have":[59,74,141],"been":[60],"validated":[61],"against":[62],"reference":[64],"tables":[65],"provided":[66],"corresponding":[69],"documentation,":[76],"examples":[77],"tutorial":[79],"videos":[80],"guide":[82],"on":[84,145],"how":[85],"use":[87],"our":[88],"package.":[89],"researchers":[92],"professionals":[94],"accurately":[96],"perform":[97],"complex":[98],"calculations":[101],"without":[102],"need":[104],"re-writing":[106],"programming":[108,118],"code.":[109],"With":[110],"being":[112,122],"among":[113],"widely":[116],"utilized":[117],"languages":[119],"only":[124],"library":[126],"which":[127],"includes":[128],"comprehensive":[130],"list":[131],"functions,":[135],"we":[136],"believe":[137],"will":[140],"significant":[143],"impact":[144],"both":[146],"research":[148],"industrial":[150],"communities.":[151]},"cited_by_api_url":"https://api.openalex.org/works?filter=cites:W3048660708","counts_by_year":[{"year":2023,"cited_by_count":29},{"year":2022,"cited_by_count":17},{"year":2021,"cited_by_count":10}],"updated_date":"2023-12-17T23:30:28.635349","created_date":"2020-08-18"}},"citation_counts":{"https://doi.org/10.1016/j.softx.2020.100578":56},"total_citations":56,"keywords_from_contributors":["air-temperature","comfort","pmv","pmv-prediction","thermal-comfort"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/20079","html_url":"https://ost.ecosyste.ms/projects/20079"}