/ pyproject.toml
pyproject.toml
  1  [build-system]
  2  requires = ["hatchling"]
  3  build-backend = "hatchling.build"
  4  
  5  [project]
  6  # See https://www.python.org/dev/peps/pep-0621/
  7  name = 'sirocco'
  8  dynamic = ["version"]
  9  description = 'A library for creating weather and climate workflows.'
 10  authors = [
 11    {name = 'Matthieu Leclair', email = 'matthieu.leclair@env.ethz.ch'},
 12    {name = 'Julian Geiger', email = 'julian.geiger@psi.ch'},
 13    {name = 'Alexander Goscinski', email = 'alexander.goscinski@psi.ch'},
 14  ]
 15  readme = 'README.md'
 16  classifiers = [
 17    'Development Status :: 1 - Planning',
 18    'Intended Audience :: Science/Research',
 19    'Operating System :: POSIX :: Linux',
 20    'Programming Language :: Python',
 21    'Programming Language :: Python :: 3.12',
 22    'Topic :: Scientific/Engineering',
 23    'Topic :: Scientific/Engineering :: Atmospheric Science',
 24    'License :: OSI Approved :: MIT License',
 25  ]
 26  keywords = ["workflow"," icon", "aiida", "aiida-workgraph"]
 27  requires-python = '>=3.10'
 28  dependencies = [
 29    "numpy",
 30    "isoduration",
 31    "pydantic",
 32    "ruamel.yaml",
 33    "aiida-core>=2.5",
 34    "aiida-workgraph==0.5.2",
 35    "termcolor",
 36    "pygraphviz",
 37    "lxml",
 38    "f90nml",
 39    "aiida-shell>=0.8.1",
 40  ]
 41  license = {file = "LICENSE"}
 42  
 43  [project.urls]
 44  Repository = "https://github.com/C2SM/Sirocco.git"
 45  Documentation = "https://c2sm.github.io/Sirocco/"
 46  Changelog = "https://github.com/C2SM/Sirocco/blob/main/CHANGELOG.md"
 47  
 48  [tool.pytest.ini_options]
 49  # Configuration for [pytest](https://docs.pytest.org)
 50  addopts = "--pdbcls=IPython.terminal.debugger:TerminalPdb"
 51  norecursedirs = "tests/cases"
 52  markers = [
 53    "slow: slow integration tests which are not recommended to run locally for normal development",
 54    "requires_icon: marks test to require icon installation"
 55  ]
 56  filterwarnings = [
 57    "error",
 58    "ignore::UserWarning",
 59    'ignore:datetime.datetime.utcfromtimestamp\(\) is deprecated:DeprecationWarning',  # from aio_pika via duration
 60    "ignore:There is no current event loop:DeprecationWarning",  # from plumpy via aiida testing tools
 61    "ignore:Object of type <DbNode> not in session:sqlalchemy.exc.SAWarning",  # sqlalchemy via aiida testing tools
 62  ]
 63  
 64  [tool.coverage.run]
 65  # Configuration of [coverage.py](https://coverage.readthedocs.io)
 66  # reporting which lines of your plugin are covered by tests
 67  source = ["sirocco"]
 68  
 69  [tool.ruff]
 70  include = ["src/*py", "tests/*py"]
 71  target-version = "py310"
 72  
 73  [tool.ruff.lint]
 74  ignore = [
 75    "TID252", # prefer relative import over absolute
 76    "TRY003", # write custom error messages for formatting
 77  ]
 78  
 79  ## Hatch configurations
 80  
 81  [tool.hatch.build.targets.sdist]
 82  include = [
 83    "src/sirocco/",
 84  ]
 85  
 86  [tool.hatch.version]
 87  path = "src/sirocco/__init__.py"
 88  
 89  [tool.hatch.envs.default]
 90  installer = "uv"
 91  
 92  [tool.hatch.envs.hatch-test]
 93  installer = "uv"
 94  extra-dependencies = [
 95      "ipdb"
 96  ]
 97  default-args = []
 98  extra-args = ["--doctest-modules", '-m not slow', '-m not requires_icon']
 99  
100  [[tool.hatch.envs.hatch-test.matrix]]
101  python = ["3.12"]
102  
103  [tool.hatch.envs.docs]
104  installer = "uv"
105  description = "Build the documentation"
106  extra-dependencies = [
107      "mkdocs-material",
108  ]
109  
110  [tool.hatch.envs.docs.scripts]
111  build = [
112    "mkdocs build -f docs/mkdocs.yml",
113    "echo 'Now open docs/build/index.html with your browser'"
114  ]
115  serve = [
116    "mkdocs serve -f docs/mkdocs.yml",
117  ]
118  
119  deploy = [
120    "mkdocs gh-deploy --no-history -f docs/mkdocs.yml"
121  ]
122  
123  [tool.hatch.envs.types]
124  python = "3.12"
125  extra-dependencies = [
126    "mypy>=1.0.0",
127    "pytest",
128    "lxml-stubs",
129    "types-setuptools",
130    "types-docutils",
131    "types-colorama",
132    "types-Pygments",
133    "types-termcolor",
134    "types-requests"
135  ]
136  
137  [tool.hatch.envs.types.scripts]
138  check = "mypy --no-incremental {args:.}"
139  
140  [[tool.mypy.overrides]]
141  module = ["isoduration", "isoduration.*"]
142  follow_untyped_imports = true
143  
144  [[tool.mypy.overrides]]
145  module = ["pygraphviz"]
146  ignore_missing_imports = true
147  
148  [[tool.mypy.overrides]]
149  module = ["f90nml"]
150  ignore_missing_imports = true
151  
152  [[tool.mypy.overrides]]
153  module = ["aiida_workgraph.sockets.builtins"]
154  ignore_missing_imports = true