##// END OF EJS Templates
Merge branch 'main' into revert-14625-ruffisation
M Bussonnier -
r29048:38dd7ad1 merge revert-14625-ruff...
parent child Browse files
Show More
@@ -1,385 +1,444
1 1 [build-system]
2 2 requires = ["setuptools>=61.2"]
3 3 # We need access to the 'setupbase' module at build time.
4 4 # Hence we declare a custom build backend.
5 5 build-backend = "_build_meta" # just re-exports setuptools.build_meta definitions
6 6 backend-path = ["."]
7 7
8 8 [project]
9 9 name = "ipython"
10 10 description = "IPython: Productive Interactive Computing"
11 11 keywords = ["Interactive", "Interpreter", "Shell", "Embedding"]
12 12 classifiers = [
13 13 "Framework :: IPython",
14 14 "Framework :: Jupyter",
15 15 "Intended Audience :: Developers",
16 16 "Intended Audience :: Science/Research",
17 17 "License :: OSI Approved :: BSD License",
18 18 "Programming Language :: Python",
19 19 "Programming Language :: Python :: 3",
20 20 "Programming Language :: Python :: 3 :: Only",
21 21 "Topic :: System :: Shells",
22 22 ]
23 23 requires-python = ">=3.11"
24 24 dependencies = [
25 25 'colorama; sys_platform == "win32"',
26 26 "decorator",
27 27 "jedi>=0.16",
28 28 "matplotlib-inline",
29 29 'pexpect>4.3; sys_platform != "win32" and sys_platform != "emscripten"',
30 30 "prompt_toolkit>=3.0.41,<3.1.0",
31 31 "pygments>=2.4.0",
32 32 "stack_data",
33 33 "traitlets>=5.13.0",
34 34 "typing_extensions>=4.6; python_version<'3.12'",
35 35 ]
36 36 dynamic = ["authors", "license", "version"]
37 37
38 38 [project.entry-points."pygments.lexers"]
39 39 ipythonconsole = "IPython.lib.lexers:IPythonConsoleLexer"
40 40 ipython = "IPython.lib.lexers:IPythonLexer"
41 41 ipython3 = "IPython.lib.lexers:IPython3Lexer"
42 42
43 43 [project.scripts]
44 44 ipython = "IPython:start_ipython"
45 45 ipython3 = "IPython:start_ipython"
46 46
47 47 [project.readme]
48 48 file = "long_description.rst"
49 49 content-type = "text/x-rst"
50 50
51 51 [project.urls]
52 52 Homepage = "https://ipython.org"
53 53 Documentation = "https://ipython.readthedocs.io/"
54 54 Funding = "https://numfocus.org/"
55 55 Source = "https://github.com/ipython/ipython"
56 56 Tracker = "https://github.com/ipython/ipython/issues"
57 57
58 58 [project.optional-dependencies]
59 59 black = [
60 60 "black",
61 61 ]
62 62 doc = [
63 63 "docrepr",
64 64 "exceptiongroup",
65 65 "intersphinx_registry",
66 66 "ipykernel",
67 67 "ipython[test]",
68 68 "matplotlib",
69 69 "setuptools>=18.5",
70 70 "sphinx-rtd-theme",
71 71 "sphinx>=1.3",
72 72 "sphinxcontrib-jquery",
73 73 ]
74 74 kernel = [
75 75 "ipykernel",
76 76 ]
77 77 nbconvert = [
78 78 "nbconvert",
79 79 ]
80 80 nbformat = [
81 81 "nbformat",
82 82 ]
83 83 notebook = [
84 84 "ipywidgets",
85 85 "notebook",
86 86 ]
87 87 parallel = [
88 88 "ipyparallel",
89 89 ]
90 90 qtconsole = [
91 91 "qtconsole",
92 92 ]
93 93 terminal = []
94 94 test = [
95 95 "pytest",
96 96 "pytest-asyncio<0.22",
97 97 "testpath",
98 98 "pickleshare",
99 99 "packaging",
100 100 ]
101 101 test_extra = [
102 102 "ipython[test]",
103 103 "curio",
104 104 "matplotlib!=3.2.0",
105 105 "nbformat",
106 106 "numpy>=1.23",
107 107 "pandas",
108 108 "trio",
109 109 ]
110 110 matplotlib = [
111 111 "matplotlib"
112 112 ]
113 113 all = [
114 114 "ipython[black,doc,kernel,nbconvert,nbformat,notebook,parallel,qtconsole,matplotlib]",
115 115 "ipython[test,test_extra]",
116 116 ]
117 117
118 118 [tool.mypy]
119 119 python_version = "3.10"
120 120 ignore_missing_imports = true
121 121 follow_imports = 'silent'
122 122 exclude = [
123 123 'test_\.+\.py',
124 124 'IPython.utils.tests.test_wildcard',
125 125 'testing',
126 126 'tests',
127 127 'PyColorize.py',
128 128 '_process_win32_controller.py',
129 129 'IPython/core/application.py',
130 130 'IPython/core/profileapp.py',
131 131 'IPython/lib/deepreload.py',
132 132 'IPython/sphinxext/ipython_directive.py',
133 133 'IPython/terminal/ipapp.py',
134 134 'IPython/utils/path.py',
135 135 ]
136 136 # check_untyped_defs = true
137 137 # disallow_untyped_calls = true
138 138 # disallow_untyped_decorators = true
139 139 # ignore_errors = false
140 140 # ignore_missing_imports = false
141 141 disallow_incomplete_defs = true
142 142 disallow_untyped_defs = true
143 143 warn_redundant_casts = true
144 144
145 145 [[tool.mypy.overrides]]
146 146 module = [
147 147 "IPython.core.crashhandler",
148 148 ]
149 149 check_untyped_defs = true
150 150 disallow_incomplete_defs = true
151 151 disallow_untyped_calls = true
152 152 disallow_untyped_decorators = true
153 153 disallow_untyped_defs = true
154 154 ignore_errors = false
155 155 ignore_missing_imports = false
156 156
157 157 [[tool.mypy.overrides]]
158 158 module = [
159 159 "IPython.utils.text",
160 160 ]
161 161 disallow_untyped_defs = true
162 162 check_untyped_defs = false
163 163 disallow_untyped_decorators = true
164 164
165 165 [[tool.mypy.overrides]]
166 166 module = [
167 167 ]
168 168 disallow_untyped_defs = false
169 169 ignore_errors = true
170 170 ignore_missing_imports = true
171 171 disallow_untyped_calls = false
172 172 disallow_incomplete_defs = false
173 173 check_untyped_defs = false
174 174 disallow_untyped_decorators = false
175 175
176 176
177 177 # gloabl ignore error
178 178 [[tool.mypy.overrides]]
179 179 module = [
180 180 "IPython",
181 181 "IPython.conftest",
182 182 "IPython.core.alias",
183 183 "IPython.core.async_helpers",
184 184 "IPython.core.autocall",
185 185 "IPython.core.builtin_trap",
186 186 "IPython.core.compilerop",
187 187 "IPython.core.completer",
188 188 "IPython.core.completerlib",
189 189 "IPython.core.debugger",
190 190 "IPython.core.display",
191 191 "IPython.core.display_functions",
192 192 "IPython.core.display_trap",
193 193 "IPython.core.displayhook",
194 194 "IPython.core.displaypub",
195 195 "IPython.core.events",
196 196 "IPython.core.excolors",
197 197 "IPython.core.extensions",
198 198 "IPython.core.formatters",
199 199 "IPython.core.getipython",
200 200 "IPython.core.guarded_eval",
201 201 "IPython.core.historyapp",
202 202 "IPython.core.hooks",
203 203 "IPython.core.inputtransformer",
204 204 "IPython.core.inputtransformer2",
205 205 "IPython.core.interactiveshell",
206 206 "IPython.core.logger",
207 207 "IPython.core.macro",
208 208 "IPython.core.magic",
209 209 "IPython.core.magic_arguments",
210 210 "IPython.core.magics.ast_mod",
211 211 "IPython.core.magics.auto",
212 212 "IPython.core.magics.basic",
213 213 "IPython.core.magics.code",
214 214 "IPython.core.magics.config",
215 215 "IPython.core.magics.display",
216 216 "IPython.core.magics.execution",
217 217 "IPython.core.magics.extension",
218 218 "IPython.core.magics.history",
219 219 "IPython.core.magics.logging",
220 220 "IPython.core.magics.namespace",
221 221 "IPython.core.magics.osm",
222 222 "IPython.core.magics.packaging",
223 223 "IPython.core.magics.pylab",
224 224 "IPython.core.magics.script",
225 225 "IPython.core.oinspect",
226 226 "IPython.core.page",
227 227 "IPython.core.payload",
228 228 "IPython.core.payloadpage",
229 229 "IPython.core.prefilter",
230 230 "IPython.core.profiledir",
231 231 "IPython.core.prompts",
232 232 "IPython.core.pylabtools",
233 233 "IPython.core.shellapp",
234 234 "IPython.core.splitinput",
235 235 "IPython.core.ultratb",
236 236 "IPython.extensions.autoreload",
237 237 "IPython.extensions.storemagic",
238 238 "IPython.external.qt_for_kernel",
239 239 "IPython.external.qt_loaders",
240 240 "IPython.lib.backgroundjobs",
241 241 "IPython.lib.clipboard",
242 242 "IPython.lib.demo",
243 243 "IPython.lib.display",
244 244 "IPython.lib.editorhooks",
245 245 "IPython.lib.guisupport",
246 246 "IPython.lib.latextools",
247 247 "IPython.lib.lexers",
248 248 "IPython.lib.pretty",
249 249 "IPython.paths",
250 250 "IPython.sphinxext.ipython_console_highlighting",
251 251 "IPython.terminal.debugger",
252 252 "IPython.terminal.embed",
253 253 "IPython.terminal.interactiveshell",
254 254 "IPython.terminal.magics",
255 255 "IPython.terminal.prompts",
256 256 "IPython.terminal.pt_inputhooks",
257 257 "IPython.terminal.pt_inputhooks.asyncio",
258 258 "IPython.terminal.pt_inputhooks.glut",
259 259 "IPython.terminal.pt_inputhooks.gtk",
260 260 "IPython.terminal.pt_inputhooks.gtk3",
261 261 "IPython.terminal.pt_inputhooks.gtk4",
262 262 "IPython.terminal.pt_inputhooks.osx",
263 263 "IPython.terminal.pt_inputhooks.pyglet",
264 264 "IPython.terminal.pt_inputhooks.qt",
265 265 "IPython.terminal.pt_inputhooks.tk",
266 266 "IPython.terminal.pt_inputhooks.wx",
267 267 "IPython.terminal.ptutils",
268 268 "IPython.terminal.shortcuts",
269 269 "IPython.terminal.shortcuts.auto_match",
270 270 "IPython.terminal.shortcuts.auto_suggest",
271 271 "IPython.terminal.shortcuts.filters",
272 272 "IPython.utils._process_cli",
273 273 "IPython.utils._process_common",
274 274 "IPython.utils._process_emscripten",
275 275 "IPython.utils._process_posix",
276 276 "IPython.utils.capture",
277 277 "IPython.utils.coloransi",
278 278 "IPython.utils.contexts",
279 279 "IPython.utils.data",
280 280 "IPython.utils.decorators",
281 281 "IPython.utils.dir2",
282 282 "IPython.utils.encoding",
283 283 "IPython.utils.frame",
284 284 "IPython.utils.generics",
285 285 "IPython.utils.importstring",
286 286 "IPython.utils.io",
287 287 "IPython.utils.ipstruct",
288 288 "IPython.utils.module_paths",
289 289 "IPython.utils.openpy",
290 290 "IPython.utils.process",
291 291 "IPython.utils.py3compat",
292 292 "IPython.utils.sentinel",
293 293 "IPython.utils.strdispatch",
294 294 "IPython.utils.sysinfo",
295 295 "IPython.utils.syspathcontext",
296 296 "IPython.utils.tempdir",
297 297 "IPython.utils.terminal",
298 298 "IPython.utils.timing",
299 299 "IPython.utils.tokenutil",
300 300 "IPython.utils.version",
301 301 "IPython.utils.wildcard",
302 302
303 303 ]
304 304 disallow_untyped_defs = false
305 305 ignore_errors = true
306 306 ignore_missing_imports = true
307 307 disallow_untyped_calls = false
308 308 disallow_incomplete_defs = false
309 309 check_untyped_defs = false
310 310 disallow_untyped_decorators = false
311 311
312 312 [tool.pytest.ini_options]
313 313 addopts = [
314 314 "--durations=10",
315 315 "-pIPython.testing.plugin.pytest_ipdoctest",
316 316 "--ipdoctest-modules",
317 317 "--ignore=docs",
318 318 "--ignore=examples",
319 319 "--ignore=htmlcov",
320 320 "--ignore=ipython_kernel",
321 321 "--ignore=ipython_parallel",
322 322 "--ignore=results",
323 323 "--ignore=tmp",
324 324 "--ignore=tools",
325 325 "--ignore=traitlets",
326 326 "--ignore=IPython/core/tests/daft_extension",
327 327 "--ignore=IPython/sphinxext",
328 328 "--ignore=IPython/terminal/pt_inputhooks",
329 329 "--ignore=IPython/__main__.py",
330 330 "--ignore=IPython/external/qt_for_kernel.py",
331 331 "--ignore=IPython/html/widgets/widget_link.py",
332 332 "--ignore=IPython/html/widgets/widget_output.py",
333 333 "--ignore=IPython/terminal/console.py",
334 334 "--ignore=IPython/utils/_process_cli.py",
335 335 "--ignore=IPython/utils/_process_posix.py",
336 336 "--ignore=IPython/utils/_process_win32_controller.py",
337 337 "--ignore=IPython/utils/daemonize.py",
338 338 "--ignore=IPython/utils/eventful.py",
339 339 "--ignore=IPython/kernel",
340 340 "--ignore=IPython/consoleapp.py",
341 341 "--ignore=IPython/lib/kernel.py",
342 342 "--ignore=IPython/utils/jsonutil.py",
343 343 "--ignore=IPython/utils/localinterfaces.py",
344 344 "--ignore=IPython/utils/log.py",
345 345 "--ignore=IPython/utils/signatures.py",
346 346 "--ignore=IPython/utils/version.py"
347 347 ]
348 348 doctest_optionflags = [
349 349 "NORMALIZE_WHITESPACE",
350 350 "ELLIPSIS"
351 351 ]
352 352 ipdoctest_optionflags = [
353 353 "NORMALIZE_WHITESPACE",
354 354 "ELLIPSIS"
355 355 ]
356 356 asyncio_mode = "strict"
357 357
358 358 [tool.pyright]
359 359 pythonPlatform="All"
360 360
361 361 [tool.setuptools]
362 362 zip-safe = false
363 363 platforms = ["Linux", "Mac OSX", "Windows"]
364 364 license-files = ["LICENSE"]
365 365 include-package-data = false
366 366
367 367 [tool.setuptools.packages.find]
368 368 exclude = ["setupext"]
369 369 namespaces = false
370 370
371 371 [tool.setuptools.package-data]
372 372 "IPython" = ["py.typed"]
373 373 "IPython.core" = ["profile/README*"]
374 374 "IPython.core.tests" = ["*.png", "*.jpg", "daft_extension/*.py"]
375 375 "IPython.lib.tests" = ["*.wav"]
376 376 "IPython.testing.plugin" = ["*.txt"]
377 377
378 378 [tool.setuptools.dynamic]
379 379 version = {attr = "IPython.core.release.__version__"}
380 380
381 381 [tool.coverage.run]
382 382 omit = [
383 383 # omit everything in /tmp as we run tempfile
384 384 "/tmp/*",
385 385 ]
386
387 [tool.ruff.lint]
388 extend-select = [
389 # "B", # flake8-bugbear
390 # "I", # isort
391 # that will be a problem for pytest fixture unless you swap with the usefixture decorator https://docs.pytest.org/en/7.1.x/how-to/fixtures.html#use-fixtures-in-classes-and-modules-with-usefixtures
392 # "ARG", # flake8-unused-arguments
393 # "C4", # flake8-comprehensions
394 # "EM", # flake8-errmsg
395 # "ICN", # flake8-import-conventions
396 # "G", # flake8-logging-format
397 # "PGH", # pygrep-hooks
398 # "PIE", # flake8-pie
399 # "PL", # pylint
400 # "PTH", # flake8-use-pathlib
401 # "PT", # flake8-pytest-style
402 # "RET", # flake8-return
403 # "RUF", # Ruff-specific
404 # "SIM", # flake8-simplify
405 # "T20", # flake8-print
406 # "UP", # pyupgrade
407 # "YTT", # flake8-2020
408 # "EXE", # flake8-executable
409 # "PYI", # flake8-pyi
410 # "S", # flake8-bandit
411 ]
412 ignore = [
413 # "E501", # E501 Line too long (158 > 100 characters)
414 # "SIM105", # SIM105 Use `contextlib.suppress(...)`
415 # "PLR", # Design related pylint codes
416 # "S101", # Use of `assert` detected
417 "E712", # 1
418 "E713", # 1
419 "E902", # 2
420 "E702", # 3
421 "E721", # 3
422 "E401", # 5
423 "E711", # 14 Comparison to `None` should be `cond is None`
424 "E701", # 19 Multiple statements on one line (colon)
425 "E741", # 25 Ambiguous variable name: `<one letter>`
426 "E731", # 27 Do not assign a `lambda` expression, use a `def`
427 "E402", # 28 Module level import not at top of file
428 "E722", # 75 Do not use bare `except`
429 "F523", # 1
430 "F811", # 3
431 "F403", # 7
432 "F841", # 38 Local variable `...` is assigned to but never used
433 "F401", # 69 imported but unused
434 "F821", # 624 F821 Undefined name
435 ]
436 unfixable = [
437 # Don't touch print statements
438 "T201",
439 # Don't touch noqa lines
440 "RUF100",
441 ]
442
443 [tool.ruff]
444 extend-exclude = ["tests"]
General Comments 0
You need to be logged in to leave comments. Login now