{"id":65228,"name":"pyautogui","description":"A cross-platform GUI automation Python module for human beings. Used to programmatically control the mouse \u0026 keyboard.","url":"https://github.com/asweigart/pyautogui","last_synced_at":"2025-09-08T13:22:10.264Z","repository":{"id":18749066,"uuid":"21961171","full_name":"asweigart/pyautogui","owner":"asweigart","description":"A cross-platform GUI automation Python module for human beings. Used to programmatically control the mouse \u0026 keyboard.","archived":false,"fork":false,"pushed_at":"2024-08-20T18:34:57.000Z","size":2346,"stargazers_count":11768,"open_issues_count":565,"forks_count":1351,"subscribers_count":193,"default_branch":"master","last_synced_at":"2025-08-20T04:09:39.650Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asweigart.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.txt","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.rst","authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-07-17T23:30:38.000Z","updated_at":"2025-08-19T23:01:44.000Z","dependencies_parsed_at":"2023-02-19T08:31:25.159Z","dependency_job_id":"b50beb1d-3060-427d-86b1-cf9ede8ce055","html_url":"https://github.com/asweigart/pyautogui","commit_stats":{"total_commits":318,"total_committers":53,"mean_commits":6.0,"dds":"0.30817610062893086","last_synced_commit":"b4255d0be42c377154c7d92337d7f8515fc63234"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/asweigart/pyautogui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart","download_url":"https://codeload.github.com/asweigart/pyautogui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/sbom","scorecard":{"id":213902,"data":{"date":"2025-08-11","repo":{"name":"github.com/asweigart/pyautogui","commit":"b4255d0be42c377154c7d92337d7f8515fc63234"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"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":"Code-Review","score":2,"reason":"Found 8/28 approved changesets -- score normalized to 2","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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 10 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-17T01:16:35.200Z","repository_id":18749066,"created_at":"2025-08-17T01:16:35.200Z","updated_at":"2025-08-17T01:16:35.200Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274190956,"owners_count":25238264,"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":"asweigart","name":"Al Sweigart","uuid":"52220","kind":"user","description":"Author of \"Automate the Boring Stuff with Python\" and other free coding books. he/him","email":"","website":"https://github.com/asweigart/readal","location":"USA","twitter":"AlSweigart","company":null,"icon_url":"https://avatars.githubusercontent.com/u/52220?v=4","repositories_count":239,"last_synced_at":"2024-04-16T10:09:02.995Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/asweigart","funding_links":[],"total_stars":16003,"followers":4535,"following":66,"created_at":"2022-11-02T16:25:00.094Z","updated_at":"2024-04-16T10:09:33.382Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart/repositories"},"packages":[{"id":2865447,"name":"pyautogui","ecosystem":"pypi","description":"PyAutoGUI lets Python control the mouse and keyboard, and other GUI automation tasks. For Windows, macOS, and Linux, on Python 3 and 2.","homepage":"https://github.com/asweigart/pyautogui","licenses":"BSD","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/asweigart/pyautogui","keywords_array":["gui","automation","test","testing","keyboard","mouse","cursor","click","press","keystroke","control"],"namespace":null,"versions_count":50,"first_release_published_at":"2014-07-28T23:36:53.000Z","latest_release_published_at":"2023-05-24T20:11:32.000Z","latest_release_number":"0.9.54","last_synced_at":"2025-09-08T02:34:46.931Z","created_at":"2022-04-10T12:09:46.912Z","updated_at":"2025-09-08T02:34:46.932Z","registry_url":"https://pypi.org/project/pyautogui/","install_command":"pip install pyautogui --index-url https://pypi.org/simple","documentation_url":"https://pyautogui.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 4 - Beta","Environment :: MacOS X","Environment :: Win32 (MS Windows)","Environment :: X11 Applications","Intended Audience :: Developers","License :: OSI Approved :: BSD License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3.1","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.2","Programming Language :: Python :: 3.3","Programming Language :: Python :: 3.4","Programming Language :: Python :: 3.5","Programming Language :: Python :: 3.6","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9"],"normalized_name":"pyautogui","project_status":null},"repo_metadata":{"id":18749066,"uuid":"21961171","full_name":"asweigart/pyautogui","owner":"asweigart","description":"A cross-platform GUI automation Python module for human beings. Used to programmatically control the mouse \u0026 keyboard.","archived":false,"fork":false,"pushed_at":"2024-08-20T18:34:57.000Z","size":2346,"stargazers_count":10111,"open_issues_count":530,"forks_count":1228,"subscribers_count":187,"default_branch":"master","last_synced_at":"2024-09-06T02:39:16.623Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asweigart.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.txt","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.rst","authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-07-17T23:30:38.000Z","updated_at":"2024-09-05T17:31:57.000Z","dependencies_parsed_at":"2023-02-19T08:31:25.159Z","dependency_job_id":"b50beb1d-3060-427d-86b1-cf9ede8ce055","html_url":"https://github.com/asweigart/pyautogui","commit_stats":{"total_commits":318,"total_committers":53,"mean_commits":6.0,"dds":"0.30817610062893086","last_synced_commit":"b4255d0be42c377154c7d92337d7f8515fc63234"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart","download_url":"https://codeload.github.com/asweigart/pyautogui/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217938547,"owners_count":16253995,"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":"asweigart","name":"Al Sweigart","uuid":"52220","kind":"user","description":"Author of \"Automate the Boring Stuff with Python\" and other free coding books. he/him","email":"","website":"https://github.com/asweigart/readal","location":"USA","twitter":"AlSweigart","company":null,"icon_url":"https://avatars.githubusercontent.com/u/52220?v=4","repositories_count":239,"last_synced_at":"2024-04-16T10:09:02.995Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/asweigart","funding_links":[],"total_stars":16003,"followers":4535,"following":66,"created_at":"2022-11-02T16:25:00.094Z","updated_at":"2024-04-16T10:09:33.382Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart/repositories"},"tags":[]},"repo_metadata_updated_at":"2024-09-07T05:43:32.966Z","dependent_packages_count":326,"downloads":1472682,"downloads_period":"last-month","dependent_repos_count":1028,"rankings":{"downloads":0.38861611237909993,"dependent_repos_count":0.3607906604955938,"dependent_packages_count":0.09942259930917074,"stargazers_count":0.2712422104168845,"forks_count":1.2281847287676528,"docker_downloads_count":0.9346071038822901,"average":0.547143902541782},"purl":"pkg:pypi/pyautogui","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pyautogui","docker_dependents_count":9,"docker_downloads_count":415358,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pyautogui","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pyautogui/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-09-07T05:43:32.261Z","issues_count":213,"pull_requests_count":36,"avg_time_to_close_issue":19163903.25,"avg_time_to_close_pull_request":54383467.5,"issues_closed_count":32,"pull_requests_closed_count":10,"pull_request_authors_count":35,"issue_authors_count":200,"avg_comments_per_issue":3.3427230046948355,"avg_comments_per_pull_request":1.1111111111111112,"merged_pull_requests_count":1,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":69,"past_year_pull_requests_count":10,"past_year_avg_time_to_close_issue":963579.4545454546,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":11,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":66,"past_year_avg_comments_per_issue":0.8840579710144928,"past_year_avg_comments_per_pull_request":0.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/issues","maintainers":[{"login":"asweigart","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/asweigart"}],"active_maintainers":[{"login":"asweigart","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/asweigart"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautogui/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautogui/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautogui/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautogui/related_packages","maintainers":[{"uuid":"AlSweigart","login":"AlSweigart","name":null,"email":null,"url":null,"packages_count":110,"html_url":"https://pypi.org/user/AlSweigart/","role":null,"created_at":"2022-12-17T22:37:38.277Z","updated_at":"2022-12-17T22:37:38.277Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/AlSweigart/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":726140,"maintainers_count":308800,"namespaces_count":0,"keywords_count":238245,"github":"pypi","metadata":{"funded_packages_count":50579},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-08T05:32:36.857Z","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":10945490,"name":"pyautogui-soraban","ecosystem":"pypi","description":"PyAutoGUI lets Python control the mouse and keyboard, and other GUI automation tasks. For Windows, macOS, and Linux, on Python 3 and 2.","homepage":"https://github.com/asweigart/pyautogui","licenses":"BSD","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/asweigart/pyautogui","keywords_array":["gui","automation","test","testing","keyboard","mouse","cursor","click","press","keystroke","control"],"namespace":null,"versions_count":3,"first_release_published_at":"2024-10-03T21:44:05.000Z","latest_release_published_at":"2024-10-07T18:26:14.000Z","latest_release_number":"0.9.56","last_synced_at":"2025-08-20T03:35:02.081Z","created_at":"2024-10-03T21:49:29.320Z","updated_at":"2025-08-20T04:41:31.974Z","registry_url":"https://pypi.org/project/pyautogui-soraban/","install_command":"pip install pyautogui-soraban --index-url https://pypi.org/simple","documentation_url":"https://pyautogui-soraban.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 4 - Beta","Environment :: MacOS X","Environment :: Win32 (MS Windows)","Environment :: X11 Applications","Intended Audience :: Developers","License :: OSI Approved :: BSD License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3.1","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.2","Programming Language :: Python :: 3.3","Programming Language :: Python :: 3.4","Programming Language :: Python :: 3.5","Programming Language :: Python :: 3.6","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9"],"normalized_name":"pyautogui-soraban","project_status":null},"repo_metadata":{"id":18749066,"uuid":"21961171","full_name":"asweigart/pyautogui","owner":"asweigart","description":"A cross-platform GUI automation Python module for human beings. Used to programmatically control the mouse \u0026 keyboard.","archived":false,"fork":false,"pushed_at":"2024-08-20T18:34:57.000Z","size":2346,"stargazers_count":11601,"open_issues_count":566,"forks_count":1335,"subscribers_count":191,"default_branch":"master","last_synced_at":"2025-07-06T21:44:18.813Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asweigart.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.txt","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.rst","authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-07-17T23:30:38.000Z","updated_at":"2025-07-06T12:03:11.000Z","dependencies_parsed_at":"2023-02-19T08:31:25.159Z","dependency_job_id":"b50beb1d-3060-427d-86b1-cf9ede8ce055","html_url":"https://github.com/asweigart/pyautogui","commit_stats":{"total_commits":318,"total_committers":53,"mean_commits":6.0,"dds":"0.30817610062893086","last_synced_commit":"b4255d0be42c377154c7d92337d7f8515fc63234"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/asweigart/pyautogui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart","download_url":"https://codeload.github.com/asweigart/pyautogui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/sbom","scorecard":{"id":213902,"data":{"date":"2025-08-11","repo":{"name":"github.com/asweigart/pyautogui","commit":"b4255d0be42c377154c7d92337d7f8515fc63234"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"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":"Code-Review","score":2,"reason":"Found 8/28 approved changesets -- score normalized to 2","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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 10 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-17T01:16:35.200Z","repository_id":18749066,"created_at":"2025-08-17T01:16:35.200Z","updated_at":"2025-08-17T01:16:35.200Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271261226,"owners_count":24728831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"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":"asweigart","name":"Al Sweigart","uuid":"52220","kind":"user","description":"Author of \"Automate the Boring Stuff with Python\" and other free coding books. he/him","email":"","website":"https://github.com/asweigart/readal","location":"USA","twitter":"AlSweigart","company":null,"icon_url":"https://avatars.githubusercontent.com/u/52220?v=4","repositories_count":239,"last_synced_at":"2024-04-16T10:09:02.995Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/asweigart","funding_links":[],"total_stars":16003,"followers":4535,"following":66,"created_at":"2022-11-02T16:25:00.094Z","updated_at":"2024-04-16T10:09:33.382Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart/repositories"},"tags":[]},"repo_metadata_updated_at":"2025-08-20T04:41:31.974Z","dependent_packages_count":0,"downloads":105,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":57.66392076567782,"dependent_packages_count":10.245324935265808,"stargazers_count":0.5937232159569682,"forks_count":1.60318403777761,"docker_downloads_count":null,"average":17.526538238669552},"purl":"pkg:pypi/pyautogui-soraban","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pyautogui-soraban","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pyautogui-soraban","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pyautogui-soraban/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-07-06T21:36:44.803Z","issues_count":256,"pull_requests_count":48,"avg_time_to_close_issue":21061903.26190476,"avg_time_to_close_pull_request":51824493.5,"issues_closed_count":42,"pull_requests_closed_count":12,"pull_request_authors_count":46,"issue_authors_count":237,"avg_comments_per_issue":3.15625,"avg_comments_per_pull_request":0.875,"merged_pull_requests_count":1,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":52,"past_year_pull_requests_count":14,"past_year_avg_time_to_close_issue":770797.1666666666,"past_year_avg_time_to_close_pull_request":164.0,"past_year_issues_closed_count":6,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":14,"past_year_issue_authors_count":49,"past_year_avg_comments_per_issue":0.8846153846153846,"past_year_avg_comments_per_pull_request":0.14285714285714285,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/issues","maintainers":[{"login":"asweigart","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/asweigart"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautogui-soraban/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautogui-soraban/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautogui-soraban/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautogui-soraban/related_packages","maintainers":[{"uuid":"jimmysoraban","login":"jimmysoraban","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/jimmysoraban/","role":"Owner","created_at":"2024-10-03T21:49:31.152Z","updated_at":"2024-10-03T21:49:31.152Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/jimmysoraban/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":726140,"maintainers_count":308800,"namespaces_count":0,"keywords_count":238245,"github":"pypi","metadata":{"funded_packages_count":50579},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-08T05:32:36.857Z","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":2865437,"name":"pyautoguiumlauts","ecosystem":"pypi","description":"PyAutoGUI lets Python control the mouse and keyboard, and other GUI automation tasks. For Windows, macOS, and Linux, on Python 3 and 2.","homepage":"https://github.com/asweigart/pyautogui","licenses":"BSD","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/asweigart/pyautogui","keywords_array":["gui","automation","test","testing","keyboard","mouse","cursor","click","press","keystroke","control"],"namespace":null,"versions_count":1,"first_release_published_at":"2020-09-20T14:24:09.000Z","latest_release_published_at":"2020-09-20T14:24:09.000Z","latest_release_number":"0.9.51","last_synced_at":"2024-12-09T10:37:26.164Z","created_at":"2022-04-10T12:09:46.780Z","updated_at":"2025-08-20T04:41:32.103Z","registry_url":"https://pypi.org/project/pyautoguiumlauts/","install_command":"pip install pyautoguiumlauts --index-url https://pypi.org/simple","documentation_url":"https://pyautoguiumlauts.readthedocs.io/","metadata":{"funding":null,"normalized_name":"pyautoguiumlauts"},"repo_metadata":{"id":18749066,"uuid":"21961171","full_name":"asweigart/pyautogui","owner":"asweigart","description":"A cross-platform GUI automation Python module for human beings. Used to programmatically control the mouse \u0026 keyboard.","archived":false,"fork":false,"pushed_at":"2024-08-20T18:34:57.000Z","size":2346,"stargazers_count":11601,"open_issues_count":566,"forks_count":1335,"subscribers_count":191,"default_branch":"master","last_synced_at":"2025-07-06T21:44:18.813Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asweigart.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.txt","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.rst","authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-07-17T23:30:38.000Z","updated_at":"2025-07-06T12:03:11.000Z","dependencies_parsed_at":"2023-02-19T08:31:25.159Z","dependency_job_id":"b50beb1d-3060-427d-86b1-cf9ede8ce055","html_url":"https://github.com/asweigart/pyautogui","commit_stats":{"total_commits":318,"total_committers":53,"mean_commits":6.0,"dds":"0.30817610062893086","last_synced_commit":"b4255d0be42c377154c7d92337d7f8515fc63234"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/asweigart/pyautogui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart","download_url":"https://codeload.github.com/asweigart/pyautogui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/sbom","scorecard":{"id":213902,"data":{"date":"2025-08-11","repo":{"name":"github.com/asweigart/pyautogui","commit":"b4255d0be42c377154c7d92337d7f8515fc63234"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"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":"Code-Review","score":2,"reason":"Found 8/28 approved changesets -- score normalized to 2","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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 10 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-17T01:16:35.200Z","repository_id":18749066,"created_at":"2025-08-17T01:16:35.200Z","updated_at":"2025-08-17T01:16:35.200Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271261226,"owners_count":24728831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"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":"asweigart","name":"Al Sweigart","uuid":"52220","kind":"user","description":"Author of \"Automate the Boring Stuff with Python\" and other free coding books. he/him","email":"","website":"https://github.com/asweigart/readal","location":"USA","twitter":"AlSweigart","company":null,"icon_url":"https://avatars.githubusercontent.com/u/52220?v=4","repositories_count":239,"last_synced_at":"2024-04-16T10:09:02.995Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/asweigart","funding_links":[],"total_stars":16003,"followers":4535,"following":66,"created_at":"2022-11-02T16:25:00.094Z","updated_at":"2024-04-16T10:09:33.382Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart/repositories"},"tags":[]},"repo_metadata_updated_at":"2025-08-20T04:41:32.103Z","dependent_packages_count":0,"downloads":null,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":6.332049112447341,"dependent_packages_count":4.843073008557472,"stargazers_count":0.31661445768672214,"forks_count":1.2842208859923907,"average":3.1939893661709813},"purl":"pkg:pypi/pyautoguiumlauts","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pyautoguiumlauts","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pyautoguiumlauts","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pyautoguiumlauts/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-07-06T21:36:44.803Z","issues_count":256,"pull_requests_count":48,"avg_time_to_close_issue":21061903.26190476,"avg_time_to_close_pull_request":51824493.5,"issues_closed_count":42,"pull_requests_closed_count":12,"pull_request_authors_count":46,"issue_authors_count":237,"avg_comments_per_issue":3.15625,"avg_comments_per_pull_request":0.875,"merged_pull_requests_count":1,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":52,"past_year_pull_requests_count":14,"past_year_avg_time_to_close_issue":770797.1666666666,"past_year_avg_time_to_close_pull_request":164.0,"past_year_issues_closed_count":6,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":14,"past_year_issue_authors_count":49,"past_year_avg_comments_per_issue":0.8846153846153846,"past_year_avg_comments_per_pull_request":0.14285714285714285,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/issues","maintainers":[{"login":"asweigart","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/asweigart"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautoguiumlauts/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautoguiumlauts/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautoguiumlauts/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyautoguiumlauts/related_packages","maintainers":[],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":726140,"maintainers_count":308800,"namespaces_count":0,"keywords_count":238245,"github":"pypi","metadata":{"funded_packages_count":50579},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-08T05:32:36.857Z","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":5290165,"name":"pyautogui","ecosystem":"conda","description":null,"homepage":"https://github.com/asweigart/pyautogui","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/asweigart/pyautogui","keywords_array":[],"namespace":null,"versions_count":11,"first_release_published_at":"2022-10-03T15:49:24.541Z","latest_release_published_at":"2021-10-13T11:24:27.000Z","latest_release_number":"0.9.53","last_synced_at":"2025-08-20T04:37:17.932Z","created_at":"2022-10-03T15:49:24.534Z","updated_at":"2025-08-20T04:41:32.239Z","registry_url":"https://anaconda.org/conda-forge/pyautogui","install_command":"conda install -c conda-forge pyautogui","documentation_url":null,"metadata":{},"repo_metadata":{"id":18749066,"uuid":"21961171","full_name":"asweigart/pyautogui","owner":"asweigart","description":"A cross-platform GUI automation Python module for human beings. Used to programmatically control the mouse \u0026 keyboard.","archived":false,"fork":false,"pushed_at":"2024-08-20T18:34:57.000Z","size":2346,"stargazers_count":11601,"open_issues_count":566,"forks_count":1335,"subscribers_count":191,"default_branch":"master","last_synced_at":"2025-07-06T21:44:18.813Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asweigart.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.txt","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.rst","authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-07-17T23:30:38.000Z","updated_at":"2025-07-06T12:03:11.000Z","dependencies_parsed_at":"2023-02-19T08:31:25.159Z","dependency_job_id":"b50beb1d-3060-427d-86b1-cf9ede8ce055","html_url":"https://github.com/asweigart/pyautogui","commit_stats":{"total_commits":318,"total_committers":53,"mean_commits":6.0,"dds":"0.30817610062893086","last_synced_commit":"b4255d0be42c377154c7d92337d7f8515fc63234"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/asweigart/pyautogui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart","download_url":"https://codeload.github.com/asweigart/pyautogui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/sbom","scorecard":{"id":213902,"data":{"date":"2025-08-11","repo":{"name":"github.com/asweigart/pyautogui","commit":"b4255d0be42c377154c7d92337d7f8515fc63234"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"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":"Code-Review","score":2,"reason":"Found 8/28 approved changesets -- score normalized to 2","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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 10 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-17T01:16:35.200Z","repository_id":18749066,"created_at":"2025-08-17T01:16:35.200Z","updated_at":"2025-08-17T01:16:35.200Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271261226,"owners_count":24728831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"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":"asweigart","name":"Al Sweigart","uuid":"52220","kind":"user","description":"Author of \"Automate the Boring Stuff with Python\" and other free coding books. he/him","email":"","website":"https://github.com/asweigart/readal","location":"USA","twitter":"AlSweigart","company":null,"icon_url":"https://avatars.githubusercontent.com/u/52220?v=4","repositories_count":239,"last_synced_at":"2024-04-16T10:09:02.995Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/asweigart","funding_links":[],"total_stars":16003,"followers":4535,"following":66,"created_at":"2022-11-02T16:25:00.094Z","updated_at":"2024-04-16T10:09:33.382Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asweigart/repositories"},"tags":[]},"repo_metadata_updated_at":"2025-08-20T04:41:32.238Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":3,"rankings":{"downloads":null,"dependent_repos_count":17.893686049413525,"dependent_packages_count":51.464936361367606,"stargazers_count":3.523833291739456,"forks_count":4.741702021462441,"docker_downloads_count":null,"average":19.406039430995758},"purl":"pkg:conda/pyautogui","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/conda/pyautogui","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/conda/pyautogui","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/conda/pyautogui/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-07-06T21:36:44.803Z","issues_count":256,"pull_requests_count":48,"avg_time_to_close_issue":21061903.26190476,"avg_time_to_close_pull_request":51824493.5,"issues_closed_count":42,"pull_requests_closed_count":12,"pull_request_authors_count":46,"issue_authors_count":237,"avg_comments_per_issue":3.15625,"avg_comments_per_pull_request":0.875,"merged_pull_requests_count":1,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":52,"past_year_pull_requests_count":14,"past_year_avg_time_to_close_issue":770797.1666666666,"past_year_avg_time_to_close_pull_request":164.0,"past_year_issues_closed_count":6,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":14,"past_year_issue_authors_count":49,"past_year_avg_comments_per_issue":0.8846153846153846,"past_year_avg_comments_per_pull_request":0.14285714285714285,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/issues","maintainers":[{"login":"asweigart","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/asweigart"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/pyautogui/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/pyautogui/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/pyautogui/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages/pyautogui/related_packages","maintainers":[],"registry":{"name":"conda-forge.org","url":"https://conda-forge.org","ecosystem":"conda","default":false,"packages_count":20636,"maintainers_count":0,"namespaces_count":0,"keywords_count":13414,"github":"conda-forge","metadata":{"kind":"conda-forge","key":"CondaForge","api":"https://conda.anaconda.org","funded_packages_count":2190},"icon_url":"https://github.com/conda-forge.png","created_at":"2022-10-03T15:37:08.743Z","updated_at":"2025-09-08T06:53:21.618Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/conda-forge.org/namespaces"}}],"commits":{"id":6871,"full_name":"asweigart/pyautogui","default_branch":"master","committers":[{"name":"Al Sweigart","email":"asweigart@gmail.com","login":"asweigart","count":220},{"name":"Denilson Sá","email":"denilsonsa@gmail.com","login":"denilsonsa","count":16},{"name":"Junjie Tao","email":"tjunj@126.com","login":null,"count":7},{"name":"Hugo Salvador","email":"hugoesb@gmail.com","login":"hugoesb","count":6},{"name":"jose1711","email":"jose1711@gmail.com","login":"jose1711","count":4},{"name":"HesselM","email":"hmolen.science@gmail.com","login":"HesselM","count":4},{"name":"Jeromie Kirchoff","email":"jahomie04@gmail.com","login":"JayRizzo","count":4},{"name":"karimk123","email":"64856262+karimk123","login":"karimk123","count":3},{"name":"Scott Noyes","email":"snoyes@gmail.com","login":"snoyes","count":3},{"name":"Andy Dam","email":"andy@andydam.com","login":"andydam","count":3},{"name":"Daniel D. Beck","email":"me@danieldbeck.com","login":null,"count":2},{"name":"Stefan Hoelzl","email":"stefan.hoelzl@posteo.de","login":null,"count":2},{"name":"Fornost461","email":"Fornost461","login":"Fornost461","count":2},{"name":"Kudria","email":"kudria15@gmail.com","login":"Kudria","count":2},{"name":"Martin Michlmayr","email":"tbm@cyrius.com","login":"tbm","count":2},{"name":"Abhijeet Singh","email":"contact.abhijeetsingh@gmail.com","login":"cseas","count":2},{"name":"Alghost","email":"alghost@moreum.co.kr","login":null,"count":1},{"name":"RMPR","email":"akoudanilo@gmail.com","login":null,"count":1},{"name":"Nik Schewtschuk","email":"nikonlinee@gmail.com","login":null,"count":1},{"name":"Anwar A. Ruff","email":"anwarruff@gmail.com","login":"aaruff","count":1},{"name":"Ashok Fernandez","email":"ashok.fernandez@gmail.com","login":"ashokfernandez","count":1},{"name":"Davee Nguyen","email":"davee@daveenguyen.com","login":"daveenguyen","count":1},{"name":"Dominik Schmelz","email":"dominik@schmelz.cc","login":"DIDoS","count":1},{"name":"ErtugrulSener","email":"ertugrulsener@hotmail.de","login":"ErtugrulSener","count":1},{"name":"Harish Chandran","email":"harishchandran3304@gmail.com","login":"HarishChandran3304","count":1},{"name":"Jeremy R. Gray","email":"jrgray@gmail.com","login":"jeremygray","count":1},{"name":"nexcvon","email":"nexcvon","login":"nexcvon","count":1},{"name":"mvbentes","email":"github@bcouto.com","login":"mvbentes","count":1},{"name":"liberme","email":"liberme","login":"liberme","count":1},{"name":"johnborgmann","email":"82052912+johnborgmann","login":"johnborgmann","count":1},{"name":"jakibaki","email":"jakibaki","login":"jakibaki","count":1},{"name":"i-need-to-tell-you-something","email":"i-need-to-tell-you-something","login":"i-need-to-tell-you-something","count":1},{"name":"hey-sancho","email":"alex.orlov7@gmail.com","login":"orlovol","count":1},{"name":"clach04","email":"Chris.Clark@actian.com","login":"clach04","count":1},{"name":"anolir","email":"32664082+anolir","login":"anolir","count":1},{"name":"Zander Koren Møysal","email":"Zander.koren@gmail.com","login":"Zandertaiko","count":1},{"name":"Vélmer Oliveira","email":"oliveira.velmer@gmail.com","login":"velmer","count":1},{"name":"Timothy Crory","email":"tcrory@gmail.com","login":"tcrory","count":1},{"name":"Tim Gates","email":"tim.gates@iress.com","login":"timgates42","count":1},{"name":"Taehee Jeong","email":"wwee3631@gmail.com","login":"teijeong","count":1},{"name":"Suvansh Kumar","email":"suvansh.kumar07@gmail.com","login":"SuvanshKumar","count":1},{"name":"Robin Richtsfeld","email":"robin.richtsfeld@gmail.com","login":"Androbin","count":1},{"name":"Ricardo Amendoeira","email":"ricardo.amendoeira@ist.utl.pt","login":"ric2b","count":1},{"name":"Matt Olsen","email":"matt@digital-wanderlust.com","login":"digwanderlust","count":1},{"name":"Marek Madejski","email":"marekmadejski@yandex.com","login":"TrangOul","count":1},{"name":"Lesmana Zimmer","email":"lesmana@gmx.de","login":"lesmana","count":1},{"name":"Korons","email":"Korons","login":"Korons","count":1},{"name":"Julien Schueller","email":"schueller@phimeca.com","login":"jschueller","count":1},{"name":"pgkos","email":"pg.kosinski@gmail.com","login":"pgkos","count":1},{"name":"sneakypete81","email":"sneakypete81@gmail.com","login":"sneakypete81","count":1},{"name":"undefx","email":"dfarrow0@gmail.com","login":"undefx","count":1},{"name":"Josh McDuffie","email":"jomcd92@gmail.com","login":"jmcduffie","count":1}],"total_commits":318,"total_committers":52,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":6.115384615384615,"dds":0.30817610062893086,"past_year_committers":[],"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2025-05-28T09:40:33.889Z","last_synced_commit":"b4255d0be42c377154c7d92337d7f8515fc63234","created_at":"2023-03-07T09:43:58.503Z","updated_at":"2025-05-28T09:40:33.924Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-07T00:00:09.744Z","repositories_count":5480019,"commits_count":853389126,"contributors_count":31098155,"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":"asweigart/pyautogui","html_url":"https://github.com/asweigart/pyautogui","last_synced_at":"2025-08-31T08:24:30.750Z","status":null,"issues_count":255,"pull_requests_count":53,"avg_time_to_close_issue":20109999.613636363,"avg_time_to_close_pull_request":51824493.5,"issues_closed_count":44,"pull_requests_closed_count":12,"pull_request_authors_count":46,"issue_authors_count":238,"avg_comments_per_issue":3.1176470588235294,"avg_comments_per_pull_request":0.7924528301886793,"merged_pull_requests_count":1,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":39,"past_year_pull_requests_count":17,"past_year_avg_time_to_close_issue":687162.4285714285,"past_year_avg_time_to_close_pull_request":164.0,"past_year_issues_closed_count":7,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":12,"past_year_issue_authors_count":37,"past_year_avg_comments_per_issue":0.4358974358974359,"past_year_avg_comments_per_pull_request":0.11764705882352941,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-10T21:01:55.878Z","updated_at":"2025-09-03T06:04:44.509Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/asweigart%2Fpyautogui/issues","issue_labels_count":{"enhancement":1,"help wanted":1},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":242,"OWNER":9,"CONTRIBUTOR":2},"pull_request_author_associations_count":{"NONE":65,"CONTRIBUTOR":1},"issue_authors":{"asweigart":9,"me-suzy":2,"DevYuriOliveira73":2,"ORB-Aerospace911":2,"executionByFork":2,"Wintecks":2,"wiktorlaskowski":2,"samshum":2,"Avasam":2,"DataMower":2,"killerwhite":2,"wangmings":1,"kotmotok":1,"erikji":1,"CodeBuzz-ML":1,"sipeneco":1,"Luis-Felipe-Franca":1,"tontoroRR":1,"danni551":1,"HerbCSO":1,"LeanderKafemann":1,"kivipe":1,"JohnTravolski":1,"ppLorins":1,"aditya11ad":1,"EvelynGao233":1,"varashellov":1,"PeaceAndJoyAaron":1,"CocaNoIce":1,"curkychen":1,"phani-vadrevu":1,"drawkend":1,"Dif05":1,"1337kingOf":1,"orbitalorb":1,"neXussT":1,"frozen6169":1,"xiewenjing1170":1,"SteveOnorato":1,"renegadeandy":1,"pLazyN":1,"dvd101x":1,"jaeger-2601":1,"mayurpande":1,"realmaitreal":1,"smilux":1,"HeisenBug1":1,"KavyanshKhaitan2":1,"qzcool":1,"andrewjurczynski":1,"AvdN":1,"g-abilio":1,"hsweet":1,"GitHOb1":1,"Yingli1981":1,"Truerui":1,"siliconbeaver":1,"wkoszek":1,"nnsza":1,"gsnunes47":1,"josephernest":1,"yuta86":1,"aj22r":1,"PaulBobyrev":1,"dreamMore10":1,"amirabbasja":1,"jtristano":1,"GeorgeWashingtonABCDEFG":1,"MondQ":1,"lucassfernando":1,"herbzhao":1,"safaka123":1,"onlytrap":1,"domluther":1,"sQur1":1,"renambrandao":1,"rameshho":1,"Jarno-de-Wit":1,"afpg89":1,"davins90":1,"heyouwei2021":1,"divinity76":1,"branaway":1,"AWPelican":1,"JackLawrenceCRISPR":1,"quadcube":1,"nocring":1,"syrull":1,"douglasdcm":1,"qqwqqw689":1,"conor-b777":1,"scheung38":1,"UKMIITB":1,"nandish017":1,"khelmy55":1,"Fandzel":1,"ayushmankumar7":1,"HesselM":1,"SmituSSupp":1,"KillsT3aler69":1,"luojxxx":1,"mi1wei":1,"aby03":1,"ifuchs":1,"thenewguy":1,"Carreau":1,"JC-WebInfo":1,"Maxim-Ryzhenkov":1,"Erriez":1,"liaochris":1,"tddschn":1,"saga111a":1,"BlueSchnabeltier":1,"BenRoe":1,"aprknight":1,"jacopman":1,"hugoesb":1,"Giannisdotexe":1,"Breadleaf":1,"giantchen2012":1,"IdonotknowitTAT":1,"PiggyCh":1,"middleclicker":1,"nerdielol":1,"tdbe":1,"DataRxdacted":1,"code-lucidal58":1,"zhenya-kozhevnikov":1,"lionwong":1,"m1zar":1,"dissminghwm":1,"kai-draft":1,"MaxGorr":1,"maddox05":1,"glenn-barker":1,"javaisgarbage":1,"spacewaterbear":1,"Alpha-Rome0":1,"sungineering":1,"a-tunc":1,"riz-hossain":1,"Mafuyu":1,"james10424":1,"eight04":1,"phirestalker":1,"galennare":1,"sudoexec":1,"ConfusedDinosaur":1,"chunyang-wen":1,"javad-jafari":1,"lucif67":1,"logicfeng":1,"ACG-Q":1,"szetakyu":1,"4NK4":1,"bwomsm1":1,"towfikul-islam":1,"moroclash":1,"glyee":1,"sokomin":1,"phenixsims":1,"laBocchiPRo":1,"harmin-parra":1,"Fxztam":1,"jack-ylt":1,"11522514":1,"Anonymous941":1,"forsthetwo":1,"VictorGimenez":1,"jingcodeguy":1,"slientslient":1,"SamStephens":1,"adriangabura":1,"vldsavitPotato":1,"Jancs-E":1,"GadgetSteve":1,"dane-git":1,"user202729":1,"shantanuojha":1,"auravan":1,"blackmummya":1,"odidev":1,"aaguirre8":1,"RedHeadphone":1,"crackwitz":1,"LuizSeabraDeMarco":1,"pichumeta":1,"NanoPenguin":1,"joselopezbinoovo":1,"JurjenBos":1,"willyan2002":1,"bbd666":1,"rrrrrrrero":1,"JunkyardCat":1,"zero-fun":1,"tct123":1,"Jeomon":1,"ghost":1,"r2dev2":1,"Swarkin":1,"k4j8":1,"BrendanArthurRing":1,"dufferzafar":1,"alanwsmith":1,"LittleFrog1959":1,"AasheeshLikePanner":1,"Humburto":1,"TaokyleYT":1,"disconsis":1,"sunghak93":1,"woodholly":1,"reo6":1,"markododa":1,"amitojkapoor":1,"vovakolinko":1,"damies13":1,"Kn-2022":1,"jiananlan":1,"wminner":1,"KnowScratcher":1,"Mascantosh":1,"ashishb":1,"fdgStilla":1,"Tech4Ever":1,"Sqidy-P":1,"bishakh17":1,"WeemaUnseen":1,"strocchia":1,"ThundySGI":1,"Arminius4":1,"ssheshax":1,"Adrigorithm":1,"chaityacshah":1,"wyyw5701207":1,"turbolay":1},"pull_request_authors":{"Avasam":3,"Jarno-de-Wit":2,"Sandesh-AT-GitHub":2,"djalan":2,"fredfurst":2,"LAbhilashKumar":2,"yahya-ali28":2,"Mascantosh":2,"ivanmilevtues":2,"stribus":2,"calvindo95":2,"roshanjain77":2,"davide710":2,"Desyncfy":2,"spacewaterbear":2,"Zealen408":2,"divinity76":2,"ierho":2,"frederik-uni":2,"gtmsingh":2,"JohnFotouhi":1,"Zandertaiko":1,"ninnghazad":1,"Kajatin":1,"ggmaddr":1,"itsmenickfromschool":1,"keithfma":1,"ericghara":1,"jimmyloi":1,"flosincapite":1,"Cadavanaugh":1,"AvdN":1,"bollwyvl":1,"jtranquilli":1,"Frixoe":1,"cbenhagen":1,"EsJoseVi":1,"harsha-bharadwaj100":1,"Benjamin-Loison":1,"aniketkr01":1,"ValdemarBirkegaardPetersen":1,"GadgetSteve":1,"mdtausifiqbal":1,"chriswells0":1,"saifeiLee":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-08T00:00:17.013Z","repositories_count":10155726,"issues_count":32091898,"pull_requests_count":100138148,"authors_count":10724430,"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":{"NONE":38},"past_year_pull_request_author_associations_count":{"NONE":23},"past_year_issue_authors":{"Wintecks":2,"wiktorlaskowski":2,"LuizSeabraDeMarco":1,"Mascantosh":1,"me-suzy":1,"mi1wei":1,"nnsza":1,"phenixsims":1,"realmaitreal":1,"renambrandao":1,"SamStephens":1,"scheung38":1,"spacewaterbear":1,"sungineering":1,"tct123":1,"tdbe":1,"Truerui":1,"woodholly":1,"11522514":1,"amirabbasja":1,"Arminius4":1,"a-tunc":1,"auravan":1,"bbd666":1,"conor-b777":1,"crackwitz":1,"douglasdcm":1,"g-abilio":1,"IdonotknowitTAT":1,"Jeomon":1,"jtristano":1,"JurjenBos":1,"kai-draft":1,"KavyanshKhaitan2":1,"khelmy55":1,"killerwhite":1},"past_year_pull_request_authors":{"Desyncfy":2,"stribus":2,"gtmsingh":2,"frederik-uni":2,"spacewaterbear":2,"Avasam":2,"LAbhilashKumar":2,"ivanmilevtues":2,"Mascantosh":2,"djalan":2,"Sandesh-AT-GitHub":2,"jimmyloi":1},"maintainers":[{"login":"asweigart","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/asweigart"}],"active_maintainers":[]},"events":null,"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"Pipfile","sha":null,"kind":"manifest","created_at":"2022-07-12T13:34:54.074Z","updated_at":"2022-07-12T13:34:54.074Z","repository_link":"https://github.com/asweigart/pyautogui/blob/master/Pipfile","dependencies":[{"id":157981516,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":157981517,"package_name":"pyautogui","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":157981518,"package_name":"pillow","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-07-12T13:34:54.145Z","updated_at":"2022-07-12T13:34:54.145Z","repository_link":"https://github.com/asweigart/pyautogui/blob/master/setup.py","dependencies":[{"id":157981634,"package_name":"pyobjc-core","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":157981635,"package_name":"pyobjc","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":157981636,"package_name":"python3-Xlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":157981637,"package_name":"python-xlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":157981638,"package_name":"pymsgbox","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":157981639,"package_name":"pytweening","ecosystem":"pypi","requirements":"\u003e=1.0.4","direct":true,"kind":"runtime","optional":false},{"id":157981640,"package_name":"pyscreeze","ecosystem":"pypi","requirements":"\u003e=0.1.21","direct":true,"kind":"runtime","optional":false},{"id":157981641,"package_name":"pygetwindow","ecosystem":"pypi","requirements":"\u003e=0.0.5","direct":true,"kind":"runtime","optional":false},{"id":157981642,"package_name":"mouseinfo","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":27.823107276022448,"created_at":"2025-09-08T11:18:37.147Z","updated_at":"2025-10-07T08:24:55.654Z","avatar_url":"https://github.com/asweigart.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":1472787,"funding_links":["https://www.patreon.com/AlSweigart"],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["closember","datetime","jinja","pallets","kivy","wsgi","werkzeug"],"project_url":"https://science.ecosyste.ms/api/v1/projects/65228","html_url":"https://science.ecosyste.ms/projects/65228"}