Skip to content

Commit cb2580c

Browse files
committed
Add stubs for xlrd
1 parent b943f31 commit cb2580c

12 files changed

+835
-0
lines changed

pyrightconfig.stricter.json

+1
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
"stubs/vobject",
9898
"stubs/workalendar",
9999
"stubs/wurlitzer",
100+
"stubs/xlrd",
100101
],
101102
"typeCheckingMode": "strict",
102103
// TODO: Complete incomplete stubs

stubs/xlrd/METADATA.toml

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
version = "2.0.*"
2+
upstream_repository = "https://github.com/python-excel/xlrd"

stubs/xlrd/xlrd/__init__.pyi

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import sys
2+
from _typeshed import SupportsWrite
3+
4+
from . import timemachine as timemachine
5+
from .biffh import (
6+
XL_CELL_BLANK as XL_CELL_BLANK,
7+
XL_CELL_BOOLEAN as XL_CELL_BOOLEAN,
8+
XL_CELL_DATE as XL_CELL_DATE,
9+
XL_CELL_EMPTY as XL_CELL_EMPTY,
10+
XL_CELL_ERROR as XL_CELL_ERROR,
11+
XL_CELL_NUMBER as XL_CELL_NUMBER,
12+
XL_CELL_TEXT as XL_CELL_TEXT,
13+
biff_text_from_num as biff_text_from_num,
14+
error_text_from_code as error_text_from_code,
15+
)
16+
from .book import Book as Book, colname as colname, open_workbook_xls as open_workbook_xls
17+
from .formula import *
18+
from .info import __VERSION__ as __VERSION__, __version__ as __version__
19+
from .sheet import empty_cell as empty_cell
20+
from .xldate import XLDateError as XLDateError, xldate_as_datetime as xldate_as_datetime, xldate_as_tuple as xldate_as_tuple
21+
22+
FILE_FORMAT_DESCRIPTIONS: dict[str, str]
23+
ZIP_SIGNATURE: bytes
24+
PEEK_SIZE: int
25+
26+
def inspect_format(path: str | None = None, content: bytes | None = None) -> str | None: ...
27+
def open_workbook(
28+
filename: str | None = None,
29+
logfile: SupportsWrite[str] = sys.stdout,
30+
verbosity: int = 0,
31+
use_mmap: bool = True,
32+
file_contents: bytes | None = None,
33+
encoding_override: str | None = None,
34+
formatting_info: bool = False,
35+
on_demand: bool = False,
36+
ragged_rows: bool = False,
37+
ignore_workbook_corruption: bool = False,
38+
) -> Book: ...
39+
def dump(filename: str, outfile: SupportsWrite[str] = sys.stdout, unnumbered: bool = False) -> None: ...
40+
def count_records(filename: str, outfile: SupportsWrite[str] = sys.stdout) -> None: ...

stubs/xlrd/xlrd/biffh.pyi

+179
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
import sys
2+
from collections.abc import Callable
3+
from typing import Any, Protocol, TextIO
4+
5+
from .timemachine import *
6+
7+
DEBUG: int
8+
9+
class HasAttrs(Protocol):
10+
def __setattr__(self, name: str, value: Any) -> None: ...
11+
12+
class XLRDError(Exception): ...
13+
14+
class BaseObject:
15+
_repr_these: list[str]
16+
def dump(self, f: TextIO | None = None, header: str | None = None, footer: str | None = None, indent: int = 0) -> None: ...
17+
18+
FUN: int
19+
FDT: int
20+
FNU: int
21+
FGE: int
22+
FTX: int
23+
DATEFORMAT = FDT
24+
NUMBERFORMAT = FNU
25+
XL_CELL_EMPTY: int
26+
XL_CELL_TEXT: int
27+
XL_CELL_NUMBER: int
28+
XL_CELL_DATE: int
29+
XL_CELL_BOOLEAN: int
30+
XL_CELL_ERROR: int
31+
XL_CELL_BLANK: int
32+
biff_text_from_num: dict[int, str]
33+
error_text_from_code: dict[int, str]
34+
BIFF_FIRST_UNICODE: int
35+
XL_WORKBOOK_GLOBALS: int
36+
WBKBLOBAL: int
37+
XL_WORKBOOK_GLOBALS_4W: int
38+
XL_WORKSHEET: int
39+
WRKSHEET: int
40+
XL_BOUNDSHEET_WORKSHEET: int
41+
XL_BOUNDSHEET_CHART: int
42+
XL_BOUNDSHEET_VB_MODULE: int
43+
XL_ARRAY: int
44+
XL_ARRAY2: int
45+
XL_BLANK: int
46+
XL_BLANK_B2: int
47+
XL_BOF: int
48+
XL_BOOLERR: int
49+
XL_BOOLERR_B2: int
50+
XL_BOUNDSHEET: int
51+
XL_BUILTINFMTCOUNT: int
52+
XL_CF: int
53+
XL_CODEPAGE: int
54+
XL_COLINFO: int
55+
XL_COLUMNDEFAULT: int
56+
XL_COLWIDTH: int
57+
XL_CONDFMT: int
58+
XL_CONTINUE: int
59+
XL_COUNTRY: int
60+
XL_DATEMODE: int
61+
XL_DEFAULTROWHEIGHT: int
62+
XL_DEFCOLWIDTH: int
63+
XL_DIMENSION: int
64+
XL_DIMENSION2: int
65+
XL_EFONT: int
66+
XL_EOF: int
67+
XL_EXTERNNAME: int
68+
XL_EXTERNSHEET: int
69+
XL_EXTSST: int
70+
XL_FEAT11: int
71+
XL_FILEPASS: int
72+
XL_FONT: int
73+
XL_FONT_B3B4: int
74+
XL_FORMAT: int
75+
XL_FORMAT2: int
76+
XL_FORMULA: int
77+
XL_FORMULA3: int
78+
XL_FORMULA4: int
79+
XL_GCW: int
80+
XL_HLINK: int
81+
XL_QUICKTIP: int
82+
XL_HORIZONTALPAGEBREAKS: int
83+
XL_INDEX: int
84+
XL_INTEGER: int
85+
XL_IXFE: int
86+
XL_LABEL: int
87+
XL_LABEL_B2: int
88+
XL_LABELRANGES: int
89+
XL_LABELSST: int
90+
XL_LEFTMARGIN: int
91+
XL_TOPMARGIN: int
92+
XL_RIGHTMARGIN: int
93+
XL_BOTTOMMARGIN: int
94+
XL_HEADER: int
95+
XL_FOOTER: int
96+
XL_HCENTER: int
97+
XL_VCENTER: int
98+
XL_MERGEDCELLS: int
99+
XL_MSO_DRAWING: int
100+
XL_MSO_DRAWING_GROUP: int
101+
XL_MSO_DRAWING_SELECTION: int
102+
XL_MULRK: int
103+
XL_MULBLANK: int
104+
XL_NAME: int
105+
XL_NOTE: int
106+
XL_NUMBER: int
107+
XL_NUMBER_B2: int
108+
XL_OBJ: int
109+
XL_PAGESETUP: int
110+
XL_PALETTE: int
111+
XL_PANE: int
112+
XL_PRINTGRIDLINES: int
113+
XL_PRINTHEADERS: int
114+
XL_RK: int
115+
XL_ROW: int
116+
XL_ROW_B2: int
117+
XL_RSTRING: int
118+
XL_SCL: int
119+
XL_SHEETHDR: int
120+
XL_SHEETPR: int
121+
XL_SHEETSOFFSET: int
122+
XL_SHRFMLA: int
123+
XL_SST: int
124+
XL_STANDARDWIDTH: int
125+
XL_STRING: int
126+
XL_STRING_B2: int
127+
XL_STYLE: int
128+
XL_SUPBOOK: int
129+
XL_TABLEOP: int
130+
XL_TABLEOP2: int
131+
XL_TABLEOP_B2: int
132+
XL_TXO: int
133+
XL_UNCALCED: int
134+
XL_UNKNOWN: int
135+
XL_VERTICALPAGEBREAKS: int
136+
XL_WINDOW2: int
137+
XL_WINDOW2_B2: int
138+
XL_WRITEACCESS: int
139+
XL_WSBOOL = XL_SHEETPR
140+
XL_XF: int
141+
XL_XF2: int
142+
XL_XF3: int
143+
XL_XF4: int
144+
boflen: dict[int, int]
145+
bofcodes: tuple[int, int, int, int]
146+
XL_FORMULA_OPCODES: tuple[int, int, int]
147+
148+
def is_cell_opcode(c: int) -> bool: ...
149+
def upkbits(
150+
tgt_obj: HasAttrs, src: int, manifest: list[tuple[int, int, str]], local_setattr: Callable[[Any, str, Any], None] = ...
151+
) -> None: ...
152+
def upkbitsL(
153+
tgt_obj: HasAttrs,
154+
src: int,
155+
manifest: list[tuple[int, int, str]],
156+
local_setattr: Callable[[Any, str, Any], None] = ...,
157+
local_int: Callable[[Any], int] = ...,
158+
) -> None: ...
159+
def unpack_string(data: bytes, pos: int, encoding: str, lenlen: int = 1) -> str: ...
160+
def unpack_string_update_pos(
161+
data: bytes, pos: int, encoding: str, lenlen: int = 1, known_len: int | None = None
162+
) -> tuple[str, int]: ...
163+
def unpack_unicode(data: bytes, pos: int, lenlen: int = 2) -> str: ...
164+
def unpack_unicode_update_pos(data: bytes, pos: int, lenlen: int = 2, known_len: int | None = None) -> tuple[str, int]: ...
165+
def unpack_cell_range_address_list_update_pos(
166+
output_list: list[tuple[int, int, int, int]], data: bytes, pos: int, biff_version: int, addr_size: int = 6
167+
) -> int: ...
168+
169+
biff_rec_name_dict: dict[int, str]
170+
171+
def hex_char_dump(
172+
strg: bytes, ofs: int, dlen: int, base: int = 0, fout: TextIO = sys.stdout, unnumbered: bool = False
173+
) -> None: ...
174+
def biff_dump(
175+
mem: bytes, stream_offset: int, stream_len: int, base: int = 0, fout: TextIO = sys.stdout, unnumbered: bool = False
176+
) -> None: ...
177+
def biff_count_records(mem: bytes, stream_offset: int, stream_len: int, fout: TextIO = sys.stdout) -> None: ...
178+
179+
encoding_from_codepage: dict[int, str]

