[build-system] requires = [ "setuptools>=61.0", "wheel>=0.41.0", "numpy>=1.24.0", ] build-backend = "setuptools.build_meta" [project] name = "tsu-wave" version = "1.0.0" description = "Tsunami Spectral Understanding of Wave-Amplitude Variance and Energy - A physics-based framework for real-time tsunami analysis" readme = "README.md" authors = [ {name = "Samir Baladi", email = "gitdeeper@gmail.com"}, {name = "Dr. Elena Marchetti"}, {name = "Prof. Kenji Watanabe"}, {name = "Dr. Lars Petersen"}, {name = "Dr. Amira Hassan"}, ] maintainers = [ {name = "Samir Baladi", email = "gitdeeper@gmail.com"}, ] license = {text = "MIT"} classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Science/Research", "Intended Audience :: Education", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Fortran", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Physics", "Topic :: Scientific/Engineering :: Oceanography", "Natural Language :: English", "Operating System :: OS Independent", ] keywords = [ "tsunami", "hydrodynamics", "wave-propagation", "coastal-inundation", "early-warning", "NSWE", "bathymetry", "spectral-analysis", "vorticity", "oceanography", "geophysics", "natural-hazards", ] requires-python = ">=3.10" dependencies = [ "numpy>=1.24.0", "scipy>=1.10.0", "pandas>=2.0.0", "xarray>=2023.1.0", "netCDF4>=1.6.0", "fastapi>=0.104.0", "uvicorn>=0.24.0", "websockets>=12.0", "python-jose[cryptography]>=3.3.0", "passlib>=1.7.4", "asyncpg>=0.29.0", "sqlalchemy>=2.0.0", "alembic>=1.12.0", "redis>=5.0.0", "PyWavelets>=1.4.0", "streamlit>=1.28.0", "plotly>=5.18.0", "matplotlib>=3.7.0", "geopandas>=0.14.0", "pyyaml>=6.0", "pydantic>=2.4.0", "click>=8.1.0", ] [project.optional-dependencies] dev = [ "pytest>=7.4.0", "pytest-asyncio>=0.21.0", "pytest-cov>=4.1.0", "httpx>=0.25.0", "black>=23.11.0", "isort>=5.12.0", "flake8>=6.1.0", "mypy>=1.7.0", "mkdocs>=1.5.0", "mkdocs-material>=9.4.0", "jupyter>=1.0.0", ] docs = [ "mkdocs>=1.5.0", "mkdocs-material>=9.4.0", "mkdocstrings>=0.24.0", ] [project.urls] Homepage = "https://tsu-wave.netlify.app" Documentation = "https://tsu-wave.netlify.app/documentation" Repository = "https://gitlab.com/gitdeeper4/tsu-wave" "Bug Reports" = "https://gitlab.com/gitdeeper4/tsu-wave/-/issues" DOI = "https://doi.org/10.5281/zenodo.XXXXXXXX" [project.scripts] tsu-wave = "tsuwave.cli:main" tsu-wave-monitor = "tsuwave.cli:monitor" tsu-wave-validate = "tsuwave.cli:validate" tsu-wave-forecast = "tsuwave.cli:forecast" [tool.setuptools] packages = ["tsuwave", "tsuwave.core", "tsuwave.parameters", "tsuwave.hazard", "tsuwave.data", "tsuwave.signals", "tsuwave.api", "tsuwave.dashboard", "tsuwave.utils"] package-dir = {"" = "src"} [tool.setuptools.package-data] "tsuwave.data" = ["*.nc", "*.json"] "tsuwave.core" = ["*.f90"] [tool.black] line-length = 88 target-version = ['py310'] include = '\.pyi?$' extend-exclude = ''' /( \.eggs | \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | buck-out | build | dist )/ ''' [tool.isort] profile = "black" line_length = 88 multi_line_output = 3 include_trailing_comma = true force_grid_wrap = 0 use_parentheses = true ensure_newline_before_comments = true [tool.mypy] python_version = "3.10" warn_return_any = true warn_unused_configs = true ignore_missing_imports = true disallow_untyped_defs = true [tool.pytest.ini_options] minversion = "7.0" addopts = "-ra -q --strict-markers" testpaths = [ "tests", ] markers = [ "slow: marks tests as slow (deselect with '-m \"not slow\"')", "validation: marks validation tests (requires validation data)", ] [tool.coverage.run] source = ["src"] omit = ["*/tests/*", "*/test_*"] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "if self.debug:", "if __name__ == .__main__.:", "raise AssertionError", "raise NotImplementedError", "except ImportError", ]