-
Notifications
You must be signed in to change notification settings - Fork 880
/
pyproject.toml
153 lines (144 loc) · 3.93 KB
/
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "Mesa"
description = "Agent-based modeling (ABM) in Python"
license = { text = "Apache 2.0" }
requires-python = ">=3.11"
authors = [
{ name = "Project Mesa Team", email = "[email protected]" },
]
keywords = [
"agent",
"based",
"modeling",
"model",
"ABM",
"simulation",
"multi-agent",
]
classifiers = [
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Artificial Life",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Intended Audience :: Science/Research",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Development Status :: 3 - Alpha",
"Natural Language :: English",
]
readme = "README.md"
dependencies = [
"numpy",
"pandas",
"tqdm",
]
dynamic = ["version"]
[project.optional-dependencies]
# User collections
rec = ["mesa[network,viz]"]
all = ["mesa[network,viz,dev,examples,docs]"]
# Core dependencies
network = [
"networkx",
]
viz = [
"matplotlib",
"solara",
]
# Dev and CI stuff
dev = [
"mesa[rec]",
"ruff",
"pytest",
"pytest-cov",
"sphinx",
"pytest-mock",
]
examples = [
"mesa[rec]",
"pytest",
"scipy",
]
docs = [
"mesa[rec]",
"sphinx",
"ipython",
"pydata_sphinx_theme",
"seaborn",
"myst-nb",
"myst-parser", # Markdown in Sphinx
]
[project.urls]
homepage = "https://github.com/projectmesa/mesa"
repository = "https://github.com/projectmesa/mesa"
[project.scripts]
mesa = "mesa.main:cli"
[tool.hatch.build.targets.wheel]
packages = ["mesa"]
[tool.hatch.version]
path = "mesa/__init__.py"
[tool.ruff]
# See https://github.com/charliermarsh/ruff#rules for error code definitions.
# Hardcode to Python 3.11.
# Reminder to update mesa-examples if the value below is changed.
target-version = "py311"
extend-exclude = ["docs", "build"]
[tool.ruff.lint]
select = [
# "ANN", # annotations TODO
"B", # bugbear
"C4", # comprehensions
"DTZ", # naive datetime
"E", # style errors
"F", # flakes
"I", # import sorting
"ISC", # string concatenation
"N", # naming
"PGH", # pygrep-hooks
"PIE", # miscellaneous
"PLC", # pylint convention
"PLE", # pylint error
# "PLR", # pylint refactor TODO
"PLW", # pylint warning
"Q", # quotes
"RUF", # Ruff
"S", # security
"SIM", # simplify
"T10", # debugger
"UP", # upgrade
"W", # style warnings
"YTT", # sys.version
"D", # docstring
]
# Ignore list taken from https://github.com/psf/black/blob/master/.flake8
# E203 Whitespace before ':'
# E266 Too many leading '#' for block comment
# E501 Line too long (82 > 79 characters)
# W503 Line break occurred before a binary operator
# But we don't specify them because ruff's Black already
# checks for it.
# See https://github.com/charliermarsh/ruff/issues/1842#issuecomment-1381210185
extend-ignore = [
"E501",
"S101", # Use of `assert` detected
"B017", # `assertRaises(Exception)` should be considered evil TODO
"PGH004", # Use specific rule codes when using `noqa` TODO
"B905", # `zip()` without an explicit `strict=` parameter
"N802", # Function name should be lowercase
"N999", # Invalid module name. We should revisit this in the future, TODO
"RUF012", # Mutable class attributes should be annotated with `typing.ClassVar` TODO
"S310", # Audit URL open for permitted schemes. Allowing use of `file:` or custom schemes is often unexpected.
"S603", # `subprocess` call: check for execution of untrusted input
"ISC001", # ruff format asks to disable this feature
"S311", # Standard pseudo-random generators are not suitable for cryptographic purposes
]
# Ignore all docstring errors in examples
per-file-ignores = {"mesa/examples/*"= ["D"]}
[tool.ruff.lint.pydocstyle]
convention = "google"