##// END OF EJS Templates
Use and depend on intersphinx_registry for doc building....
M Bussonnier -
Show More
@@ -1,12 +1,12 b''
1 -e .[doc]
1 -e .[doc]
2 sphinx>7
2 sphinx>7
3 setuptools
3 setuptools
4 sphinx_rtd_theme>=1.2.0
4 sphinx_rtd_theme>=1.2.0
5 numpy
5 numpy
6 exceptiongroup
6 exceptiongroup
7 testpath
7 testpath
8 matplotlib
8 matplotlib
9 docrepr
9 docrepr
10 prompt_toolkit
10 prompt_toolkit
11 ipykernel
11 ipykernel
12 stack_data
12 intersphinx_registry
@@ -1,249 +1,273 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 #
2 #
3 # IPython documentation build configuration file.
3 # IPython documentation build configuration file.
4
4
5 # NOTE: This file has been edited manually from the auto-generated one from
5 # NOTE: This file has been edited manually from the auto-generated one from
6 # sphinx. Do NOT delete and re-generate. If any changes from sphinx are
6 # sphinx. Do NOT delete and re-generate. If any changes from sphinx are
7 # needed, generate a scratch one and merge by hand any new fields needed.
7 # needed, generate a scratch one and merge by hand any new fields needed.
8
8
9 #
9 #
10 # This file is execfile()d with the current directory set to its containing dir.
10 # This file is execfile()d with the current directory set to its containing dir.
11 #
11 #
12 # The contents of this file are pickled, so don't put values in the namespace
12 # The contents of this file are pickled, so don't put values in the namespace
13 # that aren't pickleable (module imports are okay, they're removed automatically).
13 # that aren't pickleable (module imports are okay, they're removed automatically).
14 #
14 #
15 # All configuration values have a default value; values that are commented out
15 # All configuration values have a default value; values that are commented out
16 # serve to show the default value.
16 # serve to show the default value.
17
17
18
18
19 import sys, os
19 import sys, os
20 from pathlib import Path
20 from pathlib import Path
21
21
22 if sys.version_info > (3, 11):
22 if sys.version_info > (3, 11):
23 import tomllib
23 import tomllib
24 else:
24 else:
25 import tomli as tomllib
25 import tomli as tomllib
26
26
27 with open("./sphinx.toml", "rb") as f:
27 with open("./sphinx.toml", "rb") as f:
28 config = tomllib.load(f)
28 config = tomllib.load(f)
29
29
30 # https://read-the-docs.readthedocs.io/en/latest/faq.html
30 # https://read-the-docs.readthedocs.io/en/latest/faq.html
31 ON_RTD = os.environ.get("READTHEDOCS", None) == "True"
31 ON_RTD = os.environ.get("READTHEDOCS", None) == "True"
32
32
33 if ON_RTD:
33 if ON_RTD:
34 tags.add("rtd")
34 tags.add("rtd")
35
35
36 # RTD doesn't use the Makefile, so re-run autogen_{things}.py here.
36 # RTD doesn't use the Makefile, so re-run autogen_{things}.py here.
37 for name in ("config", "api", "magics", "shortcuts"):
37 for name in ("config", "api", "magics", "shortcuts"):
38 fname = Path("autogen_{}.py".format(name))
38 fname = Path("autogen_{}.py".format(name))
39 fpath = (Path(__file__).parent).joinpath("..", fname)
39 fpath = (Path(__file__).parent).joinpath("..", fname)
40 with open(fpath, encoding="utf-8") as f:
40 with open(fpath, encoding="utf-8") as f:
41 exec(
41 exec(
42 compile(f.read(), fname, "exec"),
42 compile(f.read(), fname, "exec"),
43 {
43 {
44 "__file__": fpath,
44 "__file__": fpath,
45 "__name__": "__main__",
45 "__name__": "__main__",
46 },
46 },
47 )
47 )
48 import sphinx_rtd_theme
48 import sphinx_rtd_theme
49
49
50 # Allow Python scripts to change behaviour during sphinx run
50 # Allow Python scripts to change behaviour during sphinx run
51 os.environ["IN_SPHINX_RUN"] = "True"
51 os.environ["IN_SPHINX_RUN"] = "True"
52
52
53 autodoc_type_aliases = {
53 autodoc_type_aliases = {
54 "Matcher": " IPython.core.completer.Matcher",
54 "Matcher": " IPython.core.completer.Matcher",
55 "MatcherAPIv1": " IPython.core.completer.MatcherAPIv1",
55 "MatcherAPIv1": " IPython.core.completer.MatcherAPIv1",
56 }
56 }
57
57
58 # If your extensions are in another directory, add it here. If the directory
58 # If your extensions are in another directory, add it here. If the directory
59 # is relative to the documentation root, use os.path.abspath to make it
59 # is relative to the documentation root, use os.path.abspath to make it
60 # absolute, like shown here.
60 # absolute, like shown here.
61 sys.path.insert(0, os.path.abspath("../sphinxext"))
61 sys.path.insert(0, os.path.abspath("../sphinxext"))
62
62
63 # We load the ipython release info into a dict by explicit execution
63 # We load the ipython release info into a dict by explicit execution
64 iprelease = {}
64 iprelease = {}
65 exec(
65 exec(
66 compile(
66 compile(
67 open("../../IPython/core/release.py", encoding="utf-8").read(),
67 open("../../IPython/core/release.py", encoding="utf-8").read(),
68 "../../IPython/core/release.py",
68 "../../IPython/core/release.py",
69 "exec",
69 "exec",
70 ),
70 ),
71 iprelease,
71 iprelease,
72 )
72 )
73
73
74 # General configuration
74 # General configuration
75 # ---------------------
75 # ---------------------
76
76
77 # - template_path: Add any paths that contain templates here, relative to this directory.
77 # - template_path: Add any paths that contain templates here, relative to this directory.
78 # - master_doc: The master toctree document.
78 # - master_doc: The master toctree document.
79 # - project
79 # - project
80 # - copyright
80 # - copyright
81 # - github_project_url
81 # - github_project_url
82 # - source_suffix = config["sphinx"]["source_suffix"]
82 # - source_suffix = config["sphinx"]["source_suffix"]
83 # - exclude_patterns:
83 # - exclude_patterns:
84 # Exclude these glob-style patterns when looking for source files.
84 # Exclude these glob-style patterns when looking for source files.
85 # They are relative to the source/ directory.
85 # They are relative to the source/ directory.
86 # - pygments_style: The name of the Pygments (syntax highlighting) style to use.
86 # - pygments_style: The name of the Pygments (syntax highlighting) style to use.
87 # - extensions:
87 # - extensions:
88 # Add any Sphinx extension module names here, as strings. They can be extensions
88 # Add any Sphinx extension module names here, as strings. They can be extensions
89 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
89 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
90 # - default_role
90 # - default_role
91 # - modindex_common_prefix
91 # - modindex_common_prefix
92
92
93 locals().update(config["sphinx"])
93 locals().update(config["sphinx"])
94
94
95 intersphinx_mapping = config["intersphinx_mapping"]
95 try:
96 for k, v in intersphinx_mapping.items():
96 from intersphinx_registry import get_intersphinx_mapping
97 intersphinx_mapping[k] = tuple(
97
98 [intersphinx_mapping[k]["url"], intersphinx_mapping[k]["fallback"]]
98 intersphinx_mapping = get_intersphinx_mapping(
99 packages={
100 "python",
101 "rpy2",
102 "jupyterclient",
103 "jupyter",
104 "jedi",
105 "traitlets",
106 "ipykernel",
107 "prompt_toolkit",
108 "ipywidgets",
109 "ipyparallel",
110 "pip",
111 }
99 )
112 )
100
113
114 except ModuleNotFoundError:
115 # In case intersphinx_registry is not yet packages on current plaform
116 # as it is quite recent.
117 print("/!\\ intersphinx_registry not installed, relying on local mapping.")
118 intersphinx_mapping = config["intersphinx_mapping"]
119 for k, v in intersphinx_mapping.items():
120 intersphinx_mapping[k] = tuple(
121 [intersphinx_mapping[k]["url"], intersphinx_mapping[k]["fallback"]]
122 )
123
124
101 # numpydoc config
125 # numpydoc config
102 numpydoc_show_class_members = config["numpydoc"][
126 numpydoc_show_class_members = config["numpydoc"][
103 "numpydoc_show_class_members"
127 "numpydoc_show_class_members"
104 ] # Otherwise Sphinx emits thousands of warnings
128 ] # Otherwise Sphinx emits thousands of warnings
105 numpydoc_class_members_toctree = config["numpydoc"]["numpydoc_class_members_toctree"]
129 numpydoc_class_members_toctree = config["numpydoc"]["numpydoc_class_members_toctree"]
106 warning_is_error = config["numpydoc"]["warning_is_error"]
130 warning_is_error = config["numpydoc"]["warning_is_error"]
107
131
108 # Options for HTML output
132 # Options for HTML output
109 # -----------------------
133 # -----------------------
110 html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
134 html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
111 # - html_theme
135 # - html_theme
112 # - html_static_path
136 # - html_static_path
113 # Add any paths that contain custom static files (such as style sheets) here,
137 # Add any paths that contain custom static files (such as style sheets) here,
114 # relative to this directory. They are copied after the builtin static files,
138 # relative to this directory. They are copied after the builtin static files,
115 # so a file named "default.css" will overwrite the builtin "default.css".
139 # so a file named "default.css" will overwrite the builtin "default.css".
116 # Favicon needs the directory name
140 # Favicon needs the directory name
117 # - html_favicon
141 # - html_favicon
118 # - html_last_updated_fmt = config["html"]["html_last_updated_fmt"]
142 # - html_last_updated_fmt = config["html"]["html_last_updated_fmt"]
119 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
143 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
120 # using the given strftime format.
144 # using the given strftime format.
121 # Output file base name for HTML help builder.
145 # Output file base name for HTML help builder.
122 # - htmlhelp_basename
146 # - htmlhelp_basename
123 locals().update(config["html"])
147 locals().update(config["html"])
124
148
125 # Additional templates that should be rendered to pages, maps page names to
149 # Additional templates that should be rendered to pages, maps page names to
126 # template names.
150 # template names.
127 html_additional_pages = {}
151 html_additional_pages = {}
128 for item in config["html"]["html_additional_pages"]:
152 for item in config["html"]["html_additional_pages"]:
129 html_additional_pages[item[0]] = item[1]
153 html_additional_pages[item[0]] = item[1]
130
154
131 # Options for LaTeX output
155 # Options for LaTeX output
132 # ------------------------
156 # ------------------------
133
157
134 # Grouping the document tree into LaTeX files. List of tuples
158 # Grouping the document tree into LaTeX files. List of tuples
135 # (source start file, target name, title, author, document class [howto/manual]).
159 # (source start file, target name, title, author, document class [howto/manual]).
136 latex_documents = []
160 latex_documents = []
137 for item in config["latex"]["latex_documents"]:
161 for item in config["latex"]["latex_documents"]:
138 latex_documents.append(tuple(item))
162 latex_documents.append(tuple(item))
139 # If false, no module index is generated.
163 # If false, no module index is generated.
140 latex_use_modindex = config["latex"]["latex_use_modindex"]
164 latex_use_modindex = config["latex"]["latex_use_modindex"]
141 # The font size ('10pt', '11pt' or '12pt').
165 # The font size ('10pt', '11pt' or '12pt').
142 latex_font_size = config["latex"]["latex_font_size"]
166 latex_font_size = config["latex"]["latex_font_size"]
143
167
144 # Options for texinfo output
168 # Options for texinfo output
145 # --------------------------
169 # --------------------------
146 texinfo_documents = [
170 texinfo_documents = [
147 (
171 (
148 master_doc,
172 master_doc,
149 "ipython",
173 "ipython",
150 "IPython Documentation",
174 "IPython Documentation",
151 "The IPython Development Team",
175 "The IPython Development Team",
152 "IPython",
176 "IPython",
153 "IPython Documentation",
177 "IPython Documentation",
154 "Programming",
178 "Programming",
155 1,
179 1,
156 ),
180 ),
157 ]
181 ]
158
182
159 #########################################################################
183 #########################################################################
160 # Custom configuration
184 # Custom configuration
161 # The default replacements for |version| and |release|, also used in various
185 # The default replacements for |version| and |release|, also used in various
162 # other places throughout the built documents.
186 # other places throughout the built documents.
163 #
187 #
164 # The full version, including alpha/beta/rc tags.
188 # The full version, including alpha/beta/rc tags.
165 release = "%s" % iprelease["version"]
189 release = "%s" % iprelease["version"]
166 # Just the X.Y.Z part, no '-dev'
190 # Just the X.Y.Z part, no '-dev'
167 version = iprelease["version"].split("-", 1)[0]
191 version = iprelease["version"].split("-", 1)[0]
168
192
169 # There are two options for replacing |today|: either, you set today to some
193 # There are two options for replacing |today|: either, you set today to some
170 # non-false value, then it is used:
194 # non-false value, then it is used:
171 # today = ''
195 # today = ''
172 # Else, today_fmt is used as the format for a strftime call.
196 # Else, today_fmt is used as the format for a strftime call.
173 today_fmt = "%B %d, %Y"
197 today_fmt = "%B %d, %Y"
174
198
175 rst_prolog = ""
199 rst_prolog = ""
176
200
177
201
178 def is_stable(extra):
202 def is_stable(extra):
179 for ext in {"dev", "b", "rc"}:
203 for ext in {"dev", "b", "rc"}:
180 if ext in extra:
204 if ext in extra:
181 return False
205 return False
182 return True
206 return True
183
207
184
208
185 if is_stable(iprelease["_version_extra"]):
209 if is_stable(iprelease["_version_extra"]):
186 tags.add("ipystable")
210 tags.add("ipystable")
187 print("Adding Tag: ipystable")
211 print("Adding Tag: ipystable")
188 else:
212 else:
189 tags.add("ipydev")
213 tags.add("ipydev")
190 print("Adding Tag: ipydev")
214 print("Adding Tag: ipydev")
191 rst_prolog += """
215 rst_prolog += """
192 .. warning::
216 .. warning::
193
217
194 This documentation covers a development version of IPython. The development
218 This documentation covers a development version of IPython. The development
195 version may differ significantly from the latest stable release.
219 version may differ significantly from the latest stable release.
196 """
220 """
197
221
198 rst_prolog += """
222 rst_prolog += """
199 .. important::
223 .. important::
200
224
201 This documentation covers IPython versions 6.0 and higher. Beginning with
225 This documentation covers IPython versions 6.0 and higher. Beginning with
202 version 6.0, IPython stopped supporting compatibility with Python versions
226 version 6.0, IPython stopped supporting compatibility with Python versions
203 lower than 3.3 including all versions of Python 2.7.
227 lower than 3.3 including all versions of Python 2.7.
204
228
205 If you are looking for an IPython version compatible with Python 2.7,
229 If you are looking for an IPython version compatible with Python 2.7,
206 please use the IPython 5.x LTS release and refer to its documentation (LTS
230 please use the IPython 5.x LTS release and refer to its documentation (LTS
207 is the long term support release).
231 is the long term support release).
208
232
209 """
233 """
210
234
211 import logging
235 import logging
212
236
213
237
214 class ConfigtraitFilter(logging.Filter):
238 class ConfigtraitFilter(logging.Filter):
215 """
239 """
216 This is a filter to remove in sphinx 3+ the error about config traits being duplicated.
240 This is a filter to remove in sphinx 3+ the error about config traits being duplicated.
217
241
218 As we autogenerate configuration traits from, subclasses have lots of
242 As we autogenerate configuration traits from, subclasses have lots of
219 duplication and we want to silence them. Indeed we build on travis with
243 duplication and we want to silence them. Indeed we build on travis with
220 warnings-as-error set to True, so those duplicate items make the build fail.
244 warnings-as-error set to True, so those duplicate items make the build fail.
221 """
245 """
222
246
223 def filter(self, record):
247 def filter(self, record):
224 if (
248 if (
225 record.args
249 record.args
226 and record.args[0] == "configtrait"
250 and record.args[0] == "configtrait"
227 and "duplicate" in record.msg
251 and "duplicate" in record.msg
228 ):
252 ):
229 return False
253 return False
230 return True
254 return True
231
255
232
256
233 ct_filter = ConfigtraitFilter()
257 ct_filter = ConfigtraitFilter()
234
258
235 import sphinx.util
259 import sphinx.util
236
260
237 logger = sphinx.util.logging.getLogger("sphinx.domains.std").logger
261 logger = sphinx.util.logging.getLogger("sphinx.domains.std").logger
238 logger.addFilter(ct_filter)
262 logger.addFilter(ct_filter)
239
263
240
264
241 def setup(app):
265 def setup(app):
242 app.add_css_file("theme_overrides.css")
266 app.add_css_file("theme_overrides.css")
243
267
244
268
245 # Cleanup
269 # Cleanup
246 # -------
270 # -------
247 # delete release info to avoid pickling errors from sphinx
271 # delete release info to avoid pickling errors from sphinx
248
272
249 del iprelease
273 del iprelease
@@ -1,210 +1,210 b''
1 [build-system]
1 [build-system]
2 requires = ["setuptools>=61.2"]
2 requires = ["setuptools>=61.2"]
3 # We need access to the 'setupbase' module at build time.
3 # We need access to the 'setupbase' module at build time.
4 # Hence we declare a custom build backend.
4 # Hence we declare a custom build backend.
5 build-backend = "_build_meta" # just re-exports setuptools.build_meta definitions
5 build-backend = "_build_meta" # just re-exports setuptools.build_meta definitions
6 backend-path = ["."]
6 backend-path = ["."]
7
7
8 [project]
8 [project]
9 name = "ipython"
9 name = "ipython"
10 description = "IPython: Productive Interactive Computing"
10 description = "IPython: Productive Interactive Computing"
11 keywords = ["Interactive", "Interpreter", "Shell", "Embedding"]
11 keywords = ["Interactive", "Interpreter", "Shell", "Embedding"]
12 classifiers = [
12 classifiers = [
13 "Framework :: IPython",
13 "Framework :: IPython",
14 "Framework :: Jupyter",
14 "Framework :: Jupyter",
15 "Intended Audience :: Developers",
15 "Intended Audience :: Developers",
16 "Intended Audience :: Science/Research",
16 "Intended Audience :: Science/Research",
17 "License :: OSI Approved :: BSD License",
17 "License :: OSI Approved :: BSD License",
18 "Programming Language :: Python",
18 "Programming Language :: Python",
19 "Programming Language :: Python :: 3",
19 "Programming Language :: Python :: 3",
20 "Programming Language :: Python :: 3 :: Only",
20 "Programming Language :: Python :: 3 :: Only",
21 "Topic :: System :: Shells",
21 "Topic :: System :: Shells",
22 ]
22 ]
23 requires-python = ">=3.10"
23 requires-python = ">=3.10"
24 dependencies = [
24 dependencies = [
25 'colorama; sys_platform == "win32"',
25 'colorama; sys_platform == "win32"',
26 "decorator",
26 "decorator",
27 "exceptiongroup; python_version<'3.11'",
27 "exceptiongroup; python_version<'3.11'",
28 "jedi>=0.16",
28 "jedi>=0.16",
29 "matplotlib-inline",
29 "matplotlib-inline",
30 'pexpect>4.3; sys_platform != "win32" and sys_platform != "emscripten"',
30 'pexpect>4.3; sys_platform != "win32" and sys_platform != "emscripten"',
31 "prompt_toolkit>=3.0.41,<3.1.0",
31 "prompt_toolkit>=3.0.41,<3.1.0",
32 "pygments>=2.4.0",
32 "pygments>=2.4.0",
33 "stack_data",
33 "stack_data",
34 "traitlets>=5.13.0",
34 "traitlets>=5.13.0",
35 "typing_extensions>=4.6; python_version<'3.12'",
35 "typing_extensions>=4.6; python_version<'3.12'",
36 ]
36 ]
37 dynamic = ["authors", "license", "version"]
37 dynamic = ["authors", "license", "version"]
38
38
39 [project.entry-points."pygments.lexers"]
39 [project.entry-points."pygments.lexers"]
40 ipythonconsole = "IPython.lib.lexers:IPythonConsoleLexer"
40 ipythonconsole = "IPython.lib.lexers:IPythonConsoleLexer"
41 ipython = "IPython.lib.lexers:IPythonLexer"
41 ipython = "IPython.lib.lexers:IPythonLexer"
42 ipython3 = "IPython.lib.lexers:IPython3Lexer"
42 ipython3 = "IPython.lib.lexers:IPython3Lexer"
43
43
44 [project.scripts]
44 [project.scripts]
45 ipython = "IPython:start_ipython"
45 ipython = "IPython:start_ipython"
46 ipython3 = "IPython:start_ipython"
46 ipython3 = "IPython:start_ipython"
47
47
48 [project.readme]
48 [project.readme]
49 file = "long_description.rst"
49 file = "long_description.rst"
50 content-type = "text/x-rst"
50 content-type = "text/x-rst"
51
51
52 [project.urls]
52 [project.urls]
53 Homepage = "https://ipython.org"
53 Homepage = "https://ipython.org"
54 Documentation = "https://ipython.readthedocs.io/"
54 Documentation = "https://ipython.readthedocs.io/"
55 Funding = "https://numfocus.org/"
55 Funding = "https://numfocus.org/"
56 Source = "https://github.com/ipython/ipython"
56 Source = "https://github.com/ipython/ipython"
57 Tracker = "https://github.com/ipython/ipython/issues"
57 Tracker = "https://github.com/ipython/ipython/issues"
58
58
59 [project.optional-dependencies]
59 [project.optional-dependencies]
60 black = [
60 black = [
61 "black",
61 "black",
62 ]
62 ]
63 doc = [
63 doc = [
64 "docrepr",
64 "docrepr",
65 "exceptiongroup",
65 "exceptiongroup",
66 "intersphinx_registry",
66 "ipykernel",
67 "ipykernel",
67 "ipython[test]",
68 "ipython[test]",
68 "matplotlib",
69 "matplotlib",
69 "setuptools>=18.5",
70 "setuptools>=18.5",
70 "sphinx-rtd-theme",
71 "sphinx-rtd-theme",
71 "sphinx>=1.3",
72 "sphinx>=1.3",
72 "sphinxcontrib-jquery",
73 "sphinxcontrib-jquery",
73 "stack_data",
74 "tomli ; python_version<'3.11'",
74 "tomli ; python_version<'3.11'",
75 "typing_extensions",
75 "typing_extensions",
76 ]
76 ]
77 kernel = [
77 kernel = [
78 "ipykernel",
78 "ipykernel",
79 ]
79 ]
80 nbconvert = [
80 nbconvert = [
81 "nbconvert",
81 "nbconvert",
82 ]
82 ]
83 nbformat = [
83 nbformat = [
84 "nbformat",
84 "nbformat",
85 ]
85 ]
86 notebook = [
86 notebook = [
87 "ipywidgets",
87 "ipywidgets",
88 "notebook",
88 "notebook",
89 ]
89 ]
90 parallel = [
90 parallel = [
91 "ipyparallel",
91 "ipyparallel",
92 ]
92 ]
93 qtconsole = [
93 qtconsole = [
94 "qtconsole",
94 "qtconsole",
95 ]
95 ]
96 terminal = []
96 terminal = []
97 test = [
97 test = [
98 "pytest",
98 "pytest",
99 "pytest-asyncio<0.22",
99 "pytest-asyncio<0.22",
100 "testpath",
100 "testpath",
101 "pickleshare",
101 "pickleshare",
102 ]
102 ]
103 test_extra = [
103 test_extra = [
104 "ipython[test]",
104 "ipython[test]",
105 "curio",
105 "curio",
106 "matplotlib!=3.2.0",
106 "matplotlib!=3.2.0",
107 "nbformat",
107 "nbformat",
108 "numpy>=1.23",
108 "numpy>=1.23",
109 "pandas",
109 "pandas",
110 "trio",
110 "trio",
111 ]
111 ]
112 matplotlib = [
112 matplotlib = [
113 "matplotlib"
113 "matplotlib"
114 ]
114 ]
115 all = [
115 all = [
116 "ipython[black,doc,kernel,nbconvert,nbformat,notebook,parallel,qtconsole,matplotlib]",
116 "ipython[black,doc,kernel,nbconvert,nbformat,notebook,parallel,qtconsole,matplotlib]",
117 "ipython[test,test_extra]",
117 "ipython[test,test_extra]",
118 ]
118 ]
119
119
120 [tool.mypy]
120 [tool.mypy]
121 python_version = "3.10"
121 python_version = "3.10"
122 ignore_missing_imports = true
122 ignore_missing_imports = true
123 follow_imports = 'silent'
123 follow_imports = 'silent'
124 exclude = [
124 exclude = [
125 'test_\.+\.py',
125 'test_\.+\.py',
126 'IPython.utils.tests.test_wildcard',
126 'IPython.utils.tests.test_wildcard',
127 'testing',
127 'testing',
128 'tests',
128 'tests',
129 'PyColorize.py',
129 'PyColorize.py',
130 '_process_win32_controller.py',
130 '_process_win32_controller.py',
131 'IPython/core/application.py',
131 'IPython/core/application.py',
132 'IPython/core/profileapp.py',
132 'IPython/core/profileapp.py',
133 'IPython/lib/deepreload.py',
133 'IPython/lib/deepreload.py',
134 'IPython/sphinxext/ipython_directive.py',
134 'IPython/sphinxext/ipython_directive.py',
135 'IPython/terminal/ipapp.py',
135 'IPython/terminal/ipapp.py',
136 'IPython/utils/_process_win32.py',
136 'IPython/utils/_process_win32.py',
137 'IPython/utils/path.py',
137 'IPython/utils/path.py',
138 ]
138 ]
139
139
140 [tool.pytest.ini_options]
140 [tool.pytest.ini_options]
141 addopts = [
141 addopts = [
142 "--durations=10",
142 "--durations=10",
143 "-pIPython.testing.plugin.pytest_ipdoctest",
143 "-pIPython.testing.plugin.pytest_ipdoctest",
144 "--ipdoctest-modules",
144 "--ipdoctest-modules",
145 "--ignore=docs",
145 "--ignore=docs",
146 "--ignore=examples",
146 "--ignore=examples",
147 "--ignore=htmlcov",
147 "--ignore=htmlcov",
148 "--ignore=ipython_kernel",
148 "--ignore=ipython_kernel",
149 "--ignore=ipython_parallel",
149 "--ignore=ipython_parallel",
150 "--ignore=results",
150 "--ignore=results",
151 "--ignore=tmp",
151 "--ignore=tmp",
152 "--ignore=tools",
152 "--ignore=tools",
153 "--ignore=traitlets",
153 "--ignore=traitlets",
154 "--ignore=IPython/core/tests/daft_extension",
154 "--ignore=IPython/core/tests/daft_extension",
155 "--ignore=IPython/sphinxext",
155 "--ignore=IPython/sphinxext",
156 "--ignore=IPython/terminal/pt_inputhooks",
156 "--ignore=IPython/terminal/pt_inputhooks",
157 "--ignore=IPython/__main__.py",
157 "--ignore=IPython/__main__.py",
158 "--ignore=IPython/external/qt_for_kernel.py",
158 "--ignore=IPython/external/qt_for_kernel.py",
159 "--ignore=IPython/html/widgets/widget_link.py",
159 "--ignore=IPython/html/widgets/widget_link.py",
160 "--ignore=IPython/html/widgets/widget_output.py",
160 "--ignore=IPython/html/widgets/widget_output.py",
161 "--ignore=IPython/terminal/console.py",
161 "--ignore=IPython/terminal/console.py",
162 "--ignore=IPython/utils/_process_cli.py",
162 "--ignore=IPython/utils/_process_cli.py",
163 "--ignore=IPython/utils/_process_posix.py",
163 "--ignore=IPython/utils/_process_posix.py",
164 "--ignore=IPython/utils/_process_win32.py",
164 "--ignore=IPython/utils/_process_win32.py",
165 "--ignore=IPython/utils/_process_win32_controller.py",
165 "--ignore=IPython/utils/_process_win32_controller.py",
166 "--ignore=IPython/utils/daemonize.py",
166 "--ignore=IPython/utils/daemonize.py",
167 "--ignore=IPython/utils/eventful.py",
167 "--ignore=IPython/utils/eventful.py",
168 "--ignore=IPython/kernel",
168 "--ignore=IPython/kernel",
169 "--ignore=IPython/consoleapp.py",
169 "--ignore=IPython/consoleapp.py",
170 "--ignore=IPython/core/inputsplitter.py",
170 "--ignore=IPython/core/inputsplitter.py",
171 "--ignore=IPython/lib/kernel.py",
171 "--ignore=IPython/lib/kernel.py",
172 "--ignore=IPython/utils/jsonutil.py",
172 "--ignore=IPython/utils/jsonutil.py",
173 "--ignore=IPython/utils/localinterfaces.py",
173 "--ignore=IPython/utils/localinterfaces.py",
174 "--ignore=IPython/utils/log.py",
174 "--ignore=IPython/utils/log.py",
175 "--ignore=IPython/utils/signatures.py",
175 "--ignore=IPython/utils/signatures.py",
176 "--ignore=IPython/utils/traitlets.py",
176 "--ignore=IPython/utils/traitlets.py",
177 "--ignore=IPython/utils/version.py"
177 "--ignore=IPython/utils/version.py"
178 ]
178 ]
179 doctest_optionflags = [
179 doctest_optionflags = [
180 "NORMALIZE_WHITESPACE",
180 "NORMALIZE_WHITESPACE",
181 "ELLIPSIS"
181 "ELLIPSIS"
182 ]
182 ]
183 ipdoctest_optionflags = [
183 ipdoctest_optionflags = [
184 "NORMALIZE_WHITESPACE",
184 "NORMALIZE_WHITESPACE",
185 "ELLIPSIS"
185 "ELLIPSIS"
186 ]
186 ]
187 asyncio_mode = "strict"
187 asyncio_mode = "strict"
188
188
189 [tool.pyright]
189 [tool.pyright]
190 pythonPlatform="All"
190 pythonPlatform="All"
191
191
192 [tool.setuptools]
192 [tool.setuptools]
193 zip-safe = false
193 zip-safe = false
194 platforms = ["Linux", "Mac OSX", "Windows"]
194 platforms = ["Linux", "Mac OSX", "Windows"]
195 license-files = ["LICENSE"]
195 license-files = ["LICENSE"]
196 include-package-data = false
196 include-package-data = false
197
197
198 [tool.setuptools.packages.find]
198 [tool.setuptools.packages.find]
199 exclude = ["setupext"]
199 exclude = ["setupext"]
200 namespaces = false
200 namespaces = false
201
201
202 [tool.setuptools.package-data]
202 [tool.setuptools.package-data]
203 "IPython" = ["py.typed"]
203 "IPython" = ["py.typed"]
204 "IPython.core" = ["profile/README*"]
204 "IPython.core" = ["profile/README*"]
205 "IPython.core.tests" = ["*.png", "*.jpg", "daft_extension/*.py"]
205 "IPython.core.tests" = ["*.png", "*.jpg", "daft_extension/*.py"]
206 "IPython.lib.tests" = ["*.wav"]
206 "IPython.lib.tests" = ["*.wav"]
207 "IPython.testing.plugin" = ["*.txt"]
207 "IPython.testing.plugin" = ["*.txt"]
208
208
209 [tool.setuptools.dynamic]
209 [tool.setuptools.dynamic]
210 version = {attr = "IPython.core.release.__version__"}
210 version = {attr = "IPython.core.release.__version__"}
General Comments 0
You need to be logged in to leave comments. Login now