Skip to content

[POC] linting with ruff #550

Open
@adebardo

Description

@adebardo

Context

The goal of this ticket is to implement linting on the code. We have noticed that certain rules applied to demcompare are not applied in the test files of xDEM.

Examples of errors present in the test files:

  • tests/test_volume.py:252:11: W0125: Using a conditional statement with a constant value (using-constant-test)
  • tests/test_spatialstats.py:563:12: W0612: Unused variable 'ny' (unused-variable)
  • tests/test_spatialstats.py:509:0: C0115: Missing class docstring (missing-class-docstring)
  • tests/test_spatialstats.py:547:4: R0914: Too many local variables (27/15) (too-many-locals)
  • tests/test_vcrs.py:22:8: C0206: Consider iterating with .items() (consider-using-dict-items)

We cannot guarantee that the same code quality is applied to all the code.

Ruff

We propose using the Ruff linter to reduce the number of tools used in xdem.

  • Add the .ruff.toml file
# Exclude a variety of commonly ignored directories.  
exclude = [  
    ".bzr",  
    ".direnv",  
    ".eggs",  
    ".git",  
    ".git-rewrite",  
    ".hg",  
    ".ipynb_checkpoints",  
    ".mypy_cache",  
    ".nox",  
    ".pants.d",  
    ".pyenv",  
    ".pytest_cache",  
    ".pytype",  
    ".ruff_cache",  
    ".svn",  
    ".tox",  
    ".venv",  
    ".vscode",  
    "__pypackages__",  
    "_build",  
    "buck-out",  
    "build",  
    "dist",  
    "node_modules",  
    "site-packages",  
    "venv",  
]  
  
# Same as Black.  
line-length = 120  
indent-width = 4  
  
# Assume Python 3.8  
target-version = "py38"  
  
[lint]  
# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`)  codes by default.  
# Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or  
# McCabe complexity (`C901`) by default.  
select = ["ALL"]  
ignore = []  
  
# Allow fix for all enabled rules (when `--fix`) is provided.  
fixable = ["ALL"]  
unfixable = []  
  
# Allow unused variables when underscore-prefixed.  
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"  
  
[format]  
# Like Black, use double quotes for strings.  
quote-style = "double"  
  
# Like Black, indent with spaces, rather than tabs.  
indent-style = "space"  
  
# Like Black, respect magic trailing commas.  
skip-magic-trailing-comma = false  
  
# Like Black, automatically detect the appropriate line ending.  
line-ending = "auto"  
  
# Enable auto-formatting of code examples in docstrings. Markdown,  
# reStructuredText code/literal blocks and doctests are all supported.  
#  
# This is currently disabled by default, but it is planned for this  
# to be opt-out in the future.  
docstring-code-format = false  
  
# Set the line length limit used when formatting code snippets in  
# docstrings.  
#  
# This only has an effect when the `docstring-code-format` setting is  
# enabled.  
docstring-code-line-length = "dynamic"
  • add ruff in makefile
lint: ruff check $(SRC_DIRS)
  • add ruf in CI
name: Run 
	Ruff run: | 
		ruff check .
  • add ruff in setup.cfg

Correction

  • Ruff return lots of problem that needed to be fixed

Estimate

3d

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions