Skip to content

Commit

Permalink
Extract PIL and zipfile to python#10706
Browse files Browse the repository at this point in the history
  • Loading branch information
Avasam committed Sep 19, 2023
1 parent a27c72f commit 5a284d6
Show file tree
Hide file tree
Showing 10 changed files with 27 additions and 79 deletions.
6 changes: 2 additions & 4 deletions stubs/openpyxl/@tests/stubtest_allowlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,8 @@ openpyxl\.descriptors\.(base\.)?MinMax\.allow_none
openpyxl\.descriptors\.(base\.)?String\.allow_none
openpyxl\.descriptors\.(base\.)?Typed\.allow_none

# Inconsistent methods because
# - using the default value results in an error because of the runtime type-guards
# - or, keyword arguments are explicitly specified
# "has a default value but stub argument does not"
# Runtime has default arguments that would fail
openpyxl.cell.text.PhoneticProperties.__init__
openpyxl.cell.text.PhoneticText.__init__
openpyxl.chart.axis._BaseAxis.__init__
Expand Down Expand Up @@ -110,7 +109,6 @@ openpyxl.drawing.text.GeomGuide.__init__
openpyxl.drawing.text.PresetTextShape.__init__
openpyxl.drawing.text.TextField.__init__
openpyxl.drawing.text.TextNormalAutofit.__init__
openpyxl.packaging.relationship.get_rel
openpyxl.packaging.relationship.Relationship.__init__
openpyxl.packaging.workbook.ChildSheet.__init__
openpyxl.packaging.workbook.PivotCache.__init__
Expand Down
21 changes: 5 additions & 16 deletions stubs/openpyxl/openpyxl/drawing/image.pyi
Original file line number Diff line number Diff line change
@@ -1,20 +1,9 @@
from _typeshed import SupportsRead
from pathlib import Path
from types import ModuleType
from typing import Any
from typing_extensions import Literal, TypeAlias

# Is actually PIL.Image.Image
_PILImageImage: TypeAlias = Any
# same as first parameter of PIL.Image.open
_PILImageFilePath: TypeAlias = str | bytes | Path | SupportsRead[bytes]

PILImage: ModuleType | Literal[False]
from _typeshed import Incomplete

class Image:
anchor: str
ref: _PILImageImage | _PILImageFilePath
format: str
def __init__(self, img: _PILImageImage | _PILImageFilePath) -> None: ...
ref: Incomplete
format: Incomplete
def __init__(self, img) -> None: ...
@property
def path(self) -> str: ...
def path(self): ...
28 changes: 3 additions & 25 deletions stubs/openpyxl/openpyxl/packaging/relationship.pyi
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@
from _typeshed import Incomplete, Unused
from collections.abc import Generator
from typing import ClassVar, TypeVar, overload
from typing import ClassVar, overload
from typing_extensions import Literal
from zipfile import ZipFile

from openpyxl.descriptors.base import Alias, String
from openpyxl.descriptors.serialisable import Serialisable
from openpyxl.pivot.cache import CacheDefinition
from openpyxl.pivot.record import RecordList
from openpyxl.pivot.table import TableDefinition

_SerialisableT = TypeVar("_SerialisableT", bound=Serialisable)
_SerialisableRelTypeT = TypeVar("_SerialisableRelTypeT", bound=CacheDefinition | RecordList | TableDefinition)

class Relationship(Serialisable):
tagname: ClassVar[str]
Expand Down Expand Up @@ -44,20 +37,5 @@ class RelationshipList(Serialisable):
def to_tree(self): ...

def get_rels_path(path): ...
def get_dependents(archive: ZipFile, filename: str) -> RelationshipList: ...

# If `id` is None, `cls` needs to have ClassVar `rel_type`.
# The `deps` attribute used at runtime is for internal use immediatly after the return.
# `cls` cannot be None
@overload
def get_rel(
archive: ZipFile, deps: RelationshipList, id: None = None, *, cls: type[_SerialisableRelTypeT]
) -> _SerialisableRelTypeT | None: ...
@overload
def get_rel(
archive: ZipFile, deps: RelationshipList, id: None, cls: type[_SerialisableRelTypeT]
) -> _SerialisableRelTypeT | None: ...
@overload
def get_rel(archive: ZipFile, deps: RelationshipList, id: str, *, cls: type[_SerialisableT]) -> _SerialisableT: ...
@overload
def get_rel(archive: ZipFile, deps: RelationshipList, id: str, cls: type[_SerialisableT]) -> _SerialisableT: ...
def get_dependents(archive, filename): ...
def get_rel(archive, deps, id: Incomplete | None = None, cls: Incomplete | None = None): ...
7 changes: 1 addition & 6 deletions stubs/openpyxl/openpyxl/reader/drawings.pyi
Original file line number Diff line number Diff line change
@@ -1,6 +1 @@
from zipfile import ZipFile

from openpyxl.chart._chart import ChartBase
from openpyxl.drawing.image import Image

def find_images(archive: ZipFile, path: str) -> tuple[list[ChartBase], list[Image]]: ...
def find_images(archive, path): ...
7 changes: 3 additions & 4 deletions stubs/openpyxl/openpyxl/reader/excel.pyi
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from _typeshed import Incomplete, StrPath
from typing import IO
from _typeshed import Incomplete, StrPath, SupportsRead
from typing_extensions import Final, Literal, TypeAlias
from zipfile import ZipFile

