Skip to content
Snippets Groups Projects
pyproject.toml 3.04 KiB
Newer Older
  • Learn to ignore specific revisions
  • Andreas Klöckner's avatar
    Andreas Klöckner committed
    requires = ["hatchling"]
    build-backend = "hatchling.build"
    
    
    [project]
    name = "grudge"
    
    version = "2024.0"
    
    description = "Discretize discontinuous Galerkin operators quickly on heterogeneous hardware"
    readme = "README.rst"
    license = { text = "MIT" }
    authors = [
        { name = "Andreas Kloeckner", email = "inform@tiker.net" },
    ]
    
    requires-python = ">=3.10"
    
    classifiers = [
        "Development Status :: 3 - Alpha",
        "Intended Audience :: Developers",
        "Intended Audience :: Other Audience",
        "Intended Audience :: Science/Research",
        "License :: OSI Approved :: MIT License",
        "Natural Language :: English",
        "Programming Language :: Python",
        "Programming Language :: Python :: 3",
        "Topic :: Scientific/Engineering",
        "Topic :: Scientific/Engineering :: Information Analysis",
        "Topic :: Scientific/Engineering :: Mathematics",
        "Topic :: Scientific/Engineering :: Visualization",
        "Topic :: Software Development :: Libraries",
        "Topic :: Utilities",
    ]
    dependencies = [
    
        "arraycontext>=2021.1",
    
    Matthias Diener's avatar
    Matthias Diener committed
        "constantdict",
    
        "loopy>=2024.1",
        "meshmode>=2021.2",
        "modepy>=2021.1",
        "pymbolic>=2022.2",
        "pyopencl>=2022.1",
    
        "pytools>=2024.1.18",
    
    ]
    
    [project.optional-dependencies]
    all = [
        "dagrt>=2021.1",
        "leap>=2021.1",
        "meshpy>=2022.1",
        "mpi4py",
        "pymetis>=2023.1",
        "pytato>=2021.1",
        "pyvisfile>=2022.1",
    ]
    doc = [
        "furo",
        "sphinx-copybutton",
        "sphinx>=4",
    ]
    test = [
        "mypy",
        "pytest",
        "ruff"
    ]
    
    [project.urls]
    Documentation = "https://documen.tician.de/grudge"
    Homepage = "https://github.com/inducer/grudge"
    
    [tool.pytest.ini_options]
    markers = [
        "mpi: mark a test using MPI",
    ]
    
    
    [tool.ruff]
    preview = true
    
    [tool.ruff.lint]
    extend-select = [
        "B",   # flake8-bugbear
        "C",   # flake8-comprehensions
        "E",   # pycodestyle
        "F",   # pyflakes
    
        "G",   # flake8-logging-format
    
        "I",   # flake8-isort
        "N",   # pep8-naming
        "NPY", # numpy
        "Q",   # flake8-quotes
    
        "RUF", # ruff
        "UP",  # pyupgrade
    
        "W",   # pycodestyle
    ]
    extend-ignore = [
        "C90",  # McCabe complexity
        "E221", # multiple spaces before operator
        "E226", # missing whitespace around arithmetic operator
        "E241", # multiple spaces after comma
        "E242", # tab after comma
        "E402", # module level import not at the top of file
    ]
    
    [tool.ruff.lint.flake8-quotes]
    docstring-quotes = "double"
    inline-quotes = "double"
    multiline-quotes = "double"
    
    [tool.ruff.lint.isort]
    combine-as-imports = true
    known-first-party = [
        "pytools",
        "pymbolic",
        "meshmode",
        "modepy",
        "pyopencl",
        "loopy",
        "arraycontext",
    ]
    known-local-folder = [
        "grudge",
    ]
    lines-after-imports = 2
    
    [tool.mypy]
    
    python_version = "3.10"
    
    ignore_missing_imports = true
    
    warn_unused_ignores = true
    
    # TODO: enable this at some point
    # check_untyped_defs = true
    
    
    
    [tool.typos.default]
    extend-ignore-re = [
      "(?Rm)^.*(#|//)\\s*spellchecker:\\s*disable-line$"
    ]
    
    [tool.typos.default.extend-words]
    # like n-dimensional
    nd = "nd"
    
    # like 'theorem'
    thm = "thm"
    
    [tool.typos.files]
    extend-exclude = [
    ]