Skip to content

Commit 5f12eeb

Browse files
authored
openpyxl: type to_tree methods (#10967)
1 parent 3a036b6 commit 5f12eeb

29 files changed

Lines changed: 108 additions & 44 deletions

stubs/openpyxl/@tests/stubtest_allowlist.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ openpyxl.drawing.text.PresetTextShape.__init__
111111
openpyxl.drawing.text.TextField.__init__
112112
openpyxl.drawing.text.TextNormalAutofit.__init__
113113
openpyxl.formatting.rule.DataBar.__init__
114+
openpyxl.packaging.core.QualifiedDateTime.to_tree
114115
openpyxl.packaging.relationship.get_rel
115116
openpyxl.packaging.relationship.Relationship.__init__
116117
openpyxl.packaging.workbook.ChildSheet.__init__

stubs/openpyxl/openpyxl/chart/_chart.pyi

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ from openpyxl.chart.shapes import GraphicalProperties
88
from openpyxl.chart.title import TitleDescriptor
99
from openpyxl.descriptors.base import Alias, Bool, Integer, MinMax, Set, Typed
1010
from openpyxl.descriptors.serialisable import Serialisable
11+
from openpyxl.xml.functions import Element
1112

1213
_ChartBaseDisplayBlanks: TypeAlias = Literal["span", "gap", "zero"]
1314

@@ -41,7 +42,8 @@ class ChartBase(Serialisable):
4142
def __init__(self, axId=(), **kw: Unused) -> None: ...
4243
def __hash__(self) -> int: ...
4344
def __iadd__(self, other): ...
44-
def to_tree(self, namespace: str | None = None, tagname: str | None = None, idx: Incomplete | None = None): ... # type: ignore[override]
45+
# namespace is in the wrong order to respect the override. This is an issue in openpyxl itself
46+
def to_tree(self, namespace: Unused = None, tagname: str | None = None, idx: Unused = None) -> Element: ... # type: ignore[override]
4547
def set_categories(self, labels) -> None: ...
4648
def add_data(self, data, from_rows: bool = False, titles_from_data: bool = False) -> None: ...
4749
def append(self, value) -> None: ...

stubs/openpyxl/openpyxl/chart/chartspace.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ from openpyxl.descriptors.excel import ExtensionList
1515
from openpyxl.descriptors.nested import NestedBool, NestedMinMax, NestedNoneSet, NestedString, _NestedNoneSetParam
1616
from openpyxl.descriptors.serialisable import Serialisable
1717
from openpyxl.drawing.colors import ColorMapping
18+
from openpyxl.xml.functions import Element
1819

1920
from ..xml._functions_overloads import _HasTagAndGet
2021

@@ -140,4 +141,4 @@ class ChartSpace(Serialisable):
140141
userShapes: Incomplete | None = None,
141142
extLst: Unused = None,
142143
) -> None: ...
143-
def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: str | None = None): ...
144+
def to_tree(self, tagname: Unused = None, idx: Unused = None, namespace: Unused = None) -> Element: ...

stubs/openpyxl/openpyxl/chart/plotarea.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool
99
from openpyxl.descriptors.excel import ExtensionList
1010
from openpyxl.descriptors.nested import NestedBool
1111
from openpyxl.descriptors.serialisable import Serialisable, _ChildSerialisableTreeElement
12+
from openpyxl.xml.functions import Element
1213

1314
from ..xml._functions_overloads import _HasTagAndGet
1415

@@ -71,6 +72,6 @@ class PlotArea(Serialisable):
7172
_axes=(),
7273
extLst: Unused = None,
7374
) -> None: ...
74-
def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None, namespace: str | None = None): ...
75+
def to_tree(self, tagname: str | None = None, idx: Unused = None, namespace: Unused = None) -> Element: ...
7576
@classmethod
7677
def from_tree(cls, node: _ChildSerialisableTreeElement) -> Self: ...

stubs/openpyxl/openpyxl/chart/series.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool
1313
from openpyxl.descriptors.excel import ExtensionList
1414
from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedNoneSet, NestedText, _NestedNoneSetParam
1515
from openpyxl.descriptors.serialisable import Serialisable
16+
from openpyxl.xml.functions import Element
1617

