From 583fb74bd463aa7f03d6759e9ddcbd1927071348 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Thu, 27 Apr 2023 14:53:51 +0100 Subject: [PATCH 1/3] Remove deprecated ``sphinx.util.stemmer`` module (#11370) --- CHANGES | 1 + sphinx/util/stemmer/__init__.py | 62 --------------------------------- 2 files changed, 1 insertion(+), 62 deletions(-) delete mode 100644 sphinx/util/stemmer/__init__.py diff --git a/CHANGES b/CHANGES index 9d3edcb8969..72ee3bf644c 100644 --- a/CHANGES +++ b/CHANGES @@ -17,6 +17,7 @@ Incompatible changes * #11365: Remove support for the ``jsdump`` format in ``sphinx.search``. * #11366: Make ``locale`` a required argument to ``sphinx.util.i18n.format_date()``. +* #11370: Remove deprecated ``sphinx.util.stemmer`` module. Deprecated ---------- diff --git a/sphinx/util/stemmer/__init__.py b/sphinx/util/stemmer/__init__.py deleted file mode 100644 index 9f91ce59e35..00000000000 --- a/sphinx/util/stemmer/__init__.py +++ /dev/null @@ -1,62 +0,0 @@ -"""Word stemming utilities for Sphinx.""" - -import warnings - -import snowballstemmer - -from sphinx.deprecation import RemovedInSphinx70Warning - - -class PorterStemmer: - def __init__(self) -> None: - warnings.warn(f"{self.__class__.__name__} is deprecated, use " - "snowballstemmer.stemmer('porter') instead.", - RemovedInSphinx70Warning, stacklevel=2) - self.stemmer = snowballstemmer.stemmer('porter') - - def stem(self, p: str, i: int, j: int) -> str: - warnings.warn(f"{self.__class__.__name__}.stem() is deprecated, use " - "snowballstemmer.stemmer('porter').stemWord() instead.", - RemovedInSphinx70Warning, stacklevel=2) - return self.stemmer.stemWord(p) - - -class BaseStemmer: - def __init__(self) -> None: - warnings.warn(f"{self.__class__.__name__} is deprecated, use " - "snowballstemmer.stemmer('porter') instead.", - RemovedInSphinx70Warning, stacklevel=3) - - def stem(self, word: str) -> str: - raise NotImplementedError - - -class PyStemmer(BaseStemmer): - def __init__(self) -> None: - super().__init__() - self.stemmer = snowballstemmer.stemmer('porter') - - def stem(self, word: str) -> str: - warnings.warn(f"{self.__class__.__name__}.stem() is deprecated, use " - "snowballstemmer.stemmer('porter').stemWord() instead.", - RemovedInSphinx70Warning, stacklevel=2) - return self.stemmer.stemWord(word) - - -class StandardStemmer(BaseStemmer): - def __init__(self) -> None: - super().__init__() - self.stemmer = snowballstemmer.stemmer('porter') - - def stem(self, word: str) -> str: - warnings.warn(f"{self.__class__.__name__}.stem() is deprecated, use " - "snowballstemmer.stemmer('porter').stemWord() instead.", - RemovedInSphinx70Warning, stacklevel=2) - return self.stemmer.stemWord(word) - - -def get_stemmer() -> BaseStemmer: - warnings.warn("get_stemmer() is deprecated, use " - "snowballstemmer.stemmer('porter') instead.", - RemovedInSphinx70Warning, stacklevel=2) - return PyStemmer() From 24f476949d698d4a90f385eac3a2e8868b6a34f8 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Thu, 27 Apr 2023 15:18:44 +0100 Subject: [PATCH 2/3] Remove deprecated ``sphinx.pycode.ast.parse()`` (#11371) --- CHANGES | 1 + sphinx/pycode/ast.py | 17 ----------------- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/CHANGES b/CHANGES index 72ee3bf644c..7bd8f725081 100644 --- a/CHANGES +++ b/CHANGES @@ -18,6 +18,7 @@ Incompatible changes * #11366: Make ``locale`` a required argument to ``sphinx.util.i18n.format_date()``. * #11370: Remove deprecated ``sphinx.util.stemmer`` module. +* #11371: Remove deprecated ``sphinx.pycode.ast.parse()`` function. Deprecated ---------- diff --git a/sphinx/pycode/ast.py b/sphinx/pycode/ast.py index 58c0fc056df..6596287afc3 100644 --- a/sphinx/pycode/ast.py +++ b/sphinx/pycode/ast.py @@ -3,11 +3,8 @@ from __future__ import annotations import ast -import warnings from typing import overload -from sphinx.deprecation import RemovedInSphinx70Warning - OPERATORS: dict[type[ast.AST], str] = { ast.Add: "+", ast.And: "and", @@ -31,20 +28,6 @@ } -def parse(code: str, mode: str = 'exec') -> ast.AST: - """Parse the *code* using the built-in ast module.""" - warnings.warn( - "'sphinx.pycode.ast.parse' is deprecated, use 'ast.parse' instead.", - RemovedInSphinx70Warning, stacklevel=2, - ) - try: - return ast.parse(code, mode=mode, type_comments=True) - except SyntaxError: - # Some syntax error found. To ignore invalid type comments, retry parsing without - # type_comments parameter (refs: https://github.com/sphinx-doc/sphinx/issues/8652). - return ast.parse(code, mode=mode) - - @overload def unparse(node: None, code: str = '') -> None: ... From 262e1d9857f28c4a97f1325a43c7fd981a13900c Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Thu, 27 Apr 2023 16:01:14 +0100 Subject: [PATCH 3/3] Remove deprecated ``sphinx.io.read_doc()`` function (#11372) --- CHANGES | 1 + sphinx/io.py | 38 +------------------------------------- 2 files changed, 2 insertions(+), 37 deletions(-) diff --git a/CHANGES b/CHANGES index 7bd8f725081..ed9ac8ddc18 100644 --- a/CHANGES +++ b/CHANGES @@ -19,6 +19,7 @@ Incompatible changes ``sphinx.util.i18n.format_date()``. * #11370: Remove deprecated ``sphinx.util.stemmer`` module. * #11371: Remove deprecated ``sphinx.pycode.ast.parse()`` function. +* #11372: Remove deprecated ``sphinx.io.read_doc()`` function. Deprecated ---------- diff --git a/sphinx/io.py b/sphinx/io.py index f2a0369adcb..335502e57ba 100644 --- a/sphinx/io.py +++ b/sphinx/io.py @@ -1,8 +1,6 @@ """Input/Output files""" from __future__ import annotations -import codecs -import warnings from typing import TYPE_CHECKING, Any import docutils @@ -11,14 +9,12 @@ from docutils.frontend import Values from docutils.io import FileInput, Input, NullOutput from docutils.parsers import Parser -from docutils.parsers.rst import Parser as RSTParser from docutils.readers import standalone from docutils.transforms import Transform from docutils.transforms.references import DanglingReferences from docutils.writers import UnfilteredWriter from sphinx import addnodes -from sphinx.deprecation import RemovedInSphinx70Warning from sphinx.environment import BuildEnvironment from sphinx.transforms import AutoIndexUpgrader, DoctreeReadEvent, SphinxTransformer from sphinx.transforms.i18n import ( @@ -27,7 +23,7 @@ RemoveTranslatableInline, ) from sphinx.transforms.references import SphinxDomains -from sphinx.util import UnicodeDecodeErrorHandler, get_filetype, logging +from sphinx.util import logging from sphinx.util.docutils import LoggingReporter from sphinx.versioning import UIDTransform @@ -160,38 +156,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -def read_doc(app: Sphinx, env: BuildEnvironment, filename: str) -> nodes.document: - """Parse a document and convert to doctree.""" - warnings.warn('sphinx.io.read_doc() is deprecated.', - RemovedInSphinx70Warning, stacklevel=2) - - # set up error_handler for the target document - error_handler = UnicodeDecodeErrorHandler(env.docname) - codecs.register_error('sphinx', error_handler) # type: ignore - - reader = SphinxStandaloneReader() - reader.setup(app) - filetype = get_filetype(app.config.source_suffix, filename) - parser = app.registry.create_source_parser(app, filetype) - if parser.__class__.__name__ == 'CommonMarkParser' and parser.settings_spec == (): - # a workaround for recommonmark - # If recommonmark.AutoStrictify is enabled, the parser invokes reST parser - # internally. But recommonmark-0.4.0 does not provide settings_spec for reST - # parser. As a workaround, this copies settings_spec for RSTParser to the - # CommonMarkParser. - parser.settings_spec = RSTParser.settings_spec - - pub = Publisher(reader=reader, - parser=parser, - writer=SphinxDummyWriter(), - source_class=SphinxFileInput, - destination=NullOutput()) - pub.process_programmatic_settings(None, env.settings, None) # type: ignore[arg-type] - pub.set_source(source_path=filename) - pub.publish() - return pub.document - - def create_publisher(app: Sphinx, filetype: str) -> Publisher: reader = SphinxStandaloneReader() reader.setup(app)