diff --git a/pyproject.toml b/pyproject.toml index 322b183..0a1593a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,167 @@ [build-system] -requires = ["setuptools>=58", "wheel"] +requires = ["setuptools>=62", "wheel"] build-backend = "setuptools.build_meta" + +[project] +name = "RBniCSx" +version = "0.0.dev1" +authors = [ + {name = "Francesco Ballarin (and contributors)", email = "francesco.ballarin@unicatt.it"}, +] +maintainers = [ + {name = "Francesco Ballarin", email = "francesco.ballarin@unicatt.it"}, +] +description = "Reduced order modelling in FEniCSx" +license = {file = "COPYING"} +requires-python = ">=3.7" +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", + "Operating System :: POSIX", + "Operating System :: POSIX :: Linux", + "Operating System :: MacOS :: MacOS X", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Scientific/Engineering :: Mathematics", + "Topic :: Software Development :: Libraries :: Python Modules" +] +dependencies = [ + "fenics-dolfinx", + "mpi4py", + "numpy >= 1.21.0", + "petsc4py", + "plum-dispatch", + "slepc4py" +] + +[project.urls] +homepage = "https://www.rbnicsproject.org" +repository = "https://github.com/RBniCS/RBniCSx" +issues = "https://github.com/RBniCS/RBniCSx/issues" +funding = "https://github.com/sponsors/francesco-ballarin" + +[project.optional-dependencies] +backends = [ + "fenics-dolfinx >=0.8.0.dev0, <0.9.0" + "multiphenicsx @ git+https://github.com/multiphenics/multiphenicsx.git" + "ufl4rom @ git+https://github.com/RBniCS/ufl4rom.git" +] +docs = [ + "sphinx" +] +lint = [ + "flake8", + "flake8-annotations", + "flake8-docstrings", + "flake8-import-restrictions", + "flake8-isort", + "Flake8-pyproject", + "flake8-quotes", + "mypy" +] +tests = [ + "coverage[toml]", + "nbqa", + "nbvalx[unit_tests] @ git+https://github.com/multiphenics/nbvalx.git", + "pytest", + "scipy" +] +tutorials = [ + "gmsh", + "nbvalx[notebooks] @ git+https://github.com/multiphenics/nbvalx.git", + "rbnicsx[backends]", + "viskex @ git+https://github.com/viskex/viskex.git" +] + +[tool.flake8] +max-line-length = 120 +show-source = true +docstring-convention = "numpy" +inline-quotes = "double" +imr241_exclude = ["__future__", "rbnicsx", "rbnicsx.*"] +imr245_include = "*" +imr245_exclude = ["__future__", "rbnicsx", "rbnicsx.*"] +ignore = ["ANN101", "W503"] +exclude = [".eggs", "build", "dist"] +per-file-ignores = [ + "rbnicsx/__init__.py: I001, I004", + "rbnicsx/**/__init__.py: F401", + "tutorials/0*.py: D100, F401, I004", + "tutorials/1*.py: D100, F401, I004", + "tutorials/**/0*.py: D100, F401, I004", + "tutorials/**/1*.py: D100, F401, I004", + "tutorials/.imports*.py: D100, F401, I004", + "tutorials/**/.imports*.py: D100, F401, I004" +] + +[tool.isort] +line_length = 120 +multi_line_output = 4 +order_by_type = false +combine_as_imports = true + +[tool.mypy] +check_untyped_defs = true +disallow_any_unimported = true +disallow_untyped_defs = true +exclude = "(^\\.eggs|^build|^dist|conftest\\.py$)" +implicit_reexport = true +no_implicit_optional = true +pretty = true +show_error_codes = true +strict = true +warn_return_any = true +warn_unused_ignores = true + +[[tool.mypy.overrides]] +module = "gmsh" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "ipyparallel" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "petsc4py" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "petsc4py.PETSc" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "plotly" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "plotly.*" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "plum" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "slepc4py" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "slepc4py.SLEPc" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "ufl" +ignore_missing_imports = true + +[tool.setuptools.package-data] +viskex = ["py.typed"] + +[tool.setuptools.packages.find] +namespaces = false diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index f2e9a3e..0000000 --- a/setup.cfg +++ /dev/null @@ -1,154 +0,0 @@ -[metadata] -name = RBniCSx -version = 0.0.dev1 -author = Francesco Ballarin (and contributors) -email = francesco.ballarin@unicatt.it -maintainer = Francesco Ballarin -description = Reduced order modelling in FEniCSx -url = https://github.com/RBniCS/RBniCSx -project_urls = - Homepage = https://github.com/RBniCS/RBniCSx - Issues = https://github.com/RBniCS/RBniCSx/issues -long_description = file: README.md -long_description_content_type = text/markdown -license = LGPL-3.0-or-later -classifiers = - Development Status :: 3 - Alpha - Intended Audience :: Developers - Intended Audience :: Science/Research - License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+) - Operating System :: POSIX - Operating System :: POSIX :: Linux - Operating System :: MacOS :: MacOS X - Programming Language :: Python - Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 - Programming Language :: Python :: 3.7 - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - Programming Language :: Python :: 3.10 - Programming Language :: Python :: 3.11 - Topic :: Scientific/Engineering :: Mathematics - Topic :: Software Development :: Libraries :: Python Modules - -[options] -packages = find: -python_requires = >= 3.7 -setup_requires = - setuptools >= 58 - wheel -install_requires = - cppimport - mpi4py - numpy >= 1.21.0 - petsc4py - plum-dispatch - slepc4py - -[options.package_data] -rbnicsx = - _cpp/rbnicsx/**/*.cpp - _cpp/rbnicsx/**/*.h - py.typed - -[options.extras_require] -backends = - fenics-dolfinx - multiphenicsx @ git+https://github.com/multiphenics/multiphenicsx.git - ufl4rom @ git+https://github.com/RBniCS/ufl4rom.git -docs = - sphinx -lint = - flake8 - flake8-annotations - flake8-docstrings - flake8-import-restrictions - flake8-isort - flake8-quotes - mypy -tests = - coverage - nbqa - nbvalx[unit_tests] @ git+https://github.com/multiphenics/nbvalx.git - pytest >= 7.0 - scipy -tutorials = - rbnicsx[backends] - gmsh - nbvalx[notebooks] @ git+https://github.com/multiphenics/nbvalx.git - viskex @ git+https://github.com/viskex/viskex.git - -[flake8] -max-line-length = 120 -show-source = True -docstring-convention = numpy -inline-quotes = double -imr241_exclude = __future__, rbnicsx, rbnicsx.* -imr245_include = * -imr245_exclude = __future__, rbnicsx, rbnicsx.* -ignore = ANN101, W503 -exclude = .eggs, build, dist -per-file-ignores = - rbnicsx/__init__.py: I001, I004 - rbnicsx/**/__init__.py: F401 - tutorials/0*.py: D100, F401, I004 - tutorials/1*.py: D100, F401, I004 - tutorials/**/0*.py: D100, F401, I004 - tutorials/**/1*.py: D100, F401, I004 - tutorials/.imports*.py: D100, F401, I004 - tutorials/**/.imports*.py: D100, F401, I004 - -[isort] -line_length = 120 -multi_line_output = 4 -order_by_type = False -combine_as_imports = True - -[mypy] -check_untyped_defs = True -disallow_any_unimported = True -disallow_untyped_defs = True -exclude = (^\.eggs|^build|^dist|conftest\.py$) -implicit_reexport = True -no_implicit_optional = True -pretty = True -show_error_codes = True -strict = True -warn_return_any = True -warn_unused_ignores = True - -[mypy-cppimport] -ignore_missing_imports = True - -[mypy-gmsh] -ignore_missing_imports = True - -[mypy-ipyparallel] -ignore_missing_imports = True - -[mypy-petsc4py] -ignore_missing_imports = True - -[mypy-petsc4py.lib] -ignore_missing_imports = True - -[mypy-petsc4py.PETSc] -ignore_missing_imports = True - -[mypy-plotly] -ignore_missing_imports = True - -[mypy-plotly.*] -ignore_missing_imports = True - -[mypy-plum] -ignore_missing_imports = True - -[mypy-slepc4py] -ignore_missing_imports = True - -[mypy-slepc4py.SLEPc] -ignore_missing_imports = True - -[mypy-ufl] -ignore_missing_imports = True