|
1 | 1 | [build-system]
|
2 |
| -requires = ["setuptools>=42.0.0", "wheel", "setuptools_scm"] |
3 |
| -build-backend = "setuptools.build_meta" |
| 2 | +requires = ["hatchling>=1.24"] |
| 3 | +build-backend = "hatchling.build" |
4 | 4 |
|
5 |
| -[tool.setuptools_scm] |
6 |
| -write_to = "src/napari_chatgpt/_version.py" |
| 5 | +[project] |
| 6 | +name = "napari-chatgpt" |
| 7 | +description = "A napari plugin that brings an LLM-powered agent (Omega) to interactive image analysis." |
| 8 | +readme = "README.md" |
| 9 | +license = { file = "LICENSE" } |
| 10 | +authors = [{ name = "Loic A. Royer", email = "[email protected]" }] |
| 11 | +requires-python = ">=3.9" |
| 12 | +dynamic = ["version"] |
7 | 13 |
|
8 |
| -[tool.black] |
9 |
| -line-length = 79 |
| 14 | +# --- runtime deps (unchanged) --- |
| 15 | +dependencies = [ |
| 16 | + "numpy", |
| 17 | + "magicgui", |
| 18 | + "scikit-image", |
| 19 | + "qtpy", |
| 20 | + "QtAwesome", |
| 21 | + "langchain==0.2.15", |
| 22 | + "langchain-community==0.2.14", |
| 23 | + "langchain-openai==0.1.23", |
| 24 | + "langchain-anthropic==0.1.23", |
| 25 | + "openai==1.42.0", |
| 26 | + "anthropic==0.34.1", |
| 27 | + "fastapi", "uvicorn", |
| 28 | + "websockets", |
| 29 | + "tiktoken", |
| 30 | + "wikipedia", |
| 31 | + "lxml", |
| 32 | + "matplotlib", |
| 33 | + "xarray", |
| 34 | + "arbol", |
| 35 | + "playwright", |
| 36 | + "duckduckgo-search==8.0.4", |
| 37 | + "ome-zarr", |
| 38 | + "transformers", |
| 39 | + "cryptography", |
| 40 | + "tabulate", |
| 41 | + "numba", |
| 42 | + "imageio[ffmpeg,pyav]", |
| 43 | + "notebook", |
| 44 | + "nbformat", |
| 45 | + "jedi", |
| 46 | + "httpx==0.27.2", |
| 47 | + "lxml_html_clean", |
| 48 | +] |
10 | 49 |
|
11 |
| -[tool.isort] |
12 |
| -profile = "black" |
13 |
| -line_length = 79 |
| 50 | +[project.optional-dependencies] |
| 51 | +testing = ["tox", "pytest", "pytest-cov", "pytest-qt", "napari", "pyqt5"] |
14 | 52 |
|
| 53 | +[project.entry-points] |
| 54 | +"napari.manifest" = { "napari-chatgpt" = "napari_chatgpt:napari.yaml" } |
| 55 | +"omega.tools" = { "example_tool" = "napari_chatgpt.omega.tools.examples.example_omega_tool:ExampleOmegaTool" } |
15 | 56 |
|
16 | 57 |
|
| 58 | +[project.urls] |
| 59 | +Homepage = "https://github.com/royerlab/napari-chatgpt" |
| 60 | +Issues = "https://github.com/royerlab/napari-chatgpt/issues" |
| 61 | + |
| 62 | +# ------------------------------------------------------------------------- |
| 63 | +# Hatch specifics |
| 64 | +# ------------------------------------------------------------------------- |
| 65 | +[tool.hatch.version] |
| 66 | +path = "src/napari_chatgpt/__init__.py" |
| 67 | + |
| 68 | +# Ship code from the src/ layout |
| 69 | +[tool.hatch.build] |
| 70 | +sources = ["src"] |
| 71 | + |
| 72 | +# Control *what* is included in each artefact |
| 73 | +[tool.hatch.build.targets.sdist] |
| 74 | +ignore-vcs = true # ignore .gitignore patterns :contentReference[oaicite:0]{index=0} |
| 75 | +exclude = [ |
| 76 | + # developer & CI auxiliaries |
| 77 | + ".github/**", |
| 78 | + ".napari-hub/**", |
| 79 | + "recipe/**", |
| 80 | + # generated or heavy artefacts |
| 81 | + "dist/**", |
| 82 | + "**/*.egg-info", |
| 83 | + # documentation / non-runtime assets |
| 84 | + "art/**", |
| 85 | + "manuscript/**", |
| 86 | + # tests and local junk |
| 87 | + "**/tests/**", |
| 88 | + "**/.DS_Store", |
| 89 | + "sandbox/**", |
| 90 | + # plugin-internal resources that shouldn’t be in wheels |
| 91 | + "src/napari_chatgpt/resources/**", |
| 92 | +] |
| 93 | + |
| 94 | +[tool.hatch.build.targets.wheel] |
| 95 | +packages = ["src/napari_chatgpt"] # wheel only contains code; others auto-excluded :contentReference[oaicite:1]{index=1} |
| 96 | + |
| 97 | +[tool.hatch.envs.hatch-test] |
| 98 | +extra-dependencies = ["tox", "pytest", "pytest-cov", "pytest-qt", "napari", "pyqt5", "black"] |
| 99 | +default-args = ["src/"] |
0 commit comments