Linting and Type Checking ========================= We use `ruff `_ for linting our codebase and `mypy `_ for type checking. Autoformatter ------------- Formatting and running our linter is bundled in the ``make autoformat`` command. It is recommended to enable a file watcher in your IDE to automatically run this command on change. PyCharm ~~~~~~~ In Pycharm, this is possible via the `File Watchers` plugin, using the following configuration. Depending on your :doc:`Development_Environment` there are different ways to invoke ``make``: - run ``make`` on your host machine (needs ``ruff`` available in the python path): - program ``make`` - arguments ``autoformat`` - run ``make`` in the docker container: - command: ``docker`` - arguments ``compose --file related/docker/docker-compose.yaml exec -u cdedb app make autoformat`` For all dev setups the same, set the following options: - output paths to refresh: ``$FilePath$`` (This is important because it makes PyCharm apply the changes only to the current file.) - working directory: ``$ProjectFileDir$``