Expand Down Expand Up @@ -27,7 +26,7 @@ class ExcelReader:

def __init__(
self,
fn: StrPath | IO[bytes],
fn: SupportsRead[bytes] | str,
read_only: bool = False,
keep_vba: bool = False,
data_only: bool = False,
Expand All @@ -45,7 +44,7 @@ class ExcelReader:
def read(self) -> None: ...

def load_workbook(
filename: StrPath | IO[bytes],
filename: SupportsRead[bytes] | StrPath,
read_only: bool = False,
keep_vba: bool = False,
data_only: bool = False,
Expand Down
6 changes: 3 additions & 3 deletions stubs/openpyxl/openpyxl/reader/workbook.pyi
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
from _typeshed import Incomplete
from collections.abc import Generator, Iterable
from zipfile import ZipFile

from openpyxl.packaging.relationship import Relationship, RelationshipList
from openpyxl.packaging.workbook import ChildSheet, PivotCache
from openpyxl.pivot.cache import CacheDefinition
from openpyxl.workbook import Workbook

class WorkbookParser:
archive: ZipFile
archive: Incomplete
workbook_part_name: str
wb: Workbook
keep_links: bool
sheets: list[ChildSheet]
def __init__(self, archive: ZipFile, workbook_part_name: str, keep_links: bool = True) -> None: ...
def __init__(self, archive, workbook_part_name: str, keep_links: bool = True) -> None: ...
@property
def rels(self) -> RelationshipList: ...
caches: Iterable[PivotCache]
Expand Down
8 changes: 2 additions & 6 deletions stubs/openpyxl/openpyxl/styles/stylesheet.pyi
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from _typeshed import Incomplete, Unused
from typing import ClassVar, TypeVar
from typing import ClassVar
from typing_extensions import Literal, Self
from zipfile import ZipFile

from openpyxl.descriptors.base import Typed
from openpyxl.descriptors.excel import ExtensionList
Expand All @@ -11,9 +10,6 @@ from openpyxl.styles.colors import ColorList
from openpyxl.styles.named_styles import _NamedCellStyleList
from openpyxl.styles.numbers import NumberFormatList
from openpyxl.styles.table import TableStyleList
from openpyxl.workbook.workbook import Workbook

_WorkbookT = TypeVar("_WorkbookT", bound=Workbook)

class Stylesheet(Serialisable):
tagname: ClassVar[str]
Expand Down Expand Up @@ -54,5 +50,5 @@ class Stylesheet(Serialisable):
def custom_formats(self): ...
def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None, namespace: str | None = None): ...

def apply_stylesheet(archive: ZipFile, wb: _WorkbookT) -> _WorkbookT | None: ...
def apply_stylesheet(archive, wb): ...
def write_stylesheet(wb): ...
3 changes: 1 addition & 2 deletions stubs/openpyxl/openpyxl/workbook/external_link/external.pyi
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from _typeshed import Incomplete, Unused
from typing import ClassVar
from typing_extensions import Literal, TypeAlias
from zipfile import ZipFile

from openpyxl.descriptors.base import Bool, Integer, NoneSet, String, Typed, _ConvertibleToBool, _ConvertibleToInt
from openpyxl.descriptors.nested import NestedText
Expand Down Expand Up @@ -77,4 +76,4 @@ class ExternalLink(Serialisable):
@property
def path(self): ...

def read_external_link(archive: ZipFile, book_path: str) -> ExternalLink: ...
def read_external_link(archive, book_path): ...
3 changes: 1 addition & 2 deletions stubs/openpyxl/openpyxl/workbook/workbook.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ from _typeshed import Incomplete, StrPath
from collections.abc import Iterator
from typing import IO
from typing_extensions import Final
from zipfile import ZipFile

from openpyxl import _Decodable
from openpyxl.chartsheet.chartsheet import Chartsheet
Expand All @@ -23,7 +22,7 @@ class Workbook:
security: Incomplete
shared_strings: Incomplete
loaded_theme: Incomplete
vba_archive: ZipFile | None
vba_archive: Incomplete
is_template: bool
code_name: Incomplete
encoding: str
Expand Down
17 changes: 6 additions & 11 deletions stubs/openpyxl/openpyxl/writer/excel.pyi
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
from _typeshed import StrPath
from typing import IO
from zipfile import ZipFile

from openpyxl.packaging.manifest import Manifest
from openpyxl.workbook.workbook import Workbook
from _typeshed import Incomplete

class ExcelWriter:
workbook: Workbook
manifest: Manifest
vba_modified: set[str | None]
def __init__(self, workbook: Workbook, archive: ZipFile) -> None: ...
workbook: Incomplete
manifest: Incomplete
vba_modified: Incomplete
def __init__(self, workbook, archive) -> None: ...
def write_data(self) -> None: ...
def write_worksheet(self, ws) -> None: ...
def save(self) -> None: ...

def save_workbook(workbook, filename: StrPath | IO[bytes]): ...
def save_workbook(workbook, filename): ...

0 comments on commit 5a284d6

Please sign in to comment.