From 9ce0a93cd8d772d1300d430002e9d45c1fad37e8 Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Sun, 3 Mar 2024 08:57:42 +0000 Subject: [PATCH 1/8] improve type annotations in 'docutils.parsers.rst.directives.misc' --- .../docutils/parsers/rst/directives/misc.pyi | 68 ++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi index 0f6820f054ea..d02a247b7034 100644 --- a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi +++ b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi @@ -1,3 +1,69 @@ from _typeshed import Incomplete +from collections.abc import Callable +from pathlib import Path +from re import Pattern +from typing import Any, ClassVar, Literal -def __getattr__(name: str) -> Incomplete: ... +from docutils.parsers.rst import Directive +from docutils.parsers.rst.states import SpecializedBody + +__docformat__: str + +class Include(Directive): + required_arguments: ClassVar[Literal[1]] + optional_arguments: ClassVar[Literal[0]] + final_argument_whitespace: ClassVar[Literal[True]] + option_spec: dict[str, Callable[[str], Any]] + standard_include_path: Path + +class Raw(Directive): + required_arguments: ClassVar[Literal[1]] + optional_arguments: ClassVar[Literal[0]] + final_argument_whitespace: ClassVar[Literal[True]] + option_spec: dict[str, Callable[[str], Any]] + has_content: ClassVar[Literal[True]] + +class Replace(Directive): + has_content: ClassVar[Literal[True]] + +class Unicode(Directive): + required_arguments: ClassVar[Literal[1]] + optional_arguments: ClassVar[Literal[0]] + final_argument_whitespace: ClassVar[Literal[True]] + option_spec: dict[str, Callable[[str], Any]] + comment_pattern: Pattern[str] + +class Class(Directive): + required_arguments: ClassVar[Literal[1]] + optional_arguments: ClassVar[Literal[0]] + final_argument_whitespace: ClassVar[Literal[True]] + has_content: ClassVar[Literal[True]] + +class Role(Directive): + has_content: ClassVar[Literal[True]] + argument_pattern: Pattern[str] + +class DefaultRole(Directive): + optional_arguments: ClassVar[Literal[1]] + final_argument_whitespace: ClassVar[Literal[True]] + +class Title(Directive): + required_arguments: ClassVar[Literal[1]] + optional_arguments: ClassVar[Literal[0]] + final_argument_whitespace: ClassVar[Literal[True]] + +class MetaBody(SpecializedBody): + def __getattr__(name: str) -> Incomplete: ... + +class Meta(Directive): + has_content: ClassVar[Literal[True]] + SMkwargs: ClassVar[dict[str, tuple[MetaBody]]] + +class Date(Directive): + has_content: bool + +class TestDirective(Directive): + optional_arguments: ClassVar[Literal[1]] + final_argument_whitespace: ClassVar[Literal[True]] + option_spec: dict[str, Callable[[str], Any]] + has_content: ClassVar[Literal[True]] From 774756f3b09283939560bd16b1867147bd58a683 Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Sun, 3 Mar 2024 09:05:13 +0000 Subject: [PATCH 2/8] fixup --- stubs/docutils/docutils/parsers/rst/directives/misc.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi index d02a247b7034..171bf8beb753 100644 --- a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi +++ b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi @@ -53,7 +53,7 @@ class Title(Directive): final_argument_whitespace: ClassVar[Literal[True]] class MetaBody(SpecializedBody): - def __getattr__(name: str) -> Incomplete: ... + def __getattr__(self, name: str) -> Incomplete: ... class Meta(Directive): has_content: ClassVar[Literal[True]] From cf985324c7bf52b364547d36dcc27a2fc7e2fa3e Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Sun, 3 Mar 2024 09:09:10 +0000 Subject: [PATCH 3/8] fixup --- stubs/docutils/docutils/parsers/rst/directives/misc.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi index 171bf8beb753..34355273f60d 100644 --- a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi +++ b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi @@ -45,7 +45,7 @@ class Role(Directive): class DefaultRole(Directive): optional_arguments: ClassVar[Literal[1]] - final_argument_whitespace: ClassVar[Literal[True]] + final_argument_whitespace: ClassVar[Literal[False]] class Title(Directive): required_arguments: ClassVar[Literal[1]] From e27686d331849c8283933a8d16c8196d0156e399 Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Sun, 3 Mar 2024 16:59:47 +0000 Subject: [PATCH 4/8] fixup --- .../docutils/parsers/rst/directives/misc.pyi | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi index 34355273f60d..0b4a7b448930 100644 --- a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi +++ b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from collections.abc import Callable from pathlib import Path from re import Pattern -from typing import Any, ClassVar, Literal +from typing import Any, ClassVar from docutils.parsers.rst import Directive from docutils.parsers.rst.states import SpecializedBody @@ -10,60 +10,60 @@ from docutils.parsers.rst.states import SpecializedBody __docformat__: str class Include(Directive): - required_arguments: ClassVar[Literal[1]] - optional_arguments: ClassVar[Literal[0]] - final_argument_whitespace: ClassVar[Literal[True]] + required_arguments: ClassVar[int] + optional_arguments: ClassVar[int] + final_argument_whitespace: ClassVar[bool] option_spec: dict[str, Callable[[str], Any]] standard_include_path: Path class Raw(Directive): - required_arguments: ClassVar[Literal[1]] - optional_arguments: ClassVar[Literal[0]] - final_argument_whitespace: ClassVar[Literal[True]] + required_arguments: ClassVar[int] + optional_arguments: ClassVar[int] + final_argument_whitespace: ClassVar[bool] option_spec: dict[str, Callable[[str], Any]] - has_content: ClassVar[Literal[True]] + has_content: ClassVar[bool] class Replace(Directive): - has_content: ClassVar[Literal[True]] + has_content: ClassVar[bool] class Unicode(Directive): - required_arguments: ClassVar[Literal[1]] - optional_arguments: ClassVar[Literal[0]] - final_argument_whitespace: ClassVar[Literal[True]] + required_arguments: ClassVar[int] + optional_arguments: ClassVar[int] + final_argument_whitespace: ClassVar[bool] option_spec: dict[str, Callable[[str], Any]] comment_pattern: Pattern[str] class Class(Directive): - required_arguments: ClassVar[Literal[1]] - optional_arguments: ClassVar[Literal[0]] - final_argument_whitespace: ClassVar[Literal[True]] - has_content: ClassVar[Literal[True]] + required_arguments: ClassVar[int] + optional_arguments: ClassVar[int] + final_argument_whitespace: ClassVar[bool] + has_content: ClassVar[bool] class Role(Directive): - has_content: ClassVar[Literal[True]] + has_content: ClassVar[bool] argument_pattern: Pattern[str] class DefaultRole(Directive): - optional_arguments: ClassVar[Literal[1]] - final_argument_whitespace: ClassVar[Literal[False]] + optional_arguments: ClassVar[int] + final_argument_whitespace: ClassVar[bool] class Title(Directive): - required_arguments: ClassVar[Literal[1]] - optional_arguments: ClassVar[Literal[0]] - final_argument_whitespace: ClassVar[Literal[True]] + required_arguments: ClassVar[int] + optional_arguments: ClassVar[int] + final_argument_whitespace: ClassVar[bool] class MetaBody(SpecializedBody): def __getattr__(self, name: str) -> Incomplete: ... class Meta(Directive): - has_content: ClassVar[Literal[True]] + has_content: ClassVar[bool] SMkwargs: ClassVar[dict[str, tuple[MetaBody]]] class Date(Directive): has_content: bool class TestDirective(Directive): - optional_arguments: ClassVar[Literal[1]] - final_argument_whitespace: ClassVar[Literal[True]] + optional_arguments: ClassVar[int] + final_argument_whitespace: ClassVar[bool] option_spec: dict[str, Callable[[str], Any]] - has_content: ClassVar[Literal[True]] + has_content: ClassVar[bool] From fc5e417be94268cad8a06e45648c8106ef40d2ad Mon Sep 17 00:00:00 2001 From: "daniel.eades" Date: Fri, 8 Mar 2024 17:22:42 +0000 Subject: [PATCH 5/8] fixup --- .../docutils/parsers/rst/directives/misc.pyi | 44 +++---------------- 1 file changed, 7 insertions(+), 37 deletions(-) diff --git a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi index 0b4a7b448930..d9637ec0928c 100644 --- a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi +++ b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi @@ -10,60 +10,30 @@ from docutils.parsers.rst.states import SpecializedBody __docformat__: str class Include(Directive): - required_arguments: ClassVar[int] - optional_arguments: ClassVar[int] - final_argument_whitespace: ClassVar[bool] - option_spec: dict[str, Callable[[str], Any]] standard_include_path: Path -class Raw(Directive): - required_arguments: ClassVar[int] - optional_arguments: ClassVar[int] - final_argument_whitespace: ClassVar[bool] - option_spec: dict[str, Callable[[str], Any]] - has_content: ClassVar[bool] +class Raw(Directive): ... -class Replace(Directive): - has_content: ClassVar[bool] +class Replace(Directive): ... class Unicode(Directive): - required_arguments: ClassVar[int] - optional_arguments: ClassVar[int] - final_argument_whitespace: ClassVar[bool] - option_spec: dict[str, Callable[[str], Any]] comment_pattern: Pattern[str] -class Class(Directive): - required_arguments: ClassVar[int] - optional_arguments: ClassVar[int] - final_argument_whitespace: ClassVar[bool] - has_content: ClassVar[bool] +class Class(Directive): ... class Role(Directive): - has_content: ClassVar[bool] argument_pattern: Pattern[str] -class DefaultRole(Directive): - optional_arguments: ClassVar[int] - final_argument_whitespace: ClassVar[bool] +class DefaultRole(Directive): ... -class Title(Directive): - required_arguments: ClassVar[int] - optional_arguments: ClassVar[int] - final_argument_whitespace: ClassVar[bool] +class Title(Directive): ... class MetaBody(SpecializedBody): def __getattr__(self, name: str) -> Incomplete: ... class Meta(Directive): - has_content: ClassVar[bool] SMkwargs: ClassVar[dict[str, tuple[MetaBody]]] -class Date(Directive): - has_content: bool +class Date(Directive): ... -class TestDirective(Directive): - optional_arguments: ClassVar[int] - final_argument_whitespace: ClassVar[bool] - option_spec: dict[str, Callable[[str], Any]] - has_content: ClassVar[bool] +class TestDirective(Directive): ... From f8fd8249554bb916f5ae6c0ccb9d74b939f2b5fb Mon Sep 17 00:00:00 2001 From: "daniel.eades" Date: Fri, 8 Mar 2024 17:37:03 +0000 Subject: [PATCH 6/8] fixup --- stubs/docutils/@tests/stubtest_allowlist.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/stubs/docutils/@tests/stubtest_allowlist.txt b/stubs/docutils/@tests/stubtest_allowlist.txt index e9625e22db9b..fbebc4225129 100644 --- a/stubs/docutils/@tests/stubtest_allowlist.txt +++ b/stubs/docutils/@tests/stubtest_allowlist.txt @@ -11,6 +11,7 @@ docutils.nodes.GenericNodeVisitor.__getattr__ # these methods take a rawsource parameter that has been deprecated and is completely ignored, so we omit it from the stub docutils.nodes.Text.__new__ docutils.parsers.recommonmark_wrapper +docutils.parsers.rst.directives.misc.MetaBody.__getattr__ docutils.transforms.Transform.__getattr__ docutils.transforms.Transformer.__getattr__ docutils.TransformSpec.unknown_reference_resolvers From 0c646ecf128a6e4cb2d2ea959d37b628e376cbf4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 8 Mar 2024 17:39:26 +0000 Subject: [PATCH 7/8] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/docutils/docutils/parsers/rst/directives/misc.pyi | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi index d9637ec0928c..e333f6c2a9b2 100644 --- a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi +++ b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi @@ -1,8 +1,7 @@ from _typeshed import Incomplete -from collections.abc import Callable from pathlib import Path from re import Pattern -from typing import Any, ClassVar +from typing import ClassVar from docutils.parsers.rst import Directive from docutils.parsers.rst.states import SpecializedBody @@ -13,7 +12,6 @@ class Include(Directive): standard_include_path: Path class Raw(Directive): ... - class Replace(Directive): ... class Unicode(Directive): @@ -25,7 +23,6 @@ class Role(Directive): argument_pattern: Pattern[str] class DefaultRole(Directive): ... - class Title(Directive): ... class MetaBody(SpecializedBody): @@ -35,5 +32,4 @@ class Meta(Directive): SMkwargs: ClassVar[dict[str, tuple[MetaBody]]] class Date(Directive): ... - class TestDirective(Directive): ... From 90470ac41bac7e95163c7cc7443ce41a4edf7c81 Mon Sep 17 00:00:00 2001 From: danieleades <33452915+danieleades@users.noreply.github.com> Date: Wed, 13 Mar 2024 05:47:33 +0000 Subject: [PATCH 8/8] Update stubs/docutils/docutils/parsers/rst/directives/misc.pyi Co-authored-by: Jelle Zijlstra --- stubs/docutils/docutils/parsers/rst/directives/misc.pyi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi index e333f6c2a9b2..037c268f097f 100644 --- a/stubs/docutils/docutils/parsers/rst/directives/misc.pyi +++ b/stubs/docutils/docutils/parsers/rst/directives/misc.pyi @@ -25,7 +25,8 @@ class Role(Directive): class DefaultRole(Directive): ... class Title(Directive): ... -class MetaBody(SpecializedBody): +# SpecializedBody has not yet been stubbed +class MetaBody(SpecializedBody): # pyright: ignore[reportUntypedBaseClass] def __getattr__(self, name: str) -> Incomplete: ... class Meta(Directive):