1
+ # ──────────────────────────────────────────────────────────────────────────────
2
+ # Build system (unchanged)
3
+ # ──────────────────────────────────────────────────────────────────────────────
1
4
[build-system ]
2
- requires = [" hatchling" ]
3
- build-backend = " hatchling.build"
5
+ requires = [" hatchling" ]
6
+ build-backend = " hatchling.build"
4
7
8
+
9
+ # ──────────────────────────────────────────────────────────────────────────────
10
+ # Project metadata (updated dependency versions)
11
+ # ──────────────────────────────────────────────────────────────────────────────
5
12
[project ]
6
- name = " mesa_frames"
7
- description = " An extension to the Mesa framework which uses Polars DataFrames for enhanced performance"
8
- authors = [
13
+ name = " mesa_frames"
14
+ description = " An extension to the Mesa framework which uses Polars DataFrames for enhanced performance"
15
+ authors = [
9
16
{ name = " Project Mesa Team" , email = " projectmesa@googlegroups.com" },
10
- { name = " Adam Amer" },
11
- ]
12
- license = { text = " MIT" }
13
- readme = " README.md"
14
- keywords = [
15
- " simulation" ,
16
- " simulation-environment" ,
17
- " gis" ,
18
- " simulation-framework" ,
19
- " agent-based-modeling" ,
20
- " complex-systems" ,
21
- " spatial-models" ,
22
- " mesa" ,
23
- " complexity-analysis" ,
24
- " modeling-agents" ,
25
- " agent-based-modelling"
17
+ { name = " Adam Amer" },
26
18
]
27
- classifiers = [
28
- " Development Status :: 3 - Alpha " ,
29
- " Intended Audience :: Science/Research " ,
30
- " License :: OSI Approved :: MIT License " ,
31
- " Programming Language :: Python :: 3 " ,
32
- " Topic :: Scientific/Engineering :: Artificial Life " ,
19
+ license = { text = " MIT " }
20
+ readme = " README.md "
21
+ keywords = [
22
+ " simulation " , " simulation-environment " , " gis " , " simulation-framework " ,
23
+ " agent-based-modeling " , " complex-systems " , " spatial-models " , " mesa " ,
24
+ " complexity-analysis " , " modeling-agents " , " agent-based-modelling " ,
33
25
]
34
- dependencies = [
35
- " numpy>=2.0.2 " ,
36
- " pyarrow " ,
37
- # # polars
38
- " polars>=1.0.0 " , # polars._typing (see mesa_frames.types) added in 1.0.0
39
- # "geopolars" (currently in pre-alpha)
26
+ classifiers = [
27
+ " Development Status :: 3 - Alpha " ,
28
+ " Intended Audience :: Science/Research " ,
29
+ " License :: OSI Approved :: MIT License " ,
30
+ " Programming Language :: Python :: 3 " ,
31
+ " Topic :: Scientific/Engineering :: Artificial Life " ,
40
32
]
41
33
requires-python = " >=3.11"
42
- dynamic = [
43
- " version"
34
+ dependencies = [
35
+ " numpy>=2.0.2" ,
36
+ " pyarrow>=20.0.0" ,
37
+ # polars._typing added in 1.0.0
38
+ " polars>=1.30.0" ,
44
39
]
45
-
46
-
40
+ dynamic = [" version" ]
47
41
48
42
[project .urls ]
49
43
Documentation = " https://projectmesa.github.io/mesa-frames"
50
- Repository = " https://github.com/projectmesa/mesa-frames.git"
51
-
52
- [project .optional-dependencies ]
53
- mkdocs = [
54
- " mkdocs-material" ,
55
- " mkdocs-jupyter" ,
56
- " mkdocs-git-revision-date-localized-plugin" ,
57
- " mkdocs-minify-plugin" ,
58
- " mkdocs-include-markdown-plugin"
59
- ]
44
+ Repository = " https://github.com/projectmesa/mesa-frames.git"
60
45
61
- sphinx = [
62
- " sphinx" ,
63
- " sphinx-rtd-theme" ,
64
- " numpydoc" ,
65
- " pydata-sphinx-theme" ,
66
- " sphinx-copybutton" ,
67
- " sphinx-design" ,
68
- " autodocsumm"
69
- ]
70
46
71
- docs = [
72
- " mesa_frames[mkdocs, sphinx]" ,
73
- # Readme Script
74
- " perfplot" ,
75
- " seaborn"
76
- ]
47
+ # ──────────────────────────────────────────────────────────────────────────────
48
+ # Dependency groups (PEP 735) – local-only, never shipped to PyPI
49
+ # ──────────────────────────────────────────────────────────────────────────────
50
+ [dependency-groups ]
77
51
78
52
test = [
79
- " pytest" ,
80
- " pytest-cov" ,
81
- " beartype" ,
53
+ " pytest>=8.3.5" ,
54
+ " pytest-cov>=6.1.1" ,
55
+ " beartype>=0.21.0" ,
56
+ ]
57
+
58
+ docs = [
59
+ " mkdocs-material>=9.6.14" ,
60
+ " mkdocs-jupyter>=0.25.1" ,
61
+ " mkdocs-git-revision-date-localized-plugin>=1.4.7" ,
62
+ " mkdocs-minify-plugin>=0.8.0" ,
63
+ " mkdocs-include-markdown-plugin>=7.1.5" ,
64
+ " sphinx>=7.4.7" ,
65
+ " sphinx-rtd-theme>=3.0.2" ,
66
+ " numpydoc>=1.8.0" ,
67
+ " pydata-sphinx-theme>=0.16.1" ,
68
+ " sphinx-copybutton>=0.5.2" ,
69
+ " sphinx-design>=0.6.1" ,
70
+ " autodocsumm>=0.2.14" ,
71
+ " perfplot>=0.10.2" ,
72
+ " seaborn>=0.13.2" ,
82
73
]
83
74
75
+ # dev = test ∪ docs ∪ extra tooling
84
76
dev = [
85
- " mesa_frames[test, docs]" ,
77
+ { include-group = " test" },
78
+ { include-group = " docs" },
86
79
" mesa~=2.3.4" ,
87
- " numba>=0.60" ,
80
+ " numba>=0.60.0 " ,
88
81
" ruff>=0.11.12" ,
89
82
" pre-commit>=4.2.0" ,
90
83
]
91
84
85
+
86
+ # ──────────────────────────────────────────────────────────────────────────────
87
+ # Hatch configuration
88
+ # ──────────────────────────────────────────────────────────────────────────────
89
+ [tool .hatch .version ]
90
+ path = " mesa_frames/__init__.py"
91
+
92
+ # Ask Hatch to use uv as the installer everywhere for speed.
93
+ [tool .hatch .envs .default ]
94
+ installer = " uv"
95
+
96
+ # Testing environment ‒ installs ONLY the "test" group
92
97
[tool .hatch .envs .test ]
93
- features = [" test" ]
98
+ dependencies = [{ include-group = " test" }]
99
+
100
+ # Docs build environment
101
+ [tool .hatch .envs .docs ]
102
+ dependencies = [{ include-group = " docs" }]
94
103
95
- [tool .hatch .envs .dev ] # Allows installing dev as virtual env
96
- features = [" dev" ]
104
+ # Dev environment (inherits uv installer)
105
+ [tool .hatch .envs .dev ]
106
+ dependencies = [{ include-group = " dev" }]
97
107
env = { MESA_FRAMES_RUNTIME_TYPECHECKING = " true" }
98
108
109
+ # Wheel build – unchanged
99
110
[tool .hatch .build .targets .wheel ]
100
111
packages = [" mesa_frames" ]
101
112
102
- [tool .hatch .version ]
103
- path = " mesa_frames/__init__.py"
104
113
114
+ # ──────────────────────────────────────────────────────────────────────────────
115
+ # uv configuration
116
+ # ──────────────────────────────────────────────────────────────────────────────
117
+ [tool .uv ]
118
+ # Install the dev stack by default when you run `uv sync`
119
+ default-groups = [" dev" ]
120
+
121
+ [tool .uv .sources ]
122
+ mesa-frames = { workspace = true }
123
+
124
+
125
+ # ──────────────────────────────────────────────────────────────────────────────
126
+ # Ruff linter – unchanged
127
+ # ──────────────────────────────────────────────────────────────────────────────
105
128
[tool .ruff .lint ]
106
129
select = [" D" ]
107
130
ignore = [" D101" , " D102" , " D105" ]
@@ -110,15 +133,6 @@ ignore = ["D101", "D102", "D105"]
110
133
convention = " numpy"
111
134
112
135
[tool .ruff .lint .per-file-ignores ]
113
- "tests/*" = [" D" ]
136
+ "tests/*" = [" D" ]
114
137
"examples/*" = [" D" ]
115
- "docs/*" = [" D" ]
116
-
117
- [tool .uv .sources ]
118
- mesa-frames = { workspace = true }
119
-
120
- [dependency-groups ]
121
- dev = [
122
- " mesa-frames[dev]" ,
123
- ]
124
-
138
+ "docs/*" = [" D" ]
0 commit comments