mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Narrow `Generator[T, None, None]
types to
Iterator[T]
` (#12241)
This commit is contained in:
parent
413e740dca
commit
3421e5382a
@ -27,7 +27,7 @@ from sphinx.util.template import SphinxRenderer
|
|||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
import os
|
import os
|
||||||
from collections.abc import Generator, Iterable
|
from collections.abc import Iterable, Iterator
|
||||||
|
|
||||||
from docutils.nodes import Element
|
from docutils.nodes import Element
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ class Catalog:
|
|||||||
line = -1
|
line = -1
|
||||||
self.metadata[msg].append((origin.source, line, origin.uid)) # type: ignore[arg-type]
|
self.metadata[msg].append((origin.source, line, origin.uid)) # type: ignore[arg-type]
|
||||||
|
|
||||||
def __iter__(self) -> Generator[Message, None, None]:
|
def __iter__(self) -> Iterator[Message]:
|
||||||
for message in self.messages:
|
for message in self.messages:
|
||||||
positions = sorted({(source, line) for source, line, uuid
|
positions = sorted({(source, line) for source, line, uuid
|
||||||
in self.metadata[message]})
|
in self.metadata[message]})
|
||||||
|
@ -29,7 +29,7 @@ from sphinx.util.http_date import rfc1123_to_epoch
|
|||||||
from sphinx.util.nodes import get_node_line
|
from sphinx.util.nodes import get_node_line
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator, Iterator
|
from collections.abc import Iterator
|
||||||
from typing import Any, Callable
|
from typing import Any, Callable
|
||||||
|
|
||||||
from requests import Response
|
from requests import Response
|
||||||
@ -224,7 +224,7 @@ class HyperlinkAvailabilityChecker:
|
|||||||
self.to_ignore: list[re.Pattern[str]] = list(map(re.compile,
|
self.to_ignore: list[re.Pattern[str]] = list(map(re.compile,
|
||||||
self.config.linkcheck_ignore))
|
self.config.linkcheck_ignore))
|
||||||
|
|
||||||
def check(self, hyperlinks: dict[str, Hyperlink]) -> Generator[CheckResult, None, None]:
|
def check(self, hyperlinks: dict[str, Hyperlink]) -> Iterator[CheckResult]:
|
||||||
self.invoke_threads()
|
self.invoke_threads()
|
||||||
|
|
||||||
total_links = 0
|
total_links = 0
|
||||||
|
@ -11,7 +11,7 @@ from sphinx.locale import __
|
|||||||
from sphinx.util import logging
|
from sphinx.util import logging
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator, Iterator
|
from collections.abc import Iterator
|
||||||
|
|
||||||
from typing_extensions import Self
|
from typing_extensions import Self
|
||||||
|
|
||||||
@ -248,7 +248,7 @@ class Symbol:
|
|||||||
Symbol.debug_print("recurseInAnon: ", recurseInAnon)
|
Symbol.debug_print("recurseInAnon: ", recurseInAnon)
|
||||||
Symbol.debug_print("searchInSiblings: ", searchInSiblings)
|
Symbol.debug_print("searchInSiblings: ", searchInSiblings)
|
||||||
|
|
||||||
def candidates() -> Generator[Symbol, None, None]:
|
def candidates() -> Iterator[Symbol]:
|
||||||
s = self
|
s = self
|
||||||
if Symbol.debug_lookup:
|
if Symbol.debug_lookup:
|
||||||
Symbol.debug_print("searching in self:")
|
Symbol.debug_print("searching in self:")
|
||||||
|
@ -17,7 +17,7 @@ from sphinx.locale import __
|
|||||||
from sphinx.util import logging
|
from sphinx.util import logging
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator, Iterator
|
from collections.abc import Iterator
|
||||||
|
|
||||||
from sphinx.environment import BuildEnvironment
|
from sphinx.environment import BuildEnvironment
|
||||||
|
|
||||||
@ -237,7 +237,7 @@ class Symbol:
|
|||||||
yield from sChild.get_all_symbols()
|
yield from sChild.get_all_symbols()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def children_recurse_anon(self) -> Generator[Symbol, None, None]:
|
def children_recurse_anon(self) -> Iterator[Symbol]:
|
||||||
for c in self._children:
|
for c in self._children:
|
||||||
yield c
|
yield c
|
||||||
if not c.identOrOp.is_anon():
|
if not c.identOrOp.is_anon():
|
||||||
@ -347,7 +347,7 @@ class Symbol:
|
|||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def candidates() -> Generator[Symbol, None, None]:
|
def candidates() -> Iterator[Symbol]:
|
||||||
s = self
|
s = self
|
||||||
if Symbol.debug_lookup:
|
if Symbol.debug_lookup:
|
||||||
Symbol.debug_print("searching in self:")
|
Symbol.debug_print("searching in self:")
|
||||||
|
@ -23,7 +23,7 @@ from sphinx.util.nodes import is_translatable
|
|||||||
from sphinx.util.osutil import canon_path, os_path
|
from sphinx.util.osutil import canon_path, os_path
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator, Iterator
|
from collections.abc import Iterator
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from docutils import nodes
|
from docutils import nodes
|
||||||
@ -524,7 +524,7 @@ class BuildEnvironment:
|
|||||||
|
|
||||||
return added, changed, removed
|
return added, changed, removed
|
||||||
|
|
||||||
def check_dependents(self, app: Sphinx, already: set[str]) -> Generator[str, None, None]:
|
def check_dependents(self, app: Sphinx, already: set[str]) -> Iterator[str]:
|
||||||
to_rewrite: list[str] = []
|
to_rewrite: list[str] = []
|
||||||
for docnames in self.events.emit('env-get-updated', self):
|
for docnames in self.events.emit('env-get-updated', self):
|
||||||
to_rewrite.extend(docnames)
|
to_rewrite.extend(docnames)
|
||||||
|
@ -32,7 +32,7 @@ from sphinx.util.osutil import FileAvoidWrite, ensuredir
|
|||||||
from sphinx.util.template import ReSTRenderer
|
from sphinx.util.template import ReSTRenderer
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator, Sequence
|
from collections.abc import Iterator, Sequence
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -214,7 +214,7 @@ def is_skipped_module(filename: str, opts: Any, _excludes: Sequence[re.Pattern[s
|
|||||||
|
|
||||||
|
|
||||||
def walk(rootpath: str, excludes: Sequence[re.Pattern[str]], opts: Any,
|
def walk(rootpath: str, excludes: Sequence[re.Pattern[str]], opts: Any,
|
||||||
) -> Generator[tuple[str, list[str], list[str]], None, None]:
|
) -> Iterator[tuple[str, list[str], list[str]]]:
|
||||||
"""Walk through the directory and list files and subdirectories up."""
|
"""Walk through the directory and list files and subdirectories up."""
|
||||||
followlinks = getattr(opts, 'followlinks', False)
|
followlinks = getattr(opts, 'followlinks', False)
|
||||||
includeprivate = getattr(opts, 'includeprivate', False)
|
includeprivate = getattr(opts, 'includeprivate', False)
|
||||||
|
@ -25,7 +25,7 @@ from sphinx.util.inspect import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Callable, Generator, Mapping
|
from collections.abc import Callable, Iterator, Mapping
|
||||||
from types import ModuleType
|
from types import ModuleType
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ def _filter_enum_dict(
|
|||||||
enum_class: type[Enum],
|
enum_class: type[Enum],
|
||||||
attrgetter: Callable[[Any, str, Any], Any],
|
attrgetter: Callable[[Any, str, Any], Any],
|
||||||
enum_class_dict: Mapping[str, object],
|
enum_class_dict: Mapping[str, object],
|
||||||
) -> Generator[tuple[str, type, Any], None, None]:
|
) -> Iterator[tuple[str, type, Any]]:
|
||||||
"""Find the attributes to document of an enumeration class.
|
"""Find the attributes to document of an enumeration class.
|
||||||
|
|
||||||
The output consists of triplets ``(attribute name, defining class, value)``
|
The output consists of triplets ``(attribute name, defining class, value)``
|
||||||
|
@ -14,7 +14,7 @@ from sphinx.util import logging
|
|||||||
from sphinx.util.inspect import isboundmethod, safe_getattr
|
from sphinx.util.inspect import isboundmethod, safe_getattr
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator, Iterator, Sequence
|
from collections.abc import Iterator, Sequence
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ class MockFinder(MetaPathFinder):
|
|||||||
|
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def mock(modnames: list[str]) -> Generator[None, None, None]:
|
def mock(modnames: list[str]) -> Iterator[None]:
|
||||||
"""Insert mock modules during context::
|
"""Insert mock modules during context::
|
||||||
|
|
||||||
with mock(['target.module.name']):
|
with mock(['target.module.name']):
|
||||||
|
@ -22,7 +22,7 @@ from sphinx.util.display import status_iterator
|
|||||||
from sphinx.util.nodes import make_refnode
|
from sphinx.util.nodes import make_refnode
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator, Iterable
|
from collections.abc import Iterable, Iterator
|
||||||
|
|
||||||
from sphinx.application import Sphinx
|
from sphinx.application import Sphinx
|
||||||
from sphinx.builders import Builder
|
from sphinx.builders import Builder
|
||||||
@ -239,7 +239,7 @@ def should_generate_module_page(app: Sphinx, modname: str) -> bool:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def collect_pages(app: Sphinx) -> Generator[tuple[str, dict[str, Any], str], None, None]:
|
def collect_pages(app: Sphinx) -> Iterator[tuple[str, dict[str, Any], str]]:
|
||||||
env = app.builder.env
|
env = app.builder.env
|
||||||
if not hasattr(env, '_viewcode_modules'):
|
if not hasattr(env, '_viewcode_modules'):
|
||||||
return
|
return
|
||||||
|
@ -14,7 +14,7 @@ import pytest
|
|||||||
from sphinx.testing.util import SphinxTestApp, SphinxTestAppWrapperForSkipBuilding
|
from sphinx.testing.util import SphinxTestApp, SphinxTestAppWrapperForSkipBuilding
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Callable, Generator
|
from collections.abc import Callable, Iterator
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ def app(
|
|||||||
app_params: tuple[dict, dict],
|
app_params: tuple[dict, dict],
|
||||||
make_app: Callable,
|
make_app: Callable,
|
||||||
shared_result: SharedResult,
|
shared_result: SharedResult,
|
||||||
) -> Generator[SphinxTestApp, None, None]:
|
) -> Iterator[SphinxTestApp]:
|
||||||
"""
|
"""
|
||||||
Provides the 'sphinx.application.Sphinx' object
|
Provides the 'sphinx.application.Sphinx' object
|
||||||
"""
|
"""
|
||||||
@ -183,7 +183,7 @@ def warning(app: SphinxTestApp) -> StringIO:
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def make_app(test_params: dict, monkeypatch: Any) -> Generator[Callable, None, None]:
|
def make_app(test_params: dict, monkeypatch: Any) -> Iterator[Callable]:
|
||||||
"""
|
"""
|
||||||
Provides make_app function to initialize SphinxTestApp instance.
|
Provides make_app function to initialize SphinxTestApp instance.
|
||||||
if you want to initialize 'app' in your test function. please use this
|
if you want to initialize 'app' in your test function. please use this
|
||||||
@ -289,7 +289,7 @@ def sphinx_test_tempdir(tmp_path_factory: Any) -> Path:
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def rollback_sysmodules() -> Generator[None, None, None]: # NoQA: PT004
|
def rollback_sysmodules() -> Iterator[None]: # NoQA: PT004
|
||||||
"""
|
"""
|
||||||
Rollback sys.modules to its value before testing to unload modules
|
Rollback sys.modules to its value before testing to unload modules
|
||||||
during tests.
|
during tests.
|
||||||
|
@ -21,7 +21,7 @@ from sphinx.util.i18n import format_date
|
|||||||
from sphinx.util.nodes import apply_source_workaround, is_smartquotable
|
from sphinx.util.nodes import apply_source_workaround, is_smartquotable
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator
|
from collections.abc import Iterator
|
||||||
|
|
||||||
from docutils.nodes import Node, Text
|
from docutils.nodes import Node, Text
|
||||||
|
|
||||||
@ -376,7 +376,7 @@ class SphinxSmartQuotes(SmartQuotes, SphinxTransform):
|
|||||||
for tag in normalize_language_tag(language)
|
for tag in normalize_language_tag(language)
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_tokens(self, txtnodes: list[Text]) -> Generator[tuple[str, str], None, None]:
|
def get_tokens(self, txtnodes: list[Text]) -> Iterator[tuple[str, str]]:
|
||||||
# A generator that yields ``(texttype, nodetext)`` tuples for a list
|
# A generator that yields ``(texttype, nodetext)`` tuples for a list
|
||||||
# of "Text" nodes (interface to ``smartquotes.educate_tokens()``).
|
# of "Text" nodes (interface to ``smartquotes.educate_tokens()``).
|
||||||
for txtnode in txtnodes:
|
for txtnode in txtnodes:
|
||||||
|
@ -27,7 +27,7 @@ logger = logging.getLogger(__name__)
|
|||||||
report_re = re.compile('^(.+?:(?:\\d+)?): \\((DEBUG|INFO|WARNING|ERROR|SEVERE)/(\\d+)?\\) ')
|
report_re = re.compile('^(.+?:(?:\\d+)?): \\((DEBUG|INFO|WARNING|ERROR|SEVERE)/(\\d+)?\\) ')
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator
|
from collections.abc import Iterator
|
||||||
from types import ModuleType
|
from types import ModuleType
|
||||||
|
|
||||||
from docutils.frontend import Values
|
from docutils.frontend import Values
|
||||||
@ -43,7 +43,7 @@ additional_nodes: set[type[Element]] = set()
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def docutils_namespace() -> Generator[None, None, None]:
|
def docutils_namespace() -> Iterator[None]:
|
||||||
"""Create namespace for reST parsers."""
|
"""Create namespace for reST parsers."""
|
||||||
try:
|
try:
|
||||||
_directives = copy(directives._directives) # type: ignore[attr-defined]
|
_directives = copy(directives._directives) # type: ignore[attr-defined]
|
||||||
@ -121,7 +121,7 @@ def unregister_node(node: type[Element]) -> None:
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def patched_get_language() -> Generator[None, None, None]:
|
def patched_get_language() -> Iterator[None]:
|
||||||
"""Patch docutils.languages.get_language() temporarily.
|
"""Patch docutils.languages.get_language() temporarily.
|
||||||
|
|
||||||
This ignores the second argument ``reporter`` to suppress warnings.
|
This ignores the second argument ``reporter`` to suppress warnings.
|
||||||
@ -141,7 +141,7 @@ def patched_get_language() -> Generator[None, None, None]:
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def patched_rst_get_language() -> Generator[None, None, None]:
|
def patched_rst_get_language() -> Iterator[None]:
|
||||||
"""Patch docutils.parsers.rst.languages.get_language().
|
"""Patch docutils.parsers.rst.languages.get_language().
|
||||||
Starting from docutils 0.17, get_language() in ``rst.languages``
|
Starting from docutils 0.17, get_language() in ``rst.languages``
|
||||||
also has a reporter, which needs to be disabled temporarily.
|
also has a reporter, which needs to be disabled temporarily.
|
||||||
@ -165,7 +165,7 @@ def patched_rst_get_language() -> Generator[None, None, None]:
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def using_user_docutils_conf(confdir: str | None) -> Generator[None, None, None]:
|
def using_user_docutils_conf(confdir: str | None) -> Iterator[None]:
|
||||||
"""Let docutils know the location of ``docutils.conf`` for Sphinx."""
|
"""Let docutils know the location of ``docutils.conf`` for Sphinx."""
|
||||||
try:
|
try:
|
||||||
docutilsconfig = os.environ.get('DOCUTILSCONFIG', None)
|
docutilsconfig = os.environ.get('DOCUTILSCONFIG', None)
|
||||||
@ -181,7 +181,7 @@ def using_user_docutils_conf(confdir: str | None) -> Generator[None, None, None]
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def du19_footnotes() -> Generator[None, None, None]:
|
def du19_footnotes() -> Iterator[None]:
|
||||||
def visit_footnote(self: HTMLTranslator, node: Element) -> None:
|
def visit_footnote(self: HTMLTranslator, node: Element) -> None:
|
||||||
label_style = self.settings.footnote_references
|
label_style = self.settings.footnote_references
|
||||||
if not isinstance(node.previous_sibling(), type(node)):
|
if not isinstance(node.previous_sibling(), type(node)):
|
||||||
@ -214,7 +214,7 @@ def du19_footnotes() -> Generator[None, None, None]:
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def patch_docutils(confdir: str | None = None) -> Generator[None, None, None]:
|
def patch_docutils(confdir: str | None = None) -> Iterator[None]:
|
||||||
"""Patch to docutils temporarily."""
|
"""Patch to docutils temporarily."""
|
||||||
with patched_get_language(), \
|
with patched_get_language(), \
|
||||||
patched_rst_get_language(), \
|
patched_rst_get_language(), \
|
||||||
@ -359,7 +359,7 @@ class NullReporter(Reporter):
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def switch_source_input(state: State, content: StringList) -> Generator[None, None, None]:
|
def switch_source_input(state: State, content: StringList) -> Iterator[None]:
|
||||||
"""Switch current source input of state temporarily."""
|
"""Switch current source input of state temporarily."""
|
||||||
try:
|
try:
|
||||||
# remember the original ``get_source_and_line()`` method
|
# remember the original ``get_source_and_line()`` method
|
||||||
|
@ -19,7 +19,7 @@ from sphinx.util.osutil import SEP, canon_path, relpath
|
|||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
from collections.abc import Generator
|
from collections.abc import Iterator
|
||||||
from typing import Protocol, Union
|
from typing import Protocol, Union
|
||||||
|
|
||||||
from babel.core import Locale
|
from babel.core import Locale
|
||||||
@ -112,7 +112,7 @@ class CatalogRepository:
|
|||||||
self.encoding = encoding
|
self.encoding = encoding
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def locale_dirs(self) -> Generator[str, None, None]:
|
def locale_dirs(self) -> Iterator[str]:
|
||||||
if not self.language:
|
if not self.language:
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ class CatalogRepository:
|
|||||||
logger.verbose(__('locale_dir %s does not exist'), locale_path)
|
logger.verbose(__('locale_dir %s does not exist'), locale_path)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def pofiles(self) -> Generator[tuple[str, str], None, None]:
|
def pofiles(self) -> Iterator[tuple[str, str]]:
|
||||||
for locale_dir in self.locale_dirs:
|
for locale_dir in self.locale_dirs:
|
||||||
basedir = path.join(locale_dir, self.language, 'LC_MESSAGES')
|
basedir = path.join(locale_dir, self.language, 'LC_MESSAGES')
|
||||||
for root, dirnames, filenames in os.walk(basedir):
|
for root, dirnames, filenames in os.walk(basedir):
|
||||||
@ -139,7 +139,7 @@ class CatalogRepository:
|
|||||||
yield basedir, relpath(fullpath, basedir)
|
yield basedir, relpath(fullpath, basedir)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def catalogs(self) -> Generator[CatalogInfo, None, None]:
|
def catalogs(self) -> Iterator[CatalogInfo]:
|
||||||
for basedir, filename in self.pofiles:
|
for basedir, filename in self.pofiles:
|
||||||
domain = canon_path(path.splitext(filename)[0])
|
domain = canon_path(path.splitext(filename)[0])
|
||||||
yield CatalogInfo(basedir, domain, self.encoding)
|
yield CatalogInfo(basedir, domain, self.encoding)
|
||||||
|
@ -16,7 +16,7 @@ from sphinx.util.console import colorize
|
|||||||
from sphinx.util.osutil import abspath
|
from sphinx.util.osutil import abspath
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator
|
from collections.abc import Iterator
|
||||||
|
|
||||||
from docutils.nodes import Node
|
from docutils.nodes import Node
|
||||||
|
|
||||||
@ -246,7 +246,7 @@ class MemoryHandler(logging.handlers.BufferingHandler):
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def pending_warnings() -> Generator[logging.Handler, None, None]:
|
def pending_warnings() -> Iterator[logging.Handler]:
|
||||||
"""Context manager to postpone logging warnings temporarily.
|
"""Context manager to postpone logging warnings temporarily.
|
||||||
|
|
||||||
Similar to :func:`pending_logging`.
|
Similar to :func:`pending_logging`.
|
||||||
@ -274,7 +274,7 @@ def pending_warnings() -> Generator[logging.Handler, None, None]:
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def suppress_logging() -> Generator[MemoryHandler, None, None]:
|
def suppress_logging() -> Iterator[MemoryHandler]:
|
||||||
"""Context manager to suppress logging all logs temporarily.
|
"""Context manager to suppress logging all logs temporarily.
|
||||||
|
|
||||||
For example::
|
For example::
|
||||||
@ -303,7 +303,7 @@ def suppress_logging() -> Generator[MemoryHandler, None, None]:
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def pending_logging() -> Generator[MemoryHandler, None, None]:
|
def pending_logging() -> Iterator[MemoryHandler]:
|
||||||
"""Context manager to postpone logging all logs temporarily.
|
"""Context manager to postpone logging all logs temporarily.
|
||||||
|
|
||||||
For example::
|
For example::
|
||||||
@ -323,7 +323,7 @@ def pending_logging() -> Generator[MemoryHandler, None, None]:
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def skip_warningiserror(skip: bool = True) -> Generator[None, None, None]:
|
def skip_warningiserror(skip: bool = True) -> Iterator[None]:
|
||||||
"""Context manager to skip WarningIsErrorFilter temporarily."""
|
"""Context manager to skip WarningIsErrorFilter temporarily."""
|
||||||
logger = logging.getLogger(NAMESPACE)
|
logger = logging.getLogger(NAMESPACE)
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ def skip_warningiserror(skip: bool = True) -> Generator[None, None, None]:
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def prefixed_warnings(prefix: str) -> Generator[None, None, None]:
|
def prefixed_warnings(prefix: str) -> Iterator[None]:
|
||||||
"""Context manager to prepend prefix to all warning log records temporarily.
|
"""Context manager to prepend prefix to all warning log records temporarily.
|
||||||
|
|
||||||
For example::
|
For example::
|
||||||
@ -393,7 +393,7 @@ class LogCollector:
|
|||||||
self.logs: list[logging.LogRecord] = []
|
self.logs: list[logging.LogRecord] = []
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def collect(self) -> Generator[None, None, None]:
|
def collect(self) -> Iterator[None]:
|
||||||
with pending_logging() as memhandler:
|
with pending_logging() as memhandler:
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ from sphinx.locale import __
|
|||||||
from sphinx.util import docutils, logging
|
from sphinx.util import docutils, logging
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator
|
from collections.abc import Iterator
|
||||||
|
|
||||||
from docutils.statemachine import StringList
|
from docutils.statemachine import StringList
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ def heading(env: Environment, text: str, level: int = 1) -> str:
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def default_role(docname: str, name: str) -> Generator[None, None, None]:
|
def default_role(docname: str, name: str) -> Iterator[None]:
|
||||||
if name:
|
if name:
|
||||||
dummy_reporter = Reporter('', 4, 4)
|
dummy_reporter = Reporter('', 4, 4)
|
||||||
role_fn, _ = roles.role(name, english, 0, dummy_reporter)
|
role_fn, _ = roles.role(name, english, 0, dummy_reporter)
|
||||||
|
@ -5,7 +5,7 @@ import math
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import textwrap
|
import textwrap
|
||||||
from collections.abc import Generator, Iterable, Sequence
|
from collections.abc import Iterable, Iterator, Sequence
|
||||||
from itertools import chain, groupby
|
from itertools import chain, groupby
|
||||||
from typing import TYPE_CHECKING, Any, cast
|
from typing import TYPE_CHECKING, Any, cast
|
||||||
|
|
||||||
@ -166,7 +166,7 @@ class Table:
|
|||||||
return width + (cell.colspan - 1) * 3
|
return width + (cell.colspan - 1) * 3
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cells(self) -> Generator[Cell, None, None]:
|
def cells(self) -> Iterator[Cell]:
|
||||||
seen: set[Cell] = set()
|
seen: set[Cell] = set()
|
||||||
for line in self.lines:
|
for line in self.lines:
|
||||||
for cell in line:
|
for cell in line:
|
||||||
|
@ -14,7 +14,7 @@ import sphinx.pycode
|
|||||||
from sphinx.testing.util import _clean_up_global_state
|
from sphinx.testing.util import _clean_up_global_state
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator
|
from collections.abc import Iterator
|
||||||
|
|
||||||
|
|
||||||
def _init_console(
|
def _init_console(
|
||||||
@ -52,7 +52,7 @@ def pytest_report_header(config: pytest.Config) -> str:
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
@pytest.fixture(autouse=True)
|
||||||
def _cleanup_docutils() -> Generator[None, None, None]:
|
def _cleanup_docutils() -> Iterator[None]:
|
||||||
saved_path = sys.path
|
saved_path = sys.path
|
||||||
yield # run the test
|
yield # run the test
|
||||||
sys.path[:] = saved_path
|
sys.path[:] = saved_path
|
||||||
|
@ -9,11 +9,11 @@ import pytest
|
|||||||
from sphinx import addnodes
|
from sphinx import addnodes
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Generator
|
from collections.abc import Iterator
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def sig_elements() -> Generator[set[type[addnodes.desc_sig_element]], None, None]:
|
def sig_elements() -> Iterator[set[type[addnodes.desc_sig_element]]]:
|
||||||
"""Fixture returning the current ``addnodes.SIG_ELEMENTS`` set."""
|
"""Fixture returning the current ``addnodes.SIG_ELEMENTS`` set."""
|
||||||
original = addnodes.SIG_ELEMENTS.copy() # safe copy of the current nodes
|
original = addnodes.SIG_ELEMENTS.copy() # safe copy of the current nodes
|
||||||
yield {*addnodes.SIG_ELEMENTS} # temporary value to use during tests
|
yield {*addnodes.SIG_ELEMENTS} # temporary value to use during tests
|
||||||
|
@ -7,7 +7,7 @@ import pytest
|
|||||||
from sphinx.testing.util import etree_parse
|
from sphinx.testing.util import etree_parse
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Callable, Generator
|
from collections.abc import Callable, Iterator
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from xml.etree.ElementTree import ElementTree
|
from xml.etree.ElementTree import ElementTree
|
||||||
|
|
||||||
@ -23,6 +23,6 @@ def _parse(path: Path) -> ElementTree:
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='package')
|
@pytest.fixture(scope='package')
|
||||||
def cached_etree_parse() -> Generator[Callable[[Path], ElementTree], None, None]:
|
def cached_etree_parse() -> Iterator[Callable[[Path], ElementTree]]:
|
||||||
yield _parse
|
yield _parse
|
||||||
_etree_cache.clear()
|
_etree_cache.clear()
|
||||||
|
@ -32,6 +32,7 @@ from typing import (
|
|||||||
Callable,
|
Callable,
|
||||||
Dict,
|
Dict,
|
||||||
Generator,
|
Generator,
|
||||||
|
Iterator,
|
||||||
List,
|
List,
|
||||||
NewType,
|
NewType,
|
||||||
Optional,
|
Optional,
|
||||||
@ -175,6 +176,8 @@ def test_restify_type_hints_containers():
|
|||||||
assert restify(Generator[None, None, None]) == (":py:class:`~typing.Generator`\\ "
|
assert restify(Generator[None, None, None]) == (":py:class:`~typing.Generator`\\ "
|
||||||
"[:py:obj:`None`, :py:obj:`None`, "
|
"[:py:obj:`None`, :py:obj:`None`, "
|
||||||
":py:obj:`None`]")
|
":py:obj:`None`]")
|
||||||
|
assert restify(Iterator[None]) == (":py:class:`~typing.Iterator`\\ "
|
||||||
|
"[:py:obj:`None`]")
|
||||||
|
|
||||||
|
|
||||||
def test_restify_type_hints_Callable():
|
def test_restify_type_hints_Callable():
|
||||||
@ -389,6 +392,10 @@ def test_stringify_type_hints_containers():
|
|||||||
assert stringify_annotation(Generator[None, None, None], "fully-qualified") == "typing.Generator[None, None, None]"
|
assert stringify_annotation(Generator[None, None, None], "fully-qualified") == "typing.Generator[None, None, None]"
|
||||||
assert stringify_annotation(Generator[None, None, None], "smart") == "~typing.Generator[None, None, None]"
|
assert stringify_annotation(Generator[None, None, None], "smart") == "~typing.Generator[None, None, None]"
|
||||||
|
|
||||||
|
assert stringify_annotation(Iterator[None], 'fully-qualified-except-typing') == "Iterator[None]"
|
||||||
|
assert stringify_annotation(Iterator[None], "fully-qualified") == "typing.Iterator[None]"
|
||||||
|
assert stringify_annotation(Iterator[None], "smart") == "~typing.Iterator[None]"
|
||||||
|
|
||||||
|
|
||||||
def test_stringify_type_hints_pep_585():
|
def test_stringify_type_hints_pep_585():
|
||||||
assert stringify_annotation(list[int], 'fully-qualified-except-typing') == "list[int]"
|
assert stringify_annotation(list[int], 'fully-qualified-except-typing') == "list[int]"
|
||||||
|
Loading…
Reference in New Issue
Block a user