{"id":13411964,"url":"https://github.com/pep8speaks-org/pep8speaks","last_synced_at":"2025-03-14T17:31:21.060Z","repository":{"id":15015677,"uuid":"77438315","full_name":"pep8speaks-org/pep8speaks","owner":"pep8speaks-org","description":"A GitHub :octocat: app to automatically review Python code style over Pull Requests","archived":false,"fork":false,"pushed_at":"2024-10-29T00:52:10.000Z","size":4902,"stargazers_count":608,"open_issues_count":35,"forks_count":87,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-10-29T21:14:19.616Z","etag":null,"topics":["bot","code-quality","code-style","flake8","github-app","github-webhooks","hacktoberfest","linter","pep8","pycodestyle","python","python-style","review","static-analysis","static-code-analysis","styleguide"],"latest_commit_sha":null,"homepage":"https://pep8speaks.org","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/pep8speaks-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-27T08:16:46.000Z","updated_at":"2024-10-29T00:52:14.000Z","dependencies_parsed_at":"2024-01-18T15:12:16.669Z","dependency_job_id":"8c9ff328-9d3a-4d85-8f46-0bd133c07648","html_url":"https://github.com/pep8speaks-org/pep8speaks","commit_stats":{"total_commits":2324,"total_committers":27,"mean_commits":86.07407407407408,"dds":0.1630808950086059,"last_synced_commit":"e5e6a88a6c878e682adef01b4c915fbf68657051"},"previous_names":["pep8speaks-org/pep8speaks","orkohunter/pep8speaks"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pep8speaks-org%2Fpep8speaks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pep8speaks-org%2Fpep8speaks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pep8speaks-org%2Fpep8speaks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pep8speaks-org%2Fpep8speaks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pep8speaks-org","download_url":"https://codeload.github.com/pep8speaks-org/pep8speaks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243532556,"owners_count":20306157,"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"}},"keywords":["bot","code-quality","code-style","flake8","github-app","github-webhooks","hacktoberfest","linter","pep8","pycodestyle","python","python-style","review","static-analysis","static-code-analysis","styleguide"],"created_at":"2024-07-30T20:01:19.372Z","updated_at":"2025-03-14T17:31:21.020Z","avatar_url":"https://github.com/pep8speaks-org.png","language":"Python","funding_links":["https://liberapay.com/OrkoHunter","https://www.paypal.me/orkohunter"],"categories":["Python"],"sub_categories":[],"readme":"# PEP 8 Speaks\n\n![GitHub release](https://img.shields.io/github/release/OrkoHunter/pep8speaks.svg) ![GitHub contributors](https://img.shields.io/github/contributors/OrkoHunter/pep8speaks.svg) \u003ca href=\"https://kuma.fosscu.org/status/pep8speaks\" target=\"_blank\"\u003e\u003cimg src=\"https://badgen.net/badge/status/pep8speaksbot/green?icon=lgtm\" alt=\"\"\u003e\u003c/a\u003e\n\nA GitHub :octocat: app to automatically review Python code style over Pull Requests\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\".github/logo.png\"\u003e\n\u003c/p\u003e\n\n# Table of Contents\n\n- [Installation](#installation)\n- [Example](#example)\n- [Main features](#main-features)\n- [Configuration](#configuration)\n- [Popular Users](#popular-users)\n- [Miscellaneous features](#miscellaneous-features)\n- [Private repos](#private-repos)\n- [How to fix PEP 8 issues?](#how-to-fix-pep-8-issues)\n- [Release announcements](#release-announcements)\n- [Contributing](#contributing)\n- [Updates](#updates)\n\n# Installation\n\n- Go to the homepage of the app - https://github.com/apps/pep8-speaks\n- Click on the Configure button\n- Add repositories or organizations to activate PEP 8 Speaks\n\n# Example\n\n\u003cimg src=\".github/action.gif\"\u003e\n\n# Main features\n\n- The bot makes **a single comment on the Pull Request and keeps updating it** on new commits. No hustle on emails !\n- The bot **comments only if Python files are involved**. So, install the integration on all of your repositories. The bot would not comment where it should not.\n- By default, the bot does not comment if there are no PEP 8 issues. You can change this in configuration.\n- **You can use choose between `pycodestyle` or `flake8` as your linter.** The bot can read configurations for both.\n- The bot can read your `setup.cfg` for `[flake8]` and `[pycodestyle]` sections. Check out the `Configuration` section below.\n\n# Configuration\n\n**A config file is not required for the integration to work**. However it can be configured additionally by adding a `.pep8speaks.yml` file in the root of the project. Here is an example :\n\n```yaml\n# File : .pep8speaks.yml\n\nscanner:\n  diff_only: True # If False, the entire file touched by the Pull Request is scanned for errors. If True, only the diff is scanned.\n  linter: pycodestyle # Other option is flake8\n\npycodestyle: # Same as scanner.linter value. Other option is flake8\n  max-line-length: 100 # Default is 79 in PEP 8\n  ignore: # Errors and warnings to ignore\n    - W504 # line break after binary operator\n    - E402 # module level import not at top of file\n    - E731 # do not assign a lambda expression, use a def\n    - C406 # Unnecessary list literal - rewrite as a dict literal.\n    - E741 # ambiguous variable name\n\nno_blank_comment: True # If True, no comment is made on PR without any errors.\ndescending_issues_order: False # If True, PEP 8 issues in message will be displayed in descending order of line numbers in the file\n\nmessage: # Customize the comment made by the bot\n  opened: # Messages when a new PR is submitted\n    header:\n      \"Hello @{name}! Thanks for opening this PR. \"\n      # The keyword {name} is converted into the author's username\n    footer:\n      \"Do see the [Hitchhiker's guide to code style](https://goo.gl/hqbW4r)\"\n      # The messages can be written as they would over GitHub\n  updated: # Messages when new commits are added to the PR\n    header: \"Hello @{name}! Thanks for updating this PR. \"\n    footer: \"\" # Why to comment the link to the style guide everytime? :)\n  no_errors: \"There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: \"\n```\n\n**Notes:**\n\n- Default settings are in [data/default_pep8speaks.yml](/data/default_pep8speaks.yml). Your `.pep8speaks.yml` will override these values.\n- For every Pull Request, the bot looks for `.pep8speaks.yml` in the `base` branch (the existing one). If the file is not found, it then searches the `head` branch (the incoming changes).\n- Set the value of `scanner.linter` to either `pycodestyle` or `flake8`\n  - flake8 is a wrapper around pycodestyle with additional enforcements.\n- For linter configurations (like `ignore` or `max-line-length`), PEP8Speaks will look and prioritize configurations in the following order :\n  - `pycodestyle:` or `flake8:` section of `.pep8speaks.yml`.\n    - This depends upon the `scanner.linter` value.\n  - `[pycodestyle]` or `[flake8]` section of `setup.cfg` file in the root of the project.\n    - This is independent of `scanner.linter`. So, `[flake8]` section of `setup.cfg` will also work for pycodestyle.\n- Read more on [pycodestyle](http://pycodestyle.pycqa.org/en/latest/) and [flake8](http://flake8.pycqa.org/en/latest/) documentation.\n\n# Popular Users\n\n|                                                                                                                                     | Organization                                                               | Description                                                  |\n| ----------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------ |\n| \u003cimg src=\"https://avatars1.githubusercontent.com/u/21206976?v=4\u0026s=200\" height=\"100px\"\u003e                                              | [Pandas](https://github.com/pandas-dev/pandas)                             | Powerful data manipulation tools for Python                  |\n| \u003cimg src=\"https://avatars0.githubusercontent.com/u/476009?v=4\u0026s=200\" height=\"100px\"\u003e                                                | [Adobe](https://github.com/adobe)                                          | Open source from Adobe                                       |\n| \u003cimg src=\"https://avatars0.githubusercontent.com/u/623819?v=4\u0026s=200\" height=\"100px\"\u003e                                                | [openSUSE](https://github.com/openSUSE)                                    | Linux distribution                                           |\n| \u003cimg src=\"https://avatars0.githubusercontent.com/u/58386951?v=4\u0026s=200\" height=\"100px\"\u003e                                              | [PyTorch Lightning](https://github.com/PyTorchLightning/pytorch-lightning) | The lightweight PyTorch wrapper for ML researchers.          |\n| \u003cimg src=\"https://avatars0.githubusercontent.com/u/388785?v=4\u0026s=200\" height=\"100px\"\u003e                                                | [NetworkX](https://github.com/NetworkX/NetworkX)                           | Python library for graph theory and complex networks         |\n| \u003cimg src=\"https://avatars0.githubusercontent.com/u/717666?v=4\u0026s=200\" height=\"100px\"\u003e                                                | [Statsmodels](https://github.com/statsmodels/statsmodels)                  | Statistical modeling and econometrics in Python              |\n| \u003cimg src=\"https://avatars3.githubusercontent.com/u/1284191?v=4\u0026s=200\" height=\"100px\"\u003e                                               | [xarray (PyData)](https://github.com/pydata/xarray)                        | N-D labeled arrays and datasets in Python (Python for Data)  |\n| \u003cimg src=\"https://github.com/sunpy/sunpy-logo/blob/master/generated/sunpy_icon.png?raw=true\" height=\"100px\"\u003e                        | [SunPy](https://github.com/sunpy)                                          | Python for Solar Physics                                     |\n| \u003cimg src=\"https://avatars0.githubusercontent.com/u/847984?v=3\u0026s=200\" height=\"100px\"\u003e                                                | [Astropy](https://github.com/astropy)                                      | Astronomy in Python                                          |\n| \u003cimg src=\"https://avatars3.githubusercontent.com/u/17349883?v=3\u0026s=200\" height=\"100px\"\u003e                                              | [Scikit Learn Contrib](https://github.com/scikit-learn-contrib)            | scikit-learn compatible projects                             |\n| \u003cimg style=\"margin-right: 5%\" src=\"https://avatars3.githubusercontent.com/u/897180?v=3\u0026s=400\" height=\"100px\"\u003e                       | [Scikit Image](https://github.com/scikit-image)                            | Image processing in Python                                   |\n| \u003cimg style=\"margin-right: 5%\" src=\"https://avatars0.githubusercontent.com/u/1284937?v=4\u0026s=200\" height=\"100px\"\u003e                      | [Spyder IDE](https://github.com/spyder-ide/spyder)                         | The Scientific Python Development Environment                |\n| \u003cimg src=\"https://github.com/catalyst-team/catalyst-pics/blob/master/pics/catalyst-icon-transparent-2.png?raw=true\" height=\"100px\"\u003e | [Catalyst](https://github.com/catalyst-team/catalyst)                      | PyTorch framework for Deep Learning research and development |\n\nSee the [complete list of organizations and users](https://github.com/OrkoHunter/pep8speaks/wiki/List-of-users-and-orgs).\n\n# Miscellaneous features\n\n- Comment `@pep8speaks suggest diff` in a comment of the PR, and it will comment a gist of diff suggesting fixes for the PR. [Example](https://github.com/OrkoHunter/test-pep8speaks/pull/22#issuecomment-270826241)\n- Comment `@pep8speaks pep8ify` on the PR and it will create a Pull Request with changes suggested by [`autopep8`](https://github.com/hhatto/autopep8) against the branch of the author of the PR. `autopep8` fixes most of the errors reported by [`pycodestyle`](https://github.com/PyCQA/pycodestyle).\n- Add `[skip pep8]` anywhere in the commit message, PR title or PR description to prohibit pep8speaks from commenting on the Pull Request.\n\n# Private repos\n\nThis app will only work for publicly hosted repositories. So if you are looking to deploy a fork or **use the app for private repositories**, [here are the instructions](https://github.com/OrkoHunter/pep8speaks/wiki/Instructions-to-deploy-a-fork).\n\n# How to fix PEP 8 issues?\n\n- Check the errors locally by the command line tool [pycodestyle](https://github.com/PyCQA/pycodestyle) (previously known as `pep8`).\n- [autopep8](https://github.com/hhatto/autopep8) is another command line tool to fix the issues.\n- Also, see [black](https://github.com/ambv/black)\n\n# Release announcements\n\nUpdates to the app are announced using the GitHub Release feature over [here](https://github.com/OrkoHunter/pep8speaks/releases). A lot of major changes are made as the community grows bigger. Click on `Watch` -\u003e `Releases only` on top of the page, to get notified about new configurations or feature updates.\n\nUsually, the master branch is deployed as soon as Pull Requests are merged in the repository. However, on every Friday, I make a release and make sure the latest code is deployed. You do not need to do anything to use the latest version. If you use a fork of PEP 8 Speaks, check out the Release space.\n\n\u003ch2 align=\"center\"\u003eSponsors\u003c/h2\u003e\n\n[Become a Gold Sponsor](https://github.com/OrkoHunter/pep8speaks/wiki/Funding#how-to-donate) and get your logo and name with a link to your site on our README and our [website](https://pep8speaks.org).\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\"\u003e\n        \u003ca href=\"https://www.samagragovernance.in/\"\u003e\n          \u003cimg src=\"https://www.samagragovernance.in/img/logo-colored.png\"\u003e\n          \u003cbr\u003e\u003cbr\u003e\n          \u003cp\u003eSamagra Governance\u003c/p\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\"\u003e\n        \u003ca href=\"https://github.com/Samagra-Development\"\u003e\n          \u003cimg src=\"https://user-images.githubusercontent.com/80503666/192479293-4202ed08-7085-4470-a222-ecf9beac52fd.jpg\"\u003e\n          \u003cbr\u003e\u003cbr\u003e\n          \u003cp\u003eSamagraX\u003c/p\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003ch2 align=\"center\"\u003ePrevious Sponsors\u003c/h2\u003e\n\n\u003ch4 align=\"center\"\u003eGold Sponsors\u003c/h2\u003e\n\n[Become a Gold Sponsor](https://github.com/OrkoHunter/pep8speaks/wiki/Funding#how-to-donate) and get your logo and name with a link to your site on our README and our [website](https://pep8speaks.org).\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\"\u003e\n        \u003ca href=\"https://www.python.org/psf/\"\u003e\n          \u003cimg width=\"100\" height=\"184\" src=\"https://wiki.python.org/psf/Logo?action=AttachFile\u0026do=get\u0026target=PSF-vertical-F.png\"\u003e\n          \u003cbr\u003e\u003cbr\u003e\n          \u003cp\u003ePython Software Foundation\u003c/p\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\"\u003e\n        \u003ca href=\"https://weblate.org/\"\u003e\n          \u003cimg width=\"184\" height=\"160\" src=\"https://raw.githubusercontent.com/WeblateOrg/graphics/master/logo-formats/Basic-Square.png\"\u003e\n          \u003cbr\u003e\u003cbr\u003e\n          \u003cp\u003eWeblate\u003c/p\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003ch2 align=\"center\"\u003eSilver Sponsors\u003c/h2\u003e\n\n[Become a Silver Sponsor](https://github.com/OrkoHunter/pep8speaks/wiki/Funding#how-to-donate) and get your logo and name with a link to your site on our README and our [website](https://pep8speaks.org).\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\"\u003e\n        \u003ca href=\"https://ccextractor.org\"\u003e\n          \u003cimg width=\"150\" height=\"150\" src=\"https://raw.githubusercontent.com/CCExtractor/ccextractor-org-media/master/static/ccx_logo_transparent_800x600.png\"\u003e\n          \u003cbr\u003e\u003cbr\u003e\n          \u003cp\u003eCCExtractor\u003c/p\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\"\u003e\n        \u003ca href=\"https://github.com/debugger22\"\u003e\n          \u003cimg width=\"150\" height=\"150\" src=\"https://avatars3.githubusercontent.com/u/2821646?s=400\u0026v=4\"\u003e\n          \u003cbr\u003e\u003cbr\u003e\n          \u003cp\u003eSudhanshu Mishra\u003c/p\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n# Contributing\n\nYou can support the project by contributing to its development. If you have any suggestions for new features or improvements, please [create an issue](https://github.com/OrkoHunter/pep8speaks/issues/new). Pull Requests are most welcome ! Read [CONTRIBUTING](/.github/CONTRIBUTING.md) doc to understand how the project works and how you can make changes.\n\nThe project requires to be hosted on a server and due to which, it needs financial support as well.\n\nPlease read the [case for funding PEP 8 Speaks](https://github.com/OrkoHunter/pep8speaks/wiki/Funding).\n\n[![Donate](https://img.shields.io/liberapay/receives/OrkoHunter.svg?logo=liberapay)](https://liberapay.com/OrkoHunter)\n[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.me/orkohunter)\n\nIf you use this project and you like it, [please let me know](https://saythanks.io/to/OrkoHunter). Thanks!\n\n:heart:\n\n\u003csub\u003e\u003csup\u003e\u003csub\u003eThis project does not endorse all of the rules of the original PEP 8 and thus believes in customizing pycodestyle.\n\n\u003csub\u003e\u003csup\u003e\u003csub\u003e[.](https://github.com/OrkoHunter/python-easter-eggs)\n\n# Updates\n\n- April 5, 2020 - [PEP8Speaks - Now helping 5,000 open source projects write neat and clean Python](https://orkohunter.net/blog/pep8speaks-5000-projects/)\n\n# Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=pep8speaks-org/pep8speaks\u0026type=Date)](https://star-history.com/#pep8speaks-org/pep8speaks\u0026Date)\n\n# Recent Activity\n\n\u003c!--START_SECTION:activity--\u003e\n\n1. 🗣 Commented on [#553](https://github.com/payu-org/payu/pull/553#issuecomment-2617224952) in [payu-org/payu](https://github.com/payu-org/payu)\n2. 🗣 Commented on [#2200](https://github.com/rpm-software-management/dnf/pull/2200#issuecomment-2617011647) in [rpm-software-management/dnf](https://github.com/rpm-software-management/dnf)\n3. 🗣 Commented on [#1132](https://github.com/scilus/scilpy/pull/1132#issuecomment-2616654081) in [scilus/scilpy](https://github.com/scilus/scilpy)\n4. 🗣 Commented on [#9493](https://github.com/statsmodels/statsmodels/pull/9493#issuecomment-2616645465) in [statsmodels/statsmodels](https://github.com/statsmodels/statsmodels)\n5. 🗣 Commented on [#1018](https://github.com/ToFuProject/tofu/pull/1018#issuecomment-2616523281) in [ToFuProject/tofu](https://github.com/ToFuProject/tofu)\n6. 🗣 Commented on [#3152](https://github.com/metabrainz/listenbrainz-server/pull/3152#issuecomment-2616347427) in [metabrainz/listenbrainz-server](https://github.com/metabrainz/listenbrainz-server)\n7. 🗣 Commented on [#8](https://github.com/This-is-XiaoDeng/nonebot-plugin-maimai-qrhelper/pull/8#issuecomment-2616092074) in [This-is-XiaoDeng/nonebot-plugin-maimai-qrhelper](https://github.com/This-is-XiaoDeng/nonebot-plugin-maimai-qrhelper)\n8. 🗣 Commented on [#10](https://github.com/ERPGulf/myinvois/pull/10#issuecomment-2615479217) in [ERPGulf/myinvois](https://github.com/ERPGulf/myinvois)\n9. 🗣 Commented on [#1](https://github.com/Code-Institute-Solutions/streamlit-lesson/pull/1#issuecomment-2615385069) in [Code-Institute-Solutions/streamlit-lesson](https://github.com/Code-Institute-Solutions/streamlit-lesson)\n10. 🗣 Commented on [#1077](https://github.com/avaframe/AvaFrame/pull/1077#issuecomment-2615376308) in [avaframe/AvaFrame](https://github.com/avaframe/AvaFrame)\n\u003c!--END_SECTION:activity--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpep8speaks-org%2Fpep8speaks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpep8speaks-org%2Fpep8speaks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpep8speaks-org%2Fpep8speaks/lists"}