{"id":52310,"name":"rover","description":"Quarter-scale Mars rover based on the NASA Mars 2020 Perseverance Rover.","url":"https://github.com/sethfischer/rover","last_synced_at":"2025-09-08T12:01:26.128Z","repository":{"id":39116659,"uuid":"461091109","full_name":"sethfischer/rover","owner":"sethfischer","description":"Quarter-scale Mars rover based on the NASA Mars 2020 Perseverance Rover.","archived":false,"fork":false,"pushed_at":"2025-07-23T08:12:49.000Z","size":1167,"stargazers_count":6,"open_issues_count":5,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-05T20:04:21.193Z","etag":null,"topics":["cadquery","code-cad","mars","mars-rover","nasa-jpl","programmatic-cad","robot","robotics"],"latest_commit_sha":null,"homepage":"https://rover.fischer.nz","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/sethfischer.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-19T05:00:13.000Z","updated_at":"2025-07-23T20:54:49.000Z","dependencies_parsed_at":"2023-02-14T05:46:21.539Z","dependency_job_id":"fc74a75d-2d0e-4446-b345-d5f19ddc9569","html_url":"https://github.com/sethfischer/rover","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sethfischer/rover","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethfischer%2Frover","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethfischer%2Frover/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethfischer%2Frover/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethfischer%2Frover/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sethfischer","download_url":"https://codeload.github.com/sethfischer/rover/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethfischer%2Frover/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274181728,"owners_count":25236552,"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":"sethfischer","name":"Seth Fischer","uuid":"2492233","kind":"user","description":"","email":"","website":"https://seth.fischer.nz","location":"New Zealand","twitter":null,"company":"Software Engineer","icon_url":"https://avatars.githubusercontent.com/u/2492233?v=4","repositories_count":13,"last_synced_at":"2023-04-01T15:48:00.277Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/sethfischer","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-04T10:22:13.742Z","updated_at":"2023-04-01T15:48:00.400Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sethfischer","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sethfischer/repositories"},"packages":[],"commits":{"id":10947012,"full_name":"sethfischer/rover","default_branch":"master","committers":null,"total_commits":null,"total_committers":null,"total_bot_commits":null,"total_bot_committers":null,"mean_commits":null,"dds":null,"past_year_committers":null,"past_year_total_commits":null,"past_year_total_committers":null,"past_year_total_bot_commits":null,"past_year_total_bot_committers":null,"past_year_mean_commits":null,"past_year_dds":null,"last_synced_at":null,"last_synced_commit":null,"created_at":"2025-09-05T12:40:15.766Z","updated_at":"2025-09-05T12:40:15.766Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethfischer%2Frover/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-08T00:00:16.827Z","repositories_count":5482481,"commits_count":853982201,"contributors_count":31119904,"owners_count":907868,"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":"sethfischer/rover","html_url":"https://github.com/sethfischer/rover","last_synced_at":"2025-08-31T13:57:03.393Z","status":null,"issues_count":0,"pull_requests_count":11,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":422.8888888888889,"issues_closed_count":0,"pull_requests_closed_count":9,"pull_request_authors_count":1,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":0.0,"merged_pull_requests_count":9,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":11,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":422.8888888888889,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":9,"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":9,"created_at":"2025-08-29T22:43:05.231Z","updated_at":"2025-09-03T01:18:22.852Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethfischer%2Frover","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethfischer%2Frover/issues","issue_labels_count":{"documentation":1,"build":1},"pull_request_labels_count":{},"issue_author_associations_count":{"OWNER":2},"pull_request_author_associations_count":{"OWNER":49},"issue_authors":{"sethfischer":2},"pull_request_authors":{"sethfischer":49},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-05T00:00:10.444Z","repositories_count":10098650,"issues_count":31447165,"pull_requests_count":97330651,"authors_count":10702032,"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":{"OWNER":15},"past_year_issue_authors":{},"past_year_pull_request_authors":{"sethfischer":15},"maintainers":[{"login":"sethfischer","count":51,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sethfischer"}],"active_maintainers":[{"login":"sethfischer","count":15,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sethfischer"}]},"events":{"total":{"DeleteEvent":14,"PushEvent":21,"PullRequestEvent":30,"CreateEvent":16},"last_year":{"DeleteEvent":14,"PushEvent":21,"PullRequestEvent":30,"CreateEvent":16}},"keywords":["cadquery","code-cad","mars","mars-rover","nasa-jpl","programmatic-cad","robot","robotics"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/build.yml","sha":null,"kind":"manifest","created_at":"2023-02-14T05:46:19.402Z","updated_at":"2023-02-14T05:46:19.402Z","repository_link":"https://github.com/sethfischer/rover/blob/main/.github/workflows/build.yml","dependencies":[{"id":7646651438,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7646651439,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/lint.yml","sha":null,"kind":"manifest","created_at":"2023-02-14T05:46:19.933Z","updated_at":"2023-02-14T05:46:19.933Z","repository_link":"https://github.com/sethfischer/rover/blob/main/.github/workflows/lint.yml","dependencies":[{"id":7646653174,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7646653175,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test.yml","sha":null,"kind":"manifest","created_at":"2023-02-14T05:46:20.128Z","updated_at":"2023-02-14T05:46:20.128Z","repository_link":"https://github.com/sethfischer/rover/blob/main/.github/workflows/test.yml","dependencies":[{"id":7646654870,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7646654872,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"poetry.lock","sha":null,"kind":"lockfile","created_at":"2023-02-14T05:46:20.429Z","updated_at":"2023-02-14T05:46:20.429Z","repository_link":"https://github.com/sethfischer/rover/blob/main/poetry.lock","dependencies":[{"id":7646658467,"package_name":"alabaster","ecosystem":"pypi","requirements":"0.7.13","direct":false,"kind":"runtime","optional":false},{"id":7646658468,"package_name":"applaunchservices","ecosystem":"pypi","requirements":"0.3.0","direct":false,"kind":"develop","optional":false},{"id":7646658469,"package_name":"appnope","ecosystem":"pypi","requirements":"0.1.3","direct":false,"kind":"runtime","optional":false},{"id":7646658470,"package_name":"argcomplete","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"develop","optional":false},{"id":7646658471,"package_name":"arrow","ecosystem":"pypi","requirements":"1.2.3","direct":false,"kind":"develop","optional":false},{"id":7646658472,"package_name":"astroid","ecosystem":"pypi","requirements":"2.14.1","direct":false,"kind":"develop","optional":false},{"id":7646658473,"package_name":"atomicwrites","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"develop","optional":false},{"id":7646658474,"package_name":"attrs","ecosystem":"pypi","requirements":"22.2.0","direct":false,"kind":"develop","optional":false},{"id":7646658475,"package_name":"autopep8","ecosystem":"pypi","requirements":"1.6.0","direct":false,"kind":"develop","optional":false},{"id":7646658476,"package_name":"babel","ecosystem":"pypi","requirements":"2.11.0","direct":false,"kind":"runtime","optional":false},{"id":7646658477,"package_name":"backcall","ecosystem":"pypi","requirements":"0.2.0","direct":false,"kind":"runtime","optional":false},{"id":7646658478,"package_name":"bcrypt","ecosystem":"pypi","requirements":"4.0.1","direct":false,"kind":"develop","optional":false},{"id":7646658479,"package_name":"beautifulsoup4","ecosystem":"pypi","requirements":"4.11.2","direct":false,"kind":"develop","optional":false},{"id":7646658480,"package_name":"binaryornot","ecosystem":"pypi","requirements":"0.4.4","direct":false,"kind":"develop","optional":false},{"id":7646658481,"package_name":"black","ecosystem":"pypi","requirements":"22.12.0","direct":false,"kind":"develop","optional":false},{"id":7646658482,"package_name":"bleach","ecosystem":"pypi","requirements":"6.0.0","direct":false,"kind":"develop","optional":false},{"id":7646658483,"package_name":"cadquery","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":7646658484,"package_name":"cadquery-ocp","ecosystem":"pypi","requirements":"7.7.0a0","direct":false,"kind":"runtime","optional":false},{"id":7646658485,"package_name":"cairocffi","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"develop","optional":false},{"id":7646658486,"package_name":"cairosvg","ecosystem":"pypi","requirements":"2.6.0","direct":false,"kind":"develop","optional":false},{"id":7646658487,"package_name":"casadi","ecosystem":"pypi","requirements":"3.5.6.pre2","direct":false,"kind":"runtime","optional":false},{"id":7646658488,"package_name":"certifi","ecosystem":"pypi","requirements":"2022.12.7","direct":false,"kind":"runtime","optional":false},{"id":7646658489,"package_name":"cffconvert","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"develop","optional":false},{"id":7646658490,"package_name":"cffi","ecosystem":"pypi","requirements":"1.15.1","direct":false,"kind":"develop","optional":false},{"id":7646658491,"package_name":"chardet","ecosystem":"pypi","requirements":"5.1.0","direct":false,"kind":"develop","optional":false},{"id":7646658492,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"2.1.1","direct":false,"kind":"runtime","optional":false},{"id":7646658493,"package_name":"click","ecosystem":"pypi","requirements":"8.1.3","direct":false,"kind":"develop","optional":false},{"id":7646658494,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"develop","optional":false},{"id":7646658495,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":7646658496,"package_name":"comm","ecosystem":"pypi","requirements":"0.1.2","direct":false,"kind":"develop","optional":false},{"id":7646658497,"package_name":"commitizen","ecosystem":"pypi","requirements":"2.40.0","direct":false,"kind":"develop","optional":false},{"id":7646658499,"package_name":"commonmark","ecosystem":"pypi","requirements":"0.9.1","direct":false,"kind":"develop","optional":false},{"id":7646658500,"package_name":"cookiecutter","ecosystem":"pypi","requirements":"2.1.1","direct":false,"kind":"develop","optional":false},{"id":7646658501,"package_name":"CQ-editor","ecosystem":"pypi","requirements":"0.3.0.dev0","direct":false,"kind":"develop","optional":false},{"id":7646658502,"package_name":"cq-electronics","ecosystem":"pypi","requirements":"0.1.0","direct":false,"kind":"runtime","optional":false},{"id":7646658533,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"develop","optional":false},{"id":7646658534,"package_name":"ezdxf","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":7646658543,"package_name":"fastjsonschema","ecosystem":"pypi","requirements":"2.16.2","direct":false,"kind":"develop","optional":false},{"id":7646658503,"package_name":"cq-warehouse","ecosystem":"pypi","requirements":"0.8.0","direct":false,"kind":"runtime","optional":false},{"id":7646658504,"package_name":"cryptography","ecosystem":"pypi","requirements":"39.0.0","direct":false,"kind":"develop","optional":false},{"id":7646658505,"package_name":"cssselect2","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"develop","optional":false},{"id":7646658506,"package_name":"debugpy","ecosystem":"pypi","requirements":"1.6.6","direct":false,"kind":"develop","optional":false},{"id":7646658514,"package_name":"decli","ecosystem":"pypi","requirements":"0.5.2","direct":false,"kind":"develop","optional":false},{"id":7646658517,"package_name":"decorator","ecosystem":"pypi","requirements":"5.1.1","direct":false,"kind":"runtime","optional":false},{"id":7646658526,"package_name":"defusedxml","ecosystem":"pypi","requirements":"0.7.1","direct":false,"kind":"develop","optional":false},{"id":7646658527,"package_name":"diff-match-patch","ecosystem":"pypi","requirements":"20200713","direct":false,"kind":"develop","optional":false},{"id":7646658528,"package_name":"dill","ecosystem":"pypi","requirements":"0.3.6","direct":false,"kind":"develop","optional":false},{"id":7646658529,"package_name":"doc8","ecosystem":"pypi","requirements":"0.10.1","direct":false,"kind":"develop","optional":false},{"id":7646658530,"package_name":"docopt","ecosystem":"pypi","requirements":"0.6.2","direct":false,"kind":"develop","optional":false},{"id":7646658531,"package_name":"docutils","ecosystem":"pypi","requirements":"0.17.1","direct":false,"kind":"runtime","optional":false},{"id":7646658532,"package_name":"entrypoints","ecosystem":"pypi","requirements":"0.4","direct":false,"kind":"develop","optional":false},{"id":7646658544,"package_name":"flake8","ecosystem":"pypi","requirements":"4.0.1","direct":false,"kind":"develop","optional":false},{"id":7646658545,"package_name":"flake8-docstrings","ecosystem":"pypi","requirements":"1.7.0","direct":false,"kind":"develop","optional":false},{"id":7646658546,"package_name":"idna","ecosystem":"pypi","requirements":"3.4","direct":false,"kind":"runtime","optional":false},{"id":7646658547,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"runtime","optional":false},{"id":7646658548,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"6.0.0","direct":false,"kind":"runtime","optional":false},{"id":7646658549,"package_name":"inflection","ecosystem":"pypi","requirements":"0.5.1","direct":false,"kind":"develop","optional":false},{"id":7646658550,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"develop","optional":false},{"id":7646658551,"package_name":"intervaltree","ecosystem":"pypi","requirements":"3.1.0","direct":false,"kind":"develop","optional":false},{"id":7646658552,"package_name":"ipykernel","ecosystem":"pypi","requirements":"6.21.1","direct":false,"kind":"develop","optional":false},{"id":7646658553,"package_name":"ipython","ecosystem":"pypi","requirements":"7.34.0","direct":false,"kind":"runtime","optional":false},{"id":7646658554,"package_name":"ipython-genutils","ecosystem":"pypi","requirements":"0.2.0","direct":false,"kind":"develop","optional":false},{"id":7646658555,"package_name":"isort","ecosystem":"pypi","requirements":"5.12.0","direct":false,"kind":"develop","optional":false},{"id":7646658556,"package_name":"jaraco-classes","ecosystem":"pypi","requirements":"3.2.3","direct":false,"kind":"develop","optional":false},{"id":7646658557,"package_name":"jedi","ecosystem":"pypi","requirements":"0.18.2","direct":false,"kind":"runtime","optional":false},{"id":7646658558,"package_name":"jeepney","ecosystem":"pypi","requirements":"0.8.0","direct":false,"kind":"develop","optional":false},{"id":7646658559,"package_name":"jellyfish","ecosystem":"pypi","requirements":"0.9.0","direct":false,"kind":"develop","optional":false},{"id":7646658560,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.2","direct":false,"kind":"runtime","optional":false},{"id":7646658561,"package_name":"jinja2-time","ecosystem":"pypi","requirements":"0.2.0","direct":false,"kind":"develop","optional":false},{"id":7646658562,"package_name":"jsonschema","ecosystem":"pypi","requirements":"3.2.0","direct":false,"kind":"develop","optional":false},{"id":7646658563,"package_name":"jupyter-client","ecosystem":"pypi","requirements":"7.4.9","direct":false,"kind":"develop","optional":false},{"id":7646658564,"package_name":"jupyter-core","ecosystem":"pypi","requirements":"5.2.0","direct":false,"kind":"develop","optional":false},{"id":7646658565,"package_name":"jupyterlab-pygments","ecosystem":"pypi","requirements":"0.2.2","direct":false,"kind":"develop","optional":false},{"id":7646658566,"package_name":"keyring","ecosystem":"pypi","requirements":"23.13.1","direct":false,"kind":"develop","optional":false},{"id":7646658567,"package_name":"lazy-object-proxy","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"develop","optional":false},{"id":7646658568,"package_name":"logbook","ecosystem":"pypi","requirements":"1.5.3","direct":false,"kind":"develop","optional":false},{"id":7646658569,"package_name":"markupsafe","ecosystem":"pypi","requirements":"2.1.2","direct":false,"kind":"runtime","optional":false},{"id":7646658570,"package_name":"matplotlib-inline","ecosystem":"pypi","requirements":"0.1.6","direct":false,"kind":"runtime","optional":false},{"id":7646658571,"package_name":"mccabe","ecosystem":"pypi","requirements":"0.6.1","direct":false,"kind":"develop","optional":false},{"id":7646658572,"package_name":"mistune","ecosystem":"pypi","requirements":"2.0.4","direct":false,"kind":"develop","optional":false},{"id":7646658573,"package_name":"more-itertools","ecosystem":"pypi","requirements":"9.0.0","direct":false,"kind":"develop","optional":false},{"id":7646658574,"package_name":"multimethod","ecosystem":"pypi","requirements":"1.9.1","direct":false,"kind":"runtime","optional":false},{"id":7646658575,"package_name":"mypy","ecosystem":"pypi","requirements":"0.991","direct":false,"kind":"develop","optional":false},{"id":7646658576,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"0.4.3","direct":false,"kind":"develop","optional":false},{"id":7646658577,"package_name":"nbclient","ecosystem":"pypi","requirements":"0.7.2","direct":false,"kind":"develop","optional":false},{"id":7646658578,"package_name":"nbconvert","ecosystem":"pypi","requirements":"7.2.9","direct":false,"kind":"develop","optional":false},{"id":7646658579,"package_name":"nbformat","ecosystem":"pypi","requirements":"5.7.3","direct":false,"kind":"develop","optional":false},{"id":7646658580,"package_name":"nest-asyncio","ecosystem":"pypi","requirements":"1.5.6","direct":false,"kind":"develop","optional":false},{"id":7646658581,"package_name":"nlopt","ecosystem":"pypi","requirements":"2.7.1","direct":false,"kind":"runtime","optional":false},{"id":7646658582,"package_name":"nptyping","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":"runtime","optional":false},{"id":7646658583,"package_name":"numpy","ecosystem":"pypi","requirements":"1.24.1","direct":false,"kind":"runtime","optional":false},{"id":7646658584,"package_name":"numpydoc","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"develop","optional":false},{"id":7646658591,"package_name":"OCP-stubs","ecosystem":"pypi","requirements":"7.5.1","direct":false,"kind":"develop","optional":false},{"id":7646658612,"package_name":"packaging","ecosystem":"pypi","requirements":"23.0","direct":false,"kind":"runtime","optional":false},{"id":7646658615,"package_name":"pandocfilters","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"develop","optional":false},{"id":7646658653,"package_name":"paramiko","ecosystem":"pypi","requirements":"3.0.0","direct":false,"kind":"develop","optional":false},{"id":7646658657,"package_name":"parso","ecosystem":"pypi","requirements":"0.8.3","direct":false,"kind":"runtime","optional":false},{"id":7646658707,"package_name":"path","ecosystem":"pypi","requirements":"16.6.0","direct":false,"kind":"runtime","optional":false},{"id":7646658708,"package_name":"pathspec","ecosystem":"pypi","requirements":"0.11.0","direct":false,"kind":"develop","optional":false},{"id":7646658709,"package_name":"pbr","ecosystem":"pypi","requirements":"5.11.1","direct":false,"kind":"develop","optional":false},{"id":7646658710,"package_name":"pexpect","ecosystem":"pypi","requirements":"4.8.0","direct":false,"kind":"runtime","optional":false},{"id":7646658711,"package_name":"pickleshare","ecosystem":"pypi","requirements":"0.7.5","direct":false,"kind":"runtime","optional":false},{"id":7646658712,"package_name":"pillow","ecosystem":"pypi","requirements":"9.4.0","direct":false,"kind":"develop","optional":false},{"id":7646658713,"package_name":"platformdirs","ecosystem":"pypi","requirements":"2.6.2","direct":false,"kind":"develop","optional":false},{"id":7646658714,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"develop","optional":false},{"id":7646658715,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"3.0.36","direct":false,"kind":"runtime","optional":false},{"id":7646658716,"package_name":"psutil","ecosystem":"pypi","requirements":"5.9.4","direct":false,"kind":"develop","optional":false},{"id":7646658717,"package_name":"ptyprocess","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":7646658718,"package_name":"pycodestyle","ecosystem":"pypi","requirements":"2.8.0","direct":false,"kind":"develop","optional":false},{"id":7646658719,"package_name":"pycparser","ecosystem":"pypi","requirements":"2.21","direct":false,"kind":"develop","optional":false},{"id":7646658720,"package_name":"pydantic","ecosystem":"pypi","requirements":"1.10.4","direct":false,"kind":"develop","optional":false},{"id":7646658721,"package_name":"pydocstyle","ecosystem":"pypi","requirements":"6.3.0","direct":false,"kind":"develop","optional":false},{"id":7646658722,"package_name":"pyflakes","ecosystem":"pypi","requirements":"2.4.0","direct":false,"kind":"develop","optional":false},{"id":7646658723,"package_name":"pygments","ecosystem":"pypi","requirements":"2.14.0","direct":false,"kind":"runtime","optional":false},{"id":7646658724,"package_name":"pykwalify","ecosystem":"pypi","requirements":"1.8.0","direct":false,"kind":"develop","optional":false},{"id":7646658725,"package_name":"pylint","ecosystem":"pypi","requirements":"2.16.1","direct":false,"kind":"develop","optional":false},{"id":7646658726,"package_name":"pyls-spyder","ecosystem":"pypi","requirements":"0.4.0","direct":false,"kind":"develop","optional":false},{"id":7646658727,"package_name":"pynacl","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"develop","optional":false},{"id":7646658728,"package_name":"pyobjc-core","ecosystem":"pypi","requirements":"9.0.1","direct":false,"kind":"develop","optional":false},{"id":7646658729,"package_name":"pyobjc-framework-cocoa","ecosystem":"pypi","requirements":"9.0.1","direct":false,"kind":"develop","optional":false},{"id":7646658730,"package_name":"pyobjc-framework-coreservices","ecosystem":"pypi","requirements":"9.0.1","direct":false,"kind":"develop","optional":false},{"id":7646658731,"package_name":"pyobjc-framework-fsevents","ecosystem":"pypi","requirements":"9.0.1","direct":false,"kind":"develop","optional":false},{"id":7646658732,"package_name":"pyparsing","ecosystem":"pypi","requirements":"3.0.9","direct":false,"kind":"runtime","optional":false},{"id":7646658733,"package_name":"pyqt5","ecosystem":"pypi","requirements":"5.15.8","direct":false,"kind":"develop","optional":false},{"id":7646658734,"package_name":"pyqt5-qt5","ecosystem":"pypi","requirements":"5.15.2","direct":false,"kind":"develop","optional":false},{"id":7646658735,"package_name":"pyqt5-sip","ecosystem":"pypi","requirements":"12.11.1","direct":false,"kind":"develop","optional":false},{"id":7646658736,"package_name":"pyqtgraph","ecosystem":"pypi","requirements":"0.12.4","direct":false,"kind":"develop","optional":false},{"id":7646658737,"package_name":"pyqtwebengine","ecosystem":"pypi","requirements":"5.15.6","direct":false,"kind":"develop","optional":false},{"id":7646658738,"package_name":"pyqtwebengine-qt5","ecosystem":"pypi","requirements":"5.15.2","direct":false,"kind":"develop","optional":false},{"id":7646658739,"package_name":"pyrsistent","ecosystem":"pypi","requirements":"0.19.3","direct":false,"kind":"develop","optional":false},{"id":7646658740,"package_name":"pytest","ecosystem":"pypi","requirements":"7.2.1","direct":false,"kind":"develop","optional":false},{"id":7646658741,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"2.8.2","direct":false,"kind":"develop","optional":false},{"id":7646658742,"package_name":"python-lsp-black","ecosystem":"pypi","requirements":"1.2.1","direct":false,"kind":"develop","optional":false},{"id":7646658743,"package_name":"python-lsp-jsonrpc","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"develop","optional":false},{"id":7646658744,"package_name":"python-lsp-server","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"develop","optional":false},{"id":7646658745,"package_name":"python-slugify","ecosystem":"pypi","requirements":"8.0.0","direct":false,"kind":"develop","optional":false},{"id":7646658746,"package_name":"pytoolconfig","ecosystem":"pypi","requirements":"1.2.5","direct":false,"kind":"develop","optional":false},{"id":7646658747,"package_name":"pytz","ecosystem":"pypi","requirements":"2022.7.1","direct":false,"kind":"runtime","optional":false},{"id":7646658748,"package_name":"pywin32","ecosystem":"pypi","requirements":"305","direct":false,"kind":"develop","optional":false},{"id":7646658749,"package_name":"pywin32-ctypes","ecosystem":"pypi","requirements":"0.2.0","direct":false,"kind":"develop","optional":false},{"id":7646658750,"package_name":"pyxdg","ecosystem":"pypi","requirements":"0.28","direct":false,"kind":"develop","optional":false},{"id":7646658756,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0","direct":false,"kind":"develop","optional":false},{"id":7646658757,"package_name":"pyzmq","ecosystem":"pypi","requirements":"25.0.0","direct":false,"kind":"develop","optional":false},{"id":7646658758,"package_name":"qdarkstyle","ecosystem":"pypi","requirements":"3.0.3","direct":false,"kind":"develop","optional":false},{"id":7646658759,"package_name":"qstylizer","ecosystem":"pypi","requirements":"0.2.2","direct":false,"kind":"develop","optional":false},{"id":7646658760,"package_name":"qtawesome","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":"develop","optional":false},{"id":7646658761,"package_name":"qtconsole","ecosystem":"pypi","requirements":"5.3.2","direct":false,"kind":"develop","optional":false},{"id":7646658762,"package_name":"qtpy","ecosystem":"pypi","requirements":"2.3.0","direct":false,"kind":"develop","optional":false},{"id":7646658763,"package_name":"questionary","ecosystem":"pypi","requirements":"1.10.0","direct":false,"kind":"develop","optional":false},{"id":7646658764,"package_name":"requests","ecosystem":"pypi","requirements":"2.28.2","direct":false,"kind":"runtime","optional":false},{"id":7646658765,"package_name":"restructuredtext-lint","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"develop","optional":false},{"id":7646658766,"package_name":"rich","ecosystem":"pypi","requirements":"12.6.0","direct":false,"kind":"develop","optional":false},{"id":7646658767,"package_name":"rope","ecosystem":"pypi","requirements":"1.7.0","direct":false,"kind":"develop","optional":false},{"id":7646658768,"package_name":"rstcheck","ecosystem":"pypi","requirements":"6.1.1","direct":false,"kind":"develop","optional":false},{"id":7646658769,"package_name":"rstcheck-core","ecosystem":"pypi","requirements":"1.0.3","direct":false,"kind":"develop","optional":false},{"id":7646658770,"package_name":"rtree","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"develop","optional":false},{"id":7646658771,"package_name":"ruamel-yaml","ecosystem":"pypi","requirements":"0.17.21","direct":false,"kind":"develop","optional":false},{"id":7646658772,"package_name":"ruamel-yaml-clib","ecosystem":"pypi","requirements":"0.2.7","direct":false,"kind":"develop","optional":false},{"id":7646658773,"package_name":"secretstorage","ecosystem":"pypi","requirements":"3.3.3","direct":false,"kind":"develop","optional":false},{"id":7646658774,"package_name":"setuptools","ecosystem":"pypi","requirements":"67.1.0","direct":false,"kind":"runtime","optional":false},{"id":7646658775,"package_name":"shellingham","ecosystem":"pypi","requirements":"1.5.0.post1","direct":false,"kind":"develop","optional":false},{"id":7646658776,"package_name":"six","ecosystem":"pypi","requirements":"1.16.0","direct":false,"kind":"develop","optional":false},{"id":7646658777,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":7646658778,"package_name":"sortedcontainers","ecosystem":"pypi","requirements":"2.4.0","direct":false,"kind":"develop","optional":false},{"id":7646658779,"package_name":"soupsieve","ecosystem":"pypi","requirements":"2.3.2.post1","direct":false,"kind":"develop","optional":false},{"id":7646658780,"package_name":"sphinx","ecosystem":"pypi","requirements":"5.3.0","direct":false,"kind":"runtime","optional":false},{"id":7646658781,"package_name":"sphinx-argparse-cli","ecosystem":"pypi","requirements":"1.11.0","direct":false,"kind":"runtime","optional":false},{"id":7646658782,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"1.1.1","direct":false,"kind":"runtime","optional":false},{"id":7646658783,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"1.0.4","direct":false,"kind":"runtime","optional":false},{"id":7646658784,"package_name":"sphinxcontrib-cadquery","ecosystem":"pypi","requirements":"0.4.0","direct":false,"kind":"runtime","optional":false},{"id":7646658785,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"1.0.2","direct":false,"kind":"runtime","optional":false},{"id":7646658786,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":"runtime","optional":false},{"id":7646658787,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":7646658788,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"1.0.3","direct":false,"kind":"runtime","optional":false},{"id":7646658789,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"1.1.5","direct":false,"kind":"runtime","optional":false},{"id":7646658790,"package_name":"spyder","ecosystem":"pypi","requirements":"5.3.3","direct":false,"kind":"develop","optional":false},{"id":7646658791,"package_name":"spyder-kernels","ecosystem":"pypi","requirements":"2.3.3","direct":false,"kind":"develop","optional":false},{"id":7646658792,"package_name":"stevedore","ecosystem":"pypi","requirements":"4.1.1","direct":false,"kind":"develop","optional":false},{"id":7646658793,"package_name":"termcolor","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"develop","optional":false},{"id":7646658794,"package_name":"text-unidecode","ecosystem":"pypi","requirements":"1.3","direct":false,"kind":"develop","optional":false},{"id":7646658795,"package_name":"textdistance","ecosystem":"pypi","requirements":"4.5.0","direct":false,"kind":"develop","optional":false},{"id":7646658796,"package_name":"three-merge","ecosystem":"pypi","requirements":"0.1.1","direct":false,"kind":"develop","optional":false},{"id":7646658797,"package_name":"tinycss2","ecosystem":"pypi","requirements":"1.2.1","direct":false,"kind":"develop","optional":false},{"id":7646658798,"package_name":"toml","ecosystem":"pypi","requirements":"0.10.2","direct":false,"kind":"develop","optional":false},{"id":7646658799,"package_name":"tomli","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":"develop","optional":false},{"id":7646658800,"package_name":"tomlkit","ecosystem":"pypi","requirements":"0.11.6","direct":false,"kind":"develop","optional":false},{"id":7646658801,"package_name":"tornado","ecosystem":"pypi","requirements":"6.2","direct":false,"kind":"develop","optional":false},{"id":7646658802,"package_name":"traitlets","ecosystem":"pypi","requirements":"5.9.0","direct":false,"kind":"runtime","optional":false},{"id":7646658803,"package_name":"typer","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"develop","optional":false},{"id":7646658804,"package_name":"types-docutils","ecosystem":"pypi","requirements":"0.19.1.2","direct":false,"kind":"develop","optional":false},{"id":7646658805,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.4.0","direct":false,"kind":"runtime","optional":false},{"id":7646658806,"package_name":"typish","ecosystem":"pypi","requirements":"1.9.3","direct":false,"kind":"runtime","optional":false},{"id":7646658807,"package_name":"ujson","ecosystem":"pypi","requirements":"5.7.0","direct":false,"kind":"develop","optional":false},{"id":7646658808,"package_name":"urllib3","ecosystem":"pypi","requirements":"1.26.14","direct":false,"kind":"runtime","optional":false},{"id":7646658809,"package_name":"watchdog","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"develop","optional":false},{"id":7646658810,"package_name":"wcwidth","ecosystem":"pypi","requirements":"0.2.6","direct":false,"kind":"runtime","optional":false},{"id":7646658811,"package_name":"webencodings","ecosystem":"pypi","requirements":"0.5.1","direct":false,"kind":"develop","optional":false},{"id":7646658812,"package_name":"whatthepatch","ecosystem":"pypi","requirements":"1.0.4","direct":false,"kind":"develop","optional":false},{"id":7646658813,"package_name":"wrapt","ecosystem":"pypi","requirements":"1.14.1","direct":false,"kind":"develop","optional":false},{"id":7646658814,"package_name":"wurlitzer","ecosystem":"pypi","requirements":"3.0.3","direct":false,"kind":"runtime","optional":false},{"id":7646658815,"package_name":"yapf","ecosystem":"pypi","requirements":"0.32.0","direct":false,"kind":"develop","optional":false},{"id":7646658816,"package_name":"zipp","ecosystem":"pypi","requirements":"3.12.0","direct":false,"kind":"runtime","optional":false}]}],"score":null,"created_at":"2025-09-04T15:51:27.945Z","updated_at":"2025-10-07T08:20:28.911Z","avatar_url":"https://github.com/sethfischer.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":[],"project_url":"https://science.ecosyste.ms/api/v1/projects/52310","html_url":"https://science.ecosyste.ms/projects/52310","bibtex_url":"https://science.ecosyste.ms/projects/52310/export.bibtex","apalike_url":"https://science.ecosyste.ms/projects/52310/export.apalike"}