- name: Install Python webservers
run: pip3 install falcon starlette asgi_lifespan
- - name: Install latest pylint
- run: pip3 install -U pylint
+ - name: Install latest flake8
+ run: pip3 install -U flake8
if: matrix.flavour == 'ubuntu-22'
- name: Python linting
- run: python3 -m pylint src
+ run: python3 -m flake8 src
working-directory: Nominatim
if: matrix.flavour == 'ubuntu-22'
* leave out space between a function name and bracket
but add one between control statement(if, while, etc.) and bracket
-The coding style is enforced with pylint. It can be tested with:
+The coding style is enforced with flake8. It can be tested with:
```
-pylint3 --extension-pkg-whitelist=osmium nominatim
+make lint
```
## Testing
unit tests (using pytest). It has the following additional requirements:
* [behave test framework](https://behave.readthedocs.io) >= 1.2.6
-* [Pylint](https://pylint.org/) (CI always runs the latest version from pip)
+* [flake8](https://flake8.pycqa.org/en/stable/) (CI always runs the latest version from pip)
* [mypy](http://mypy-lang.org/) (plus typing information for external libs)
* [Python Typing Extensions](https://github.com/python/typing_extensions) (for Python < 3.9)
* [pytest](https://pytest.org)
### Installing prerequisites on Ubuntu/Debian
The Python tools should always be run with the most recent version.
-In particular, pylint tends to have a lot of breaking changes between versions.
The easiest way, to handle these Python dependencies is to run your
development from within a virtual environment.
~/nominatim-dev-venv/bin/pip install\
psutil psycopg[binary] PyICU SQLAlchemy \
python-dotenv jinja2 pyYAML datrie behave \
- mkdocs mkdocstrings mkdocs-gen-files pytest pytest-asyncio pylint \
+ mkdocs mkdocstrings mkdocs-gen-files pytest pytest-asyncio flake8 \
types-jinja2 types-markupsafe types-psutil types-psycopg2 \
types-pygments types-pyyaml types-requests types-ujson \
types-urllib3 typing-extensions unicorn falcon starlette \