1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
U
¬ý°dÕ ã@sºUddlmZddlmZmZmZmZmZmZm    Z    m
Z
m Z m Z ddl mZddlmZmZerˆddlmZeeZe deegefdZiZded    <d
d d œd d„ZdFddddœdd„Zdd
dœdd„Zdddœdd„Zdddœdd„Ze d dd!œd"d#„ƒZe d$d$d!œd%d#„ƒZe ddd!œd&d#„ƒZe d d d!œd'd#„ƒZd(d)d!œd*d#„Ze d+d,d-œd.d/„ƒZ e d d0d-œd1d/„ƒZ d2d3d-œd4d/„Z d5d6d7d8œd9d:„Z!d5d;d<d=œd>d?„Z"d@dAdAdBœdCdD„Z#dES)Gé)Ú annotations)
Ú TYPE_CHECKINGÚAnyÚCallableÚHashableÚIterableÚLiteralÚMutableMappingÚSequenceÚTypeVarÚoverload)Úimport_optional_dependency)Ú
is_integerÚ is_list_like)Ú ExcelWriterÚ usecols_func)Úboundz"MutableMapping[str, ExcelWriter_t]Ú_writersÚ ExcelWriter_tÚNone)ÚklassÚreturncCs"t|ƒstdƒ‚|j}|t|<dS)z°
    Add engine to the excel writer registry.io.excel.
 
    You must use this method to integrate with ``to_excel``.
 
    Parameters
    ----------
    klass : ExcelWriter
    z&Can only register callables as enginesN)ÚcallableÚ
ValueErrorZ_enginer)rÚ engine_name©rúLd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/io/excel/_util.pyÚregister_writer s
rÚreaderÚstrzLiteral[('reader', 'writer')])ÚextÚmodercCs^ddddddœ}dddddœ}|dks*t‚|dkrRtd    d
d }|rJd    |d <||S||Sd S)a
    Return the default reader/writer for the given extension.
 
    Parameters
    ----------
    ext : str
        The excel file extension for which to get the default engine.
    mode : str {'reader', 'writer'}
        Whether to get the default engine for reading or writing.
        Either 'reader' or 'writer'
 
    Returns
    -------
    str
        The default engine for the extension.
    ZopenpyxlZpyxlsbZxlrdZodf)ÚxlsxÚxlsmÚxlsbZxlsÚods)r"r#r$r%)rÚwriterr&Ú
xlsxwriterÚwarn)Úerrorsr"N)ÚAssertionErrorr )r r!Z_default_readersZ_default_writersr'rrrÚget_default_engine0s$ûü  r+)rrc
CsDz
t|WStk
r>}ztd|›dƒ|‚W5d}~XYnXdS)NzNo Excel writer 'ú')rÚKeyErrorr)rÚerrrrrÚ
get_writerYs
r/Úint)ÚxrcCsdd}| ¡ ¡D]J}t|ƒ}|tdƒks4|tdƒkrBtd|›ƒ‚|d|tdƒd}q|dS)ai
    Convert Excel column name like 'AB' to 0-based column index.
 
    Parameters
    ----------
    x : str
        The Excel column name to convert to a 0-based column index.
 
    Returns
    -------
    num : int
        The column index corresponding to the name.
 
    Raises
    ------
    ValueError
        Part of the Excel column name was invalid.
    rÚAÚZzInvalid column name: éé)ÚupperÚstripÚordr)r1ÚindexÚcÚcprrrÚ
_excel2num`sr<z    list[int])ÚareasrcCs^g}| d¡D]J}d|krJ| d¡}| tt|dƒt|dƒdƒ¡q| t|ƒ¡q|S)a”
    Convert comma separated list of column names and ranges to indices.
 
    Parameters
    ----------
    areas : str
        A string containing a sequence of column ranges (or areas).
 
    Returns
    -------
    cols : list
        A list of 0-based column indices.
 
    Examples
    --------
    >>> _range2cols('A:E')
    [0, 1, 2, 3, 4]
    >>> _range2cols('A,C,Z:AB')
    [0, 2, 25, 26, 27]
    ú,ú:rr5)ÚsplitÚextendÚranger<Úappend)r=ÚcolsÚrngZrngsrrrÚ _range2cols€s
&rFzstr | list[int])ÚusecolsrcCsdS©Nr©rGrrrÚmaybe_convert_usecols¡srJz    list[str]cCsdSrHrrIrrrrJ¦scCsdSrHrrIrrrrJ«scCsdSrHrrIrrrrJ°sz1str | list[int] | list[str] | usecols_func | Nonez+None | list[int] | list[str] | usecols_funccCs2|dkr |St|ƒrtdƒ‚t|tƒr.t|ƒS|S)a
    Convert `usecols` into a compatible format for parsing in `parsers.py`.
 
    Parameters
    ----------
    usecols : object
        The use-columns object to potentially convert.
 
    Returns
    -------
    converted : object
        The compatible format of `usecols`.
    Nz}Passing an integer for `usecols` is no longer supported.  Please pass in a list of int from 0 to `usecols` inclusive instead.)rrÚ
isinstancerrFrIrrrrJµsÿ
ztuple[int, int]z Literal[True])Ú freeze_panesrcCsdSrHr©rLrrrÚvalidate_freeze_panesÔsrNzLiteral[False]cCsdSrHrrMrrrrNÙsztuple[int, int] | NoneÚboolcCs6|dk    r2t|ƒdkr*tdd„|Dƒƒr*dStdƒ‚dS)Nécss|]}t|tƒVqdSrH)rKr0)Ú.0ÚitemrrrÚ    <genexpr>àsz(validate_freeze_panes.<locals>.<genexpr>TzLfreeze_panes must be of form (row, column) where row and column are integersF)ÚlenÚallrrMrrrrNÞsÿÿzlist[Hashable]z
list[bool]z!tuple[list[Hashable], list[bool]])ÚrowÚ control_rowrcCsf|d}tdt|ƒƒD]F}||s*||}||dksB||dkrL|||<qd||<||}q||fS)aç
    Forward fill blank entries in row but only inside the same parent index.
 
    Used for creating headers in Multiindex.
 
    Parameters
    ----------
    row : list
        List of items in a single row.
    control_row : list of bool
        Helps to determine if particular column is in same parent index as the
        previous value. Used to stop propagation of empty cells between
        different indexes.
 
    Returns
    -------
    Returns changed row and control_row
    rr5ÚNF)rBrT)rVrWÚlastÚirrrÚfill_mi_headerïs
 
r[zint | Sequence[int]z&tuple[Hashable | None, list[Hashable]])rVÚ    index_colrcCspt|ƒr t|tƒst‚t|ƒ}nt|tƒr.t‚|}||}|dkrFdn|}||d|…dg||dd…fS)a•
    Pop the header name for MultiIndex parsing.
 
    Parameters
    ----------
    row : list
        The data row to parse for the header name.
    index_col : int, list
        The index columns for our data. Assumed to be non-null.
 
    Returns
    -------
    header_name : str
        The extracted header name.
    trimmed_row : list
        The original data row with the header name removed.
    rXNr5)rrKrr*Úmax)rVr\rZÚ header_namerrrÚpop_header_names
r_zdict[str, Any] | NoneÚdict)Ú engine_kwargsÚkwargsrcCs$|dkri}n| ¡}| |¡|S)a
    Used to combine two sources of kwargs for the backend engine.
 
    Use of kwargs is deprecated, this function is solely for use in 1.3 and should
    be removed in 1.4/2.0. Also _base.ExcelWriter.__new__ ensures either engine_kwargs
    or kwargs must be None or empty respectively.
 
    Parameters
    ----------
    engine_kwargs: dict
        kwargs to be passed through to the engine.
    kwargs: dict
        kwargs to be psased through to the engine (deprecated)
 
    Returns
    -------
    engine_kwargs combined with kwargs
    N)ÚcopyÚupdate)rarbÚresultrrrÚcombine_kwargs4s
 
rfN)r)$Ú
__future__rÚtypingrrrrrrr    r
r r Zpandas.compat._optionalr Zpandas.core.dtypes.commonrrZpandas.io.excel._baserÚtyperÚobjectrrÚ__annotations__rr+r/r<rFrJrNr[r_rfrrrrÚ<module>s> 0   ) !#"