1718
from ..xml._functions_overloads import _HasTagAndGet
1819

@@ -82,7 +83,7 @@ class Series(Serialisable):
8283
explosion: _HasTagAndGet[ConvertibleToInt | None] | ConvertibleToInt | None = None,
8384
extLst: Unused = None,
8485
) -> None: ...
85-
def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None): ... # type: ignore[override]
86+
def to_tree(self, tagname: str | None = None, idx: _HasTagAndGet[ConvertibleToInt] | ConvertibleToInt | None = None) -> Element: ... # type: ignore[override]
8687

8788
class XYSeries(Series):
8889
# Same as parent

stubs/openpyxl/openpyxl/chart/text.pyi

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
from _typeshed import Incomplete
1+
from _typeshed import Incomplete, Unused
22
from typing import ClassVar
33
from typing_extensions import Literal
44

55
from openpyxl.chart.data_source import StrRef
66
from openpyxl.descriptors.base import Alias, Typed
77
from openpyxl.descriptors.serialisable import Serialisable
88
from openpyxl.drawing.text import ListStyle, RichTextProperties
9+
from openpyxl.xml.functions import Element
910

1011
class RichText(Serialisable):
1112
tagname: ClassVar[str]
@@ -25,4 +26,4 @@ class Text(Serialisable):
2526
rich: Typed[RichText, Literal[True]]
2627
__elements__: ClassVar[tuple[str, ...]]
2728
def __init__(self, strRef: StrRef | None = None, rich: RichText | None = None) -> None: ...
28-
def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None, namespace: str | None = None): ...
29+
def to_tree(self, tagname: str | None = None, idx: Unused = None, namespace: str | None = None) -> Element: ...

stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ from openpyxl.workbook.child import _WorkbookChild
1616
from openpyxl.worksheet.drawing import Drawing
1717
from openpyxl.worksheet.header_footer import HeaderFooter as _HeaderFooter
1818
from openpyxl.worksheet.page import PageMargins, PrintPageSetup
19+
from openpyxl.xml.functions import Element
1920

2021
class Chartsheet(_WorkbookChild, Serialisable):
2122
tagname: ClassVar[str]
@@ -55,4 +56,4 @@ class Chartsheet(_WorkbookChild, Serialisable):
5556
sheet_state: _VisibilityType = "visible",
5657
) -> None: ...
5758
def add_chart(self, chart) -> None: ...
58-
def to_tree(self): ...
59+
def to_tree(self) -> Element: ... # type:ignore[override]

stubs/openpyxl/openpyxl/comments/comment_sheet.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ from openpyxl.descriptors.base import Bool, Integer, Set, String, Typed, _Conver
1010
from openpyxl.descriptors.excel import ExtensionList
1111
from openpyxl.descriptors.serialisable import Serialisable
1212
from openpyxl.worksheet.ole import ObjectAnchor
13+
from openpyxl.xml.functions import Element
1314

1415
_PropertiesTextHAlign: TypeAlias = Literal["left", "center", "right", "justify", "distributed"]
1516
_PropertiesTextVAlign: TypeAlias = Literal["top", "center", "bottom", "justify", "distributed"]
@@ -112,7 +113,7 @@ class CommentSheet(Serialisable):
112113
mime_type: str
113114
__elements__: ClassVar[tuple[str, ...]]
114115
def __init__(self, authors: AuthorList, commentList: Incomplete | None = None, extLst: Unused = None) -> None: ...
115-
def to_tree(self): ...
116+
def to_tree(self) -> Element: ... # type: ignore[override]
116117
@property
117118
def comments(self) -> Generator[tuple[str, Comment], None, None]: ...
118119
@classmethod

stubs/openpyxl/openpyxl/compat/strings.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ from typing_extensions import Final
33

44
VER: Final[sys._version_info]
55

6-
def safe_string(value): ...
6+
def safe_string(value: object) -> str: ...
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
def namespaced(obj, tagname, namespace: str | None = None): ...
1+
# 'None' shouldn't be a valid tagname and namespaced should always return str
2+
def namespaced(obj: object, tagname: str, namespace: str | None = None) -> str: ...

0 commit comments

Comments
 (0)