stubs/xlrd/xlrd/book.pyi

+152
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
import sys
2+
from _typeshed import SupportsWrite
3+
from collections.abc import Iterator
4+
from types import TracebackType
5+
from typing import Literal
6+
from typing_extensions import Self
7+
8+
from . import formatting, sheet
9+
from .biffh import *
10+
from .formula import *
11+
from .timemachine import *
12+
13+
empty_cell: sheet.Cell
14+
DEBUG: int
15+
MY_EOF: int
16+
SUPBOOK_UNK: int
17+
SUPBOOK_INTERNAL: int
18+
SUPBOOK_EXTERNAL: int
19+
SUPBOOK_ADDIN: int
20+
SUPBOOK_DDEOLE: int
21+
SUPPORTED_VERSIONS: tuple[int, ...]
22+
builtin_name_from_code: dict[str, str]
23+
code_from_builtin_name: dict[str, str]
24+
25+
def open_workbook_xls(
26+
filename: str | None = None,
27+
logfile: SupportsWrite[str] = sys.stdout,
28+
verbosity: int = 0,
29+
use_mmap: bool = True,
30+
file_contents: bytes | None = None,
31+
encoding_override: str | None = None,
32+
formatting_info: bool = False,
33+
on_demand: bool = False,
34+
ragged_rows: bool = False,
35+
ignore_workbook_corruption: bool = False,
36+
) -> Book: ...
37+
38+
class Name(BaseObject):
39+
_repr_these: list[str]
40+
book: Book | None = None
41+
hidden: Literal[0, 1]
42+
func: Literal[0, 1]
43+
vbasic: Literal[0, 1]
44+
macro: Literal[0, 1]
45+
complex: Literal[0, 1]
46+
builtin: Literal[0, 1]
47+
funcgroup: Literal[0, 1]
48+
binary: Literal[0, 1]
49+
name_index: int
50+
name: str
51+
raw_formula: bytes
52+
scope: Literal[-1, -2, -3, 0]
53+
result: Operand | None
54+
def cell(self) -> sheet.Cell: ...
55+
def area2d(self, clipped: bool = True) -> tuple[sheet.Sheet, int, int, int, int]: ...
56+
57+
class Book(BaseObject):
58+
nsheets: int
59+
datemode: Literal[0, 1]
60+
biff_version: int
61+
name_obj_list: list[Name]
62+
codepage: int | None
63+
encoding: str | None
64+
countries: tuple[int, int]
65+
user_name: str
66+
font_list: list[formatting.Font]
67+
xf_list: list[formatting.XF]
68+
format_list: list[formatting.Format]
69+
format_map: dict[int, formatting.Format]
70+
style_name_map: dict[str, tuple[int, int]]
71+
colour_map: dict[int, tuple[int, int, int] | None]
72+
palette_record: list[tuple[int, int, int]]
73+
load_time_stage_1: float
74+
load_time_stage_2: float
75+
def sheets(self) -> list[sheet.Sheet]: ...
76+
def sheet_by_index(self, sheetx: int) -> sheet.Sheet: ...
77+
def __iter__(self) -> Iterator[sheet.Sheet]: ...
78+
def sheet_by_name(self, sheet_name: str) -> sheet.Sheet: ...
79+
def __getitem__(self, item: int | str) -> sheet.Sheet: ...
80+
def sheet_names(self) -> list[str]: ...
81+
def sheet_loaded(self, sheet_name_or_index: int | str) -> bool: ...
82+
def unload_sheet(self, sheet_name_or_index: int | str) -> None: ...
83+
mem: bytes | None = None
84+
filestr: bytes | None = None
85+
def release_resources(self) -> None: ...
86+
def __enter__(self) -> Self: ...
87+
def __exit__(
88+
self, exc_type: type[BaseException] | None, exc_value: BaseException | None, exc_tb: TracebackType | None
89+
) -> None: ...
90+
name_and_scope_map: dict[tuple[str, int], Name]
91+
name_map: dict[str, list[Name]]
92+
raw_user_name: bool
93+
builtinfmtcount: int
94+
addin_func_names: list[str]
95+
def __init__(self) -> None: ...
96+
logfile: SupportsWrite[str]
97+
verbosity: int
98+
use_mmap: bool
99+
encoding_override: str | None
100+
formatting_info: bool
101+
on_demand: bool
102+
ragged_rows: bool
103+
stream_len: int
104+
base: int
105+
def biff2_8_load(
106+
self,
107+
filename: str | None = None,
108+
file_contents: bytes | None = None,
109+
logfile: SupportsWrite[str] = sys.stdout,
110+
verbosity: int = 0,
111+
use_mmap: bool = True,
112+
encoding_override: str | None = None,
113+
formatting_info: bool = False,
114+
on_demand: bool = False,
115+
ragged_rows: bool = False,
116+
ignore_workbook_corruption: bool = False,
117+
) -> None: ...
118+
xfcount: int
119+
actualfmtcount: int
120+
def initialise_format_info(self) -> None: ...
121+
def get2bytes(self) -> int: ...
122+
def get_record_parts(self) -> tuple[int, int, bytes]: ...
123+
def get_record_parts_conditional(self, reqd_record: int) -> tuple[int | None, int, bytes]: ...
124+
def get_sheet(self, sh_number: int, update_pos: bool = True) -> sheet.Sheet: ...
125+
def get_sheets(self) -> None: ...
126+
def fake_globals_get_sheet(self) -> None: ...
127+
def handle_boundsheet(self, data: bytes) -> None: ...
128+
def handle_builtinfmtcount(self, data: bytes) -> None: ...
129+
def derive_encoding(self) -> str: ...
130+
def handle_codepage(self, data: bytes) -> None: ...
131+
def handle_country(self, data: bytes) -> None: ...
132+
def handle_datemode(self, data: bytes) -> None: ...
133+
def handle_externname(self, data: bytes) -> None: ...
134+
def handle_externsheet(self, data: bytes) -> None: ...
135+
def handle_filepass(self, data: bytes) -> None: ...
136+
def handle_name(self, data: bytes) -> None: ...
137+
def names_epilogue(self) -> None: ...
138+
def handle_obj(self, data: bytes) -> None: ...
139+
def handle_supbook(self, data: bytes) -> None: ...
140+
def handle_sheethdr(self, data: bytes) -> None: ...
141+
def handle_sheetsoffset(self, data: bytes) -> None: ...
142+
def handle_sst(self, data) -> None: ...
143+
def handle_writeaccess(self, data) -> None: ...
144+
def parse_globals(self) -> None: ...
145+
def read(self, pos: int, length: int) -> bytes: ...
146+
def getbof(self, rqd_stream: int) -> int | None: ...
147+
148+
# Helper functions
149+
def expand_cell_address(inrow: int, incol: int) -> tuple[int, int, int, int]: ...
150+
def colname(colx: int) -> str: ...
151+
def display_cell_address(rowx: int, colx: int, relrow: int, relcol: int) -> str: ...
152+
def unpack_SST_table(datatab: list[bytes], nstrings: int) -> tuple[list[str], dict[int, list[tuple[int, int]]]]: ...

0 commit comments

Comments
 (0)