/ 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