{"id":76305,"name":"AlkalinityTitrator","description":"Apparatus to determine total alkalinity in sea water using an open-cell titration","url":"https://github.com/Open-Acidification/AlkalinityTitrator","last_synced_at":"2025-09-08T16:55:06.871Z","repository":{"id":40954995,"uuid":"235752011","full_name":"Open-Acidification/AlkalinityTitrator","owner":"Open-Acidification","description":"Apparatus to determine total alkalinity in sea water using an open-cell titration","archived":false,"fork":false,"pushed_at":"2025-08-25T18:49:38.000Z","size":2817,"stargazers_count":7,"open_issues_count":20,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-02T12:06:24.593Z","etag":null,"topics":["alkalinity-titrator","ocean-acidification","raspberry-pi"],"latest_commit_sha":null,"homepage":"https://open-acidification.github.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Open-Acidification.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-01-23T08:20:38.000Z","updated_at":"2025-08-29T21:09:12.000Z","dependencies_parsed_at":"2023-09-21T19:29:46.422Z","dependency_job_id":null,"html_url":"https://github.com/Open-Acidification/AlkalinityTitrator","commit_stats":{"total_commits":162,"total_committers":9,"mean_commits":18.0,"dds":0.3950617283950617,"last_synced_commit":"cd38c9d1d3fb12fd12669ec746b7f075616f2a01"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Open-Acidification/AlkalinityTitrator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-Acidification%2FAlkalinityTitrator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-Acidification%2FAlkalinityTitrator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-Acidification%2FAlkalinityTitrator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-Acidification%2FAlkalinityTitrator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Open-Acidification","download_url":"https://codeload.github.com/Open-Acidification/AlkalinityTitrator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-Acidification%2FAlkalinityTitrator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274202774,"owners_count":25240371,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"Open-Acidification","name":"Open Acidification Project","uuid":"57500501","kind":"organization","description":"","email":null,"website":"https://open-acidification.github.io/","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/57500501?v=4","repositories_count":11,"last_synced_at":"2023-03-04T02:59:47.330Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Open-Acidification","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T08:37:48.000Z","updated_at":"2023-03-04T02:59:47.400Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Open-Acidification","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Open-Acidification/repositories"},"packages":[],"commits":{"id":1358746,"full_name":"Open-Acidification/AlkalinityTitrator","default_branch":"main","committers":[{"name":"kadensu","email":"ksukachevin@gmail.com","login":null,"count":98},{"name":"Taylor Smith","email":"83837157+TaylorSmith28","login":"TaylorSmith28","count":30},{"name":"Preston Carman","email":"preston.carman@wallawalla.edu","login":null,"count":13},{"name":"allcontributors[bot]","email":"46447321+allcontributors[bot]","login":"allcontributors[bot]","count":8},{"name":"Konrad McClure","email":"66455502+KonradMcClure","login":"KonradMcClure","count":7},{"name":"Kaden Sukachevin","email":"kaden.sukachevin@wallawalla.edu","login":null,"count":2},{"name":"Josh Soref","email":"2119212+jsoref","login":"jsoref","count":2},{"name":"Barun Debnath","email":"52271502+d-cryptic","login":"d-cryptic","count":1},{"name":"Kieran Sukachevin","email":"54186484+kieransukachevin","login":"kieransukachevin","count":1}],"total_commits":162,"total_committers":9,"total_bot_commits":8,"total_bot_committers":1,"mean_commits":18.0,"dds":0.3950617283950617,"past_year_committers":[{"name":"Taylor Smith","email":"83837157+TaylorSmith28","login":"TaylorSmith28","count":20},{"name":"Preston Carman","email":"preston.carman@wallawalla.edu","login":null,"count":1}],"past_year_total_commits":21,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":10.5,"past_year_dds":0.04761904761904767,"last_synced_at":"2025-08-09T00:09:12.254Z","last_synced_commit":"cd38c9d1d3fb12fd12669ec746b7f075616f2a01","created_at":"2023-09-13T08:46:44.768Z","updated_at":"2025-08-09T00:09:12.255Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-Acidification%2FAlkalinityTitrator/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-03T00:00:08.276Z","repositories_count":5480019,"commits_count":853389012,"contributors_count":31098138,"owners_count":906558,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"Open-Acidification/AlkalinityTitrator","html_url":"https://github.com/Open-Acidification/AlkalinityTitrator","last_synced_at":"2025-08-30T11:23:02.434Z","status":null,"issues_count":40,"pull_requests_count":62,"avg_time_to_close_issue":28443185.43478261,"avg_time_to_close_pull_request":1396443.3278688525,"issues_closed_count":23,"pull_requests_closed_count":61,"pull_request_authors_count":9,"issue_authors_count":5,"avg_comments_per_issue":1.025,"avg_comments_per_pull_request":0.6935483870967742,"merged_pull_requests_count":46,"bot_issues_count":0,"bot_pull_requests_count":6,"past_year_issues_count":0,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":857.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"created_at":"2023-09-13T08:47:31.300Z","updated_at":"2025-08-30T11:23:02.436Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-Acidification%2FAlkalinityTitrator","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-Acidification%2FAlkalinityTitrator/issues","issue_labels_count":{"enhancement":11,"good first issue":6,"documentation":2,"question":2,"invalid":2,"bug":2},"pull_request_labels_count":{"enhancement":11,"bug":3,"dependencies":2,"question":1},"issue_author_associations_count":{"CONTRIBUTOR":39,"MEMBER":1},"pull_request_author_associations_count":{"CONTRIBUTOR":57,"MEMBER":3,"NONE":2},"issue_authors":{"TaylorSmith28":18,"KonradMcClure":15,"kieransukachevin":5,"kadensu":1,"prestoncarman":1},"pull_request_authors":{"TaylorSmith28":43,"KonradMcClure":4,"allcontributors[bot]":4,"prestoncarman":3,"dependabot[bot]":2,"kadensu":2,"jsoref":2,"kieransukachevin":1,"d-cryptic":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-03T00:00:08.273Z","repositories_count":10058903,"issues_count":30998414,"pull_requests_count":93803781,"authors_count":10685242,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"MEMBER":2},"past_year_issue_authors":{},"past_year_pull_request_authors":{"prestoncarman":2},"maintainers":[{"login":"prestoncarman","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/prestoncarman"}],"active_maintainers":[{"login":"prestoncarman","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/prestoncarman"}]},"events":{"total":{"WatchEvent":1,"PullRequestEvent":3,"ForkEvent":2},"last_year":{"WatchEvent":1,"PullRequestEvent":3,"ForkEvent":2}},"keywords":["alkalinity-titrator","ocean-acidification","raspberry-pi"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/check-spelling.yml","sha":null,"kind":"manifest","created_at":"2023-02-19T15:01:01.029Z","updated_at":"2023-02-19T15:01:01.029Z","repository_link":"https://github.com/Open-Acidification/AlkalinityTitrator/blob/main/.github/workflows/check-spelling.yml","dependencies":[{"id":7790402887,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7790402888,"package_name":"codespell-project/actions-codespell","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/linter.yml","sha":null,"kind":"manifest","created_at":"2023-02-19T15:01:01.127Z","updated_at":"2023-02-19T15:01:01.127Z","repository_link":"https://github.com/Open-Acidification/AlkalinityTitrator/blob/main/.github/workflows/linter.yml","dependencies":[{"id":7790403285,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7790403286,"package_name":"docker://ghcr.io/github/super-linter","ecosystem":"actions","requirements":"slim-v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pytest.yml","sha":null,"kind":"manifest","created_at":"2023-02-19T15:01:01.197Z","updated_at":"2023-02-19T15:01:01.197Z","repository_link":"https://github.com/Open-Acidification/AlkalinityTitrator/blob/main/.github/workflows/pytest.yml","dependencies":[{"id":7790403632,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7790403633,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"Pipfile","sha":null,"kind":"manifest","created_at":"2022-09-18T09:14:59.057Z","updated_at":"2022-09-18T09:14:59.057Z","repository_link":"https://github.com/Open-Acidification/AlkalinityTitrator/blob/main/Pipfile","dependencies":[{"id":5251523233,"package_name":"adafruit-blinka","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523234,"package_name":"adafruit-circuitpython-ads1x15","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523235,"package_name":"adafruit-circuitpython-lis3dh","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523236,"package_name":"adafruit-circuitpython-max31865","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523237,"package_name":"gpiozero","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523238,"package_name":"pad4pi","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523239,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523240,"package_name":"pep8","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523241,"package_name":"pyserial","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523242,"package_name":"rpi.gpio","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523243,"package_name":"smbus2","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523244,"package_name":"pynput","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523245,"package_name":"keyboard","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523246,"package_name":"click","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5251523247,"package_name":"flake8","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":5251523248,"package_name":"isort","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":5251523249,"package_name":"pycodestyle","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":5251523250,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":5251523251,"package_name":"pylint","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":5251523252,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":5251523253,"package_name":"pytest-mock","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false}]},{"ecosystem":"pypi","filepath":"Pipfile.lock","sha":null,"kind":"lockfile","created_at":"2022-09-18T09:14:59.084Z","updated_at":"2022-09-18T09:14:59.084Z","repository_link":"https://github.com/Open-Acidification/AlkalinityTitrator/blob/main/Pipfile.lock","dependencies":[{"id":5251523254,"package_name":"adafruit-blinka","ecosystem":"pypi","requirements":"==7.0.1","direct":false,"kind":"runtime","optional":false},{"id":5251523255,"package_name":"adafruit-circuitpython-ads1x15","ecosystem":"pypi","requirements":"==2.2.12","direct":false,"kind":"runtime","optional":false},{"id":5251523256,"package_name":"adafruit-circuitpython-busdevice","ecosystem":"pypi","requirements":"==5.1.8","direct":false,"kind":"runtime","optional":false},{"id":5251523257,"package_name":"adafruit-circuitpython-lis3dh","ecosystem":"pypi","requirements":"==5.1.13","direct":false,"kind":"runtime","optional":false},{"id":5251523258,"package_name":"adafruit-circuitpython-max31865","ecosystem":"pypi","requirements":"==2.2.12","direct":false,"kind":"runtime","optional":false},{"id":5251523259,"package_name":"adafruit-circuitpython-typing","ecosystem":"pypi","requirements":"==1.1.1","direct":false,"kind":"runtime","optional":false},{"id":5251523260,"package_name":"adafruit-platformdetect","ecosystem":"pypi","requirements":"==3.20.0","direct":false,"kind":"runtime","optional":false},{"id":5251523261,"package_name":"adafruit-pureio","ecosystem":"pypi","requirements":"==1.1.9","direct":false,"kind":"runtime","optional":false},{"id":5251523262,"package_name":"click","ecosystem":"pypi","requirements":"==8.0.4","direct":false,"kind":"runtime","optional":false},{"id":5251523263,"package_name":"colorzero","ecosystem":"pypi","requirements":"==2.0","direct":false,"kind":"runtime","optional":false},{"id":5251523264,"package_name":"gpiozero","ecosystem":"pypi","requirements":"==1.6.2","direct":false,"kind":"runtime","optional":false},{"id":5251523265,"package_name":"keyboard","ecosystem":"pypi","requirements":"==0.13.5","direct":false,"kind":"runtime","optional":false},{"id":5251523266,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.22.2","direct":false,"kind":"runtime","optional":false},{"id":5251523267,"package_name":"pad4pi","ecosystem":"pypi","requirements":"==1.1.5","direct":false,"kind":"runtime","optional":false},{"id":5251523268,"package_name":"pandas","ecosystem":"pypi","requirements":"==1.4.1","direct":false,"kind":"runtime","optional":false},{"id":5251523269,"package_name":"pep8","ecosystem":"pypi","requirements":"==1.7.1","direct":false,"kind":"runtime","optional":false},{"id":5251523270,"package_name":"pyftdi","ecosystem":"pypi","requirements":"==0.53.3","direct":false,"kind":"runtime","optional":false},{"id":5251523271,"package_name":"pynput","ecosystem":"pypi","requirements":"==1.7.6","direct":false,"kind":"runtime","optional":false},{"id":5251523272,"package_name":"pyobjc","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523273,"package_name":"pyobjc-core","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523274,"package_name":"pyobjc-framework-accessibility","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523275,"package_name":"pyobjc-framework-accounts","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523276,"package_name":"pyobjc-framework-addressbook","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523277,"package_name":"pyobjc-framework-adservices","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523278,"package_name":"pyobjc-framework-adsupport","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523279,"package_name":"pyobjc-framework-applescriptkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523280,"package_name":"pyobjc-framework-applescriptobjc","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523281,"package_name":"pyobjc-framework-applicationservices","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523282,"package_name":"pyobjc-framework-apptrackingtransparency","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523283,"package_name":"pyobjc-framework-audiovideobridging","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523284,"package_name":"pyobjc-framework-authenticationservices","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523285,"package_name":"pyobjc-framework-automaticassessmentconfiguration","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523286,"package_name":"pyobjc-framework-automator","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523287,"package_name":"pyobjc-framework-avfoundation","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523288,"package_name":"pyobjc-framework-avkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523289,"package_name":"pyobjc-framework-businesschat","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523290,"package_name":"pyobjc-framework-calendarstore","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523291,"package_name":"pyobjc-framework-callkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523292,"package_name":"pyobjc-framework-cfnetwork","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523293,"package_name":"pyobjc-framework-classkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523294,"package_name":"pyobjc-framework-cloudkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523295,"package_name":"pyobjc-framework-cocoa","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523296,"package_name":"pyobjc-framework-collaboration","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523297,"package_name":"pyobjc-framework-colorsync","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523298,"package_name":"pyobjc-framework-contacts","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523299,"package_name":"pyobjc-framework-contactsui","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523300,"package_name":"pyobjc-framework-coreaudio","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523301,"package_name":"pyobjc-framework-coreaudiokit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523302,"package_name":"pyobjc-framework-corebluetooth","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523303,"package_name":"pyobjc-framework-coredata","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523304,"package_name":"pyobjc-framework-corehaptics","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523305,"package_name":"pyobjc-framework-corelocation","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523306,"package_name":"pyobjc-framework-coremedia","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523307,"package_name":"pyobjc-framework-coremediaio","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523308,"package_name":"pyobjc-framework-coremidi","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523309,"package_name":"pyobjc-framework-coreml","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523310,"package_name":"pyobjc-framework-coremotion","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523311,"package_name":"pyobjc-framework-coreservices","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523312,"package_name":"pyobjc-framework-corespotlight","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523313,"package_name":"pyobjc-framework-coretext","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523314,"package_name":"pyobjc-framework-corewlan","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523315,"package_name":"pyobjc-framework-cryptotokenkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523316,"package_name":"pyobjc-framework-datadetection","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523317,"package_name":"pyobjc-framework-devicecheck","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523318,"package_name":"pyobjc-framework-dictionaryservices","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523319,"package_name":"pyobjc-framework-discrecording","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523320,"package_name":"pyobjc-framework-discrecordingui","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523321,"package_name":"pyobjc-framework-diskarbitration","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523322,"package_name":"pyobjc-framework-dvdplayback","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523323,"package_name":"pyobjc-framework-eventkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523324,"package_name":"pyobjc-framework-exceptionhandling","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523325,"package_name":"pyobjc-framework-executionpolicy","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523326,"package_name":"pyobjc-framework-externalaccessory","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523327,"package_name":"pyobjc-framework-fileprovider","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523328,"package_name":"pyobjc-framework-fileproviderui","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523329,"package_name":"pyobjc-framework-findersync","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523330,"package_name":"pyobjc-framework-fsevents","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523331,"package_name":"pyobjc-framework-gamecenter","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523332,"package_name":"pyobjc-framework-gamecontroller","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523333,"package_name":"pyobjc-framework-gamekit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523334,"package_name":"pyobjc-framework-gameplaykit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523335,"package_name":"pyobjc-framework-imagecapturecore","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523336,"package_name":"pyobjc-framework-imserviceplugin","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523337,"package_name":"pyobjc-framework-inputmethodkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523338,"package_name":"pyobjc-framework-installerplugins","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523339,"package_name":"pyobjc-framework-instantmessage","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523340,"package_name":"pyobjc-framework-intents","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523341,"package_name":"pyobjc-framework-intentsui","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523342,"package_name":"pyobjc-framework-iosurface","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523343,"package_name":"pyobjc-framework-ituneslibrary","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523344,"package_name":"pyobjc-framework-kernelmanagement","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523345,"package_name":"pyobjc-framework-latentsemanticmapping","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523346,"package_name":"pyobjc-framework-launchservices","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523347,"package_name":"pyobjc-framework-libdispatch","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523348,"package_name":"pyobjc-framework-linkpresentation","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523349,"package_name":"pyobjc-framework-localauthentication","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523350,"package_name":"pyobjc-framework-localauthenticationembeddedui","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523351,"package_name":"pyobjc-framework-mailkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523352,"package_name":"pyobjc-framework-mapkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523353,"package_name":"pyobjc-framework-mediaaccessibility","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523354,"package_name":"pyobjc-framework-medialibrary","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523355,"package_name":"pyobjc-framework-mediaplayer","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523356,"package_name":"pyobjc-framework-mediatoolbox","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523357,"package_name":"pyobjc-framework-metal","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523358,"package_name":"pyobjc-framework-metalkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523359,"package_name":"pyobjc-framework-metalperformanceshaders","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523360,"package_name":"pyobjc-framework-metalperformanceshadersgraph","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523361,"package_name":"pyobjc-framework-metrickit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523362,"package_name":"pyobjc-framework-mlcompute","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523363,"package_name":"pyobjc-framework-modelio","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523364,"package_name":"pyobjc-framework-multipeerconnectivity","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523365,"package_name":"pyobjc-framework-naturallanguage","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523366,"package_name":"pyobjc-framework-netfs","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523367,"package_name":"pyobjc-framework-network","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523368,"package_name":"pyobjc-framework-networkextension","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523369,"package_name":"pyobjc-framework-notificationcenter","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523370,"package_name":"pyobjc-framework-opendirectory","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523371,"package_name":"pyobjc-framework-osakit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523372,"package_name":"pyobjc-framework-oslog","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523373,"package_name":"pyobjc-framework-passkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523374,"package_name":"pyobjc-framework-pencilkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523375,"package_name":"pyobjc-framework-photos","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523376,"package_name":"pyobjc-framework-photosui","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523377,"package_name":"pyobjc-framework-preferencepanes","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523378,"package_name":"pyobjc-framework-pushkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523379,"package_name":"pyobjc-framework-quartz","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523380,"package_name":"pyobjc-framework-quicklookthumbnailing","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523381,"package_name":"pyobjc-framework-replaykit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523382,"package_name":"pyobjc-framework-safariservices","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523383,"package_name":"pyobjc-framework-scenekit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523384,"package_name":"pyobjc-framework-screensaver","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523385,"package_name":"pyobjc-framework-screentime","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523386,"package_name":"pyobjc-framework-scriptingbridge","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523387,"package_name":"pyobjc-framework-searchkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523388,"package_name":"pyobjc-framework-security","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523389,"package_name":"pyobjc-framework-securityfoundation","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523390,"package_name":"pyobjc-framework-securityinterface","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523391,"package_name":"pyobjc-framework-servicemanagement","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523392,"package_name":"pyobjc-framework-shazamkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523393,"package_name":"pyobjc-framework-social","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523394,"package_name":"pyobjc-framework-soundanalysis","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523395,"package_name":"pyobjc-framework-speech","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523396,"package_name":"pyobjc-framework-spritekit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523397,"package_name":"pyobjc-framework-storekit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523398,"package_name":"pyobjc-framework-syncservices","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523399,"package_name":"pyobjc-framework-systemconfiguration","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523400,"package_name":"pyobjc-framework-systemextensions","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523401,"package_name":"pyobjc-framework-uniformtypeidentifiers","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523402,"package_name":"pyobjc-framework-usernotifications","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523403,"package_name":"pyobjc-framework-usernotificationsui","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523404,"package_name":"pyobjc-framework-videosubscriberaccount","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523405,"package_name":"pyobjc-framework-videotoolbox","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523406,"package_name":"pyobjc-framework-virtualization","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523407,"package_name":"pyobjc-framework-vision","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523408,"package_name":"pyobjc-framework-webkit","ecosystem":"pypi","requirements":"==8.3","direct":false,"kind":"runtime","optional":false},{"id":5251523409,"package_name":"pyserial","ecosystem":"pypi","requirements":"==3.5","direct":false,"kind":"runtime","optional":false},{"id":5251523410,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"==2.8.2","direct":false,"kind":"runtime","optional":false},{"id":5251523411,"package_name":"pytz","ecosystem":"pypi","requirements":"==2021.3","direct":false,"kind":"runtime","optional":false},{"id":5251523412,"package_name":"pyusb","ecosystem":"pypi","requirements":"==1.2.1","direct":false,"kind":"runtime","optional":false},{"id":5251523413,"package_name":"rpi.gpio","ecosystem":"pypi","requirements":"==0.7.1","direct":false,"kind":"runtime","optional":false},{"id":5251523414,"package_name":"setuptools","ecosystem":"pypi","requirements":"==60.9.3","direct":false,"kind":"runtime","optional":false},{"id":5251523415,"package_name":"six","ecosystem":"pypi","requirements":"==1.16.0","direct":false,"kind":"runtime","optional":false},{"id":5251523416,"package_name":"smbus2","ecosystem":"pypi","requirements":"==0.4.1","direct":false,"kind":"runtime","optional":false},{"id":5251523417,"package_name":"astroid","ecosystem":"pypi","requirements":"==2.9.3","direct":false,"kind":"develop","optional":false},{"id":5251523418,"package_name":"attrs","ecosystem":"pypi","requirements":"==21.4.0","direct":false,"kind":"develop","optional":false},{"id":5251523419,"package_name":"coverage","ecosystem":"pypi","requirements":"==6.3.2","direct":false,"kind":"develop","optional":false},{"id":5251523420,"package_name":"flake8","ecosystem":"pypi","requirements":"==4.0.1","direct":false,"kind":"develop","optional":false},{"id":5251523421,"package_name":"iniconfig","ecosystem":"pypi","requirements":"==1.1.1","direct":false,"kind":"develop","optional":false},{"id":5251523422,"package_name":"isort","ecosystem":"pypi","requirements":"==5.10.1","direct":false,"kind":"develop","optional":false},{"id":5251523423,"package_name":"lazy-object-proxy","ecosystem":"pypi","requirements":"==1.7.1","direct":false,"kind":"develop","optional":false},{"id":5251523424,"package_name":"mccabe","ecosystem":"pypi","requirements":"==0.6.1","direct":false,"kind":"develop","optional":false},{"id":5251523425,"package_name":"packaging","ecosystem":"pypi","requirements":"==21.3","direct":false,"kind":"develop","optional":false},{"id":5251523426,"package_name":"platformdirs","ecosystem":"pypi","requirements":"==2.5.1","direct":false,"kind":"develop","optional":false},{"id":5251523427,"package_name":"pluggy","ecosystem":"pypi","requirements":"==1.0.0","direct":false,"kind":"develop","optional":false},{"id":5251523428,"package_name":"py","ecosystem":"pypi","requirements":"==1.11.0","direct":false,"kind":"develop","optional":false},{"id":5251523429,"package_name":"pycodestyle","ecosystem":"pypi","requirements":"==2.8.0","direct":false,"kind":"develop","optional":false},{"id":5251523430,"package_name":"pyflakes","ecosystem":"pypi","requirements":"==2.4.0","direct":false,"kind":"develop","optional":false},{"id":5251523431,"package_name":"pylint","ecosystem":"pypi","requirements":"==2.12.2","direct":false,"kind":"develop","optional":false},{"id":5251523432,"package_name":"pyparsing","ecosystem":"pypi","requirements":"==3.0.7","direct":false,"kind":"develop","optional":false},{"id":5251523433,"package_name":"pytest","ecosystem":"pypi","requirements":"==7.0.1","direct":false,"kind":"develop","optional":false},{"id":5251523434,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"==3.0.0","direct":false,"kind":"develop","optional":false},{"id":5251523435,"package_name":"pytest-mock","ecosystem":"pypi","requirements":"==3.7.0","direct":false,"kind":"develop","optional":false},{"id":5251523436,"package_name":"setuptools","ecosystem":"pypi","requirements":"==60.9.3","direct":false,"kind":"develop","optional":false},{"id":5251523437,"package_name":"toml","ecosystem":"pypi","requirements":"==0.10.2","direct":false,"kind":"develop","optional":false},{"id":5251523438,"package_name":"tomli","ecosystem":"pypi","requirements":"==2.0.1","direct":false,"kind":"develop","optional":false},{"id":5251523439,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"==4.1.1","direct":false,"kind":"develop","optional":false},{"id":5251523440,"package_name":"wrapt","ecosystem":"pypi","requirements":"==1.13.3","direct":false,"kind":"develop","optional":false}]}],"score":5.493061443340549,"created_at":"2025-09-08T15:39:33.931Z","updated_at":"2025-10-07T08:27:31.905Z","avatar_url":"https://github.com/Open-Acidification.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":0,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["degoogle"],"project_url":"https://science.ecosyste.ms/api/v1/projects/76305","html_url":"https://science.ecosyste.ms/projects/76305"}