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
Ë
nñúh¹%ãóP—dZddlmZddlZddlmZddlZddlm    Z    ddl
m Z ddl m Z ddlmZmZmZmZmZerdd    lmZmZmZdd
lmZmZdd lmZmZmZmZd Z                         dd „Z!dde df                                            dd„Z"de f                            dd„Z#de df                                    dd„Z$de df                                    dd„Z%y)z"
data hash pandas / numpy objects
é)Ú annotationsN)Ú TYPE_CHECKING)Úhash_object_array)Ú is_list_like)ÚCategoricalDtype)Ú ABCDataFrameÚABCExtensionArrayÚABCIndexÚ ABCMultiIndexÚ    ABCSeries)ÚHashableÚIterableÚIterator)Ú    ArrayLikeÚnpt)Ú    DataFrameÚIndexÚ
MultiIndexÚSeriesÚ0123456789123456có
—    t|«}t j |g|«}tjd«}tj|«tjd«z}d}t|«D]4\}}||z
}||z}||z}|tjd|z|z«z }|}Œ6|dz|k(sJd«‚|tjd«z }|S#t$r(tjgtj¬«cYSwxYw)    z¼
    Parameters
    ----------
    arrays : Iterator[np.ndarray]
    num_items : int
 
    Returns
    -------
    np.ndarray[uint64]
 
    Should be the same as CPython's tupleobject.c
    )ÚdtypeiCBixV4riXBézFed in wrong num_itemsiû|)    ÚnextÚ StopIterationÚnpÚarrayÚuint64Ú    itertoolsÚchainÚ
zeros_likeÚ    enumerate)    ÚarraysÚ    num_itemsÚfirstÚmultÚoutÚlast_iÚiÚaÚ    inverse_is             úKH:\Change_password\venv_build\Lib\site-packages\pandas/core/util/hashing.pyÚcombine_hash_arraysr-/s€ð-ܐV“ ˆô_‰_˜e˜W fÓ -€Fä 9‰9WÓ €DÜ
-‰-˜Ó
¤§¡¨8Ó!4Ñ
4€CØ €Fܘ&Ó!ò‰ˆˆ1Ø ‘Mˆ    Ø ˆq‰ˆØ ˆt‰ ˆØ ”—    ‘    ˜% )Ñ+¨iÑ7Ó8Ñ8ˆØ‰ð ð A‰:˜Ò "Ð<Ð$<Ó<Ð "ØŒ29‰9UÓ Ñ€CØ €Jøô! ò-܏x‰x˜¤"§)¡)Ô,Ò,ð-ús‚ CÃ.DÄDTÚutf8cóf‡‡‡‡—ddlm}‰€tŠt‰t«r|t ‰‰‰«dd¬«St‰t «r7t‰j‰‰‰«jdd¬«}||‰dd¬«}|St‰t«rtt‰j‰‰‰«jdd¬«}|r1ˆˆˆˆfd„d    D«}tj|g|«}    t|    d
«}||‰jdd¬«}|St‰t«rˆˆˆˆfd „‰j!«D«}
t#‰j$«} |r2ˆˆˆˆfd „d    D«} | d z } tj|
| «} d„| D«}
t|
| «}||‰jdd¬«}|St'dt)‰«›«‚)a>
    Return a data hash of the Index/Series/DataFrame.
 
    Parameters
    ----------
    obj : Index, Series, or DataFrame
    index : bool, default True
        Include the index in the hash (if Series/DataFrame).
    encoding : str, default 'utf8'
        Encoding for data & key when strings.
    hash_key : str, default _default_hash_key
        Hash_key for string key to encode.
    categorize : bool, default True
        Whether to first categorize object arrays before hashing. This is more
        efficient when the array contains duplicate values.
 
    Returns
    -------
    Series of uint64, same length as the object
 
    Examples
    --------
    >>> pd.util.hash_pandas_object(pd.Series([1, 2, 3]))
    0    14639053686158035780
    1     3869563279212530728
    2      393322362522515241
    dtype: uint64
    r)rrF)rÚcopy©r0)Úindexrr0c3óf•K—|](}t‰jd‰‰‰¬«j–—Œ*y­w©F)r2ÚencodingÚhash_keyÚ
categorizeN©Úhash_pandas_objectr2Ú_values©Ú.0Ú_r7r5r6Úobjs  €€€€r,ú    <genexpr>z%hash_pandas_object.<locals>.<genexpr>‰s?øèø€ò    ðô#Ø—I‘IØØ%Ø%Ø)ô ÷ ‘'ó ñ    ùóƒ.1©Néc3óT•K—|]\}}t|j‰‰‰«–—Œ!y­wrA)Ú
hash_arrayr:)r<r=Úseriesr7r5r6s   €€€r,r?z%hash_pandas_object.<locals>.<genexpr>™s,øèø€ò
ᐐ6ô v—~‘~ x°¸:× Fñ
ùsƒ%(c3óf•K—|](}t‰jd‰‰‰¬«j–—Œ*y­wr4r8r;s  €€€€r,r?z%hash_pandas_object.<locals>.<genexpr>Ÿs?øèø€ò    $ðô#Ø—I‘IØØ%Ø%Ø)ô ÷ ‘'ó ñ    $ùr@rc3ó K—|]}|–—Œy­wrA©)r<Úxs  r,r?z%hash_pandas_object.<locals>.<genexpr>­sèø€Ò)˜A”aÑ)ùs‚ zUnexpected type for hashing )ÚpandasrÚ_default_hash_keyÚ
isinstancer Ú hash_tuplesr
rDr:Úastyper rr r-r2rÚitemsÚlenÚcolumnsÚ    TypeErrorÚtype)r>r2r5r6r7rÚhÚserÚ
index_iterr#Úhashesr$Úindex_hash_generatorÚ_hashess` ```         r,r9r9Ss»û€õFàÐÜ$ˆä#”}Ô%Ù”k # x°Ó:À(ÐQVÔWÐWä    CœÔ    "Ü s—{‘{ H¨h¸
Ó C× JÑ JØ ˜5ð Kó
ˆñQ˜c¨¸Ô>ˆðd €Jôa
CœÔ    #Ü s—{‘{ H¨h¸
Ó C× JÑ JØ ˜5ð Kó
ˆñ ö    ð ô    ˆJô—_‘_ a S¨*Ó5ˆFÜ# F¨AÓ.ˆAáQ˜cŸi™i¨x¸eÔDˆð< €Jô9
CœÔ    &õ
à ŸY™Y›[ô
ˆô˜Ÿ ™ Ó$ˆ    Ù ö    $ð ô    $Ð  ð ˜‰NˆIô —o‘o fÐ.BÓCˆGÙ) Ô)ˆFÜ  ¨    Ó 2ˆáQ˜cŸi™i¨x¸eÔDˆð €JôÐ6´t¸C³y°kÐBÓCÐCóc
󊇇—t|«s td«‚ddlm}m}t |t «s|j|«}n|}t|j«Dcgc]9}|j|j|t|j|d¬««‘Œ;}}ˆˆfd„|D«}t|t|««}    |    Scc}w)a
    Hash an MultiIndex / listlike-of-tuples efficiently.
 
    Parameters
    ----------
    vals : MultiIndex or listlike-of-tuples
    encoding : str, default 'utf8'
    hash_key : str, default _default_hash_key
 
    Returns
    -------
    ndarray[np.uint64] of hashed values
    z'must be convertible to a list-of-tuplesr)Ú CategoricalrF©Ú
categoriesÚorderedc3óF•K—|]}|j‰‰d¬«–—Œy­w)F©r5r6r7N)Ú_hash_pandas_object)r<Úcatr5r6s  €€r,r?zhash_tuples.<locals>.<genexpr>às,øèø€òà ð     ×Ѩ¸HÐQVÐ×Wñùsƒ!)rrRrJr\rrLr Ú from_tuplesÚrangeÚnlevelsÚ _simple_newÚcodesrÚlevelsr-rP)
Úvalsr5r6r\rÚmiÚlevelÚcat_valsrWrTs
 ``       r,rMrM·s¿ù€ô$ ˜Ô ÜÐAÓBÐB÷ô
dœMÔ *Ø #ˆZ× #Ñ # DÓ )‰à ˆô˜2Ÿ:™:Ó&ö ð
ð        ×ÑØ H‰HU‰OÜ ¨¯    ©    °%Ñ(8À%Ô Hõ    
ð€Hðôàô€Fô    ˜F¤C¨£MÓ2€Aà €HùòsÁ>Ccó —t|d«s td«‚t|t«r|j    |||¬«St|t
j «s"tdt|«j›d«‚t||||«S)aø
    Given a 1d array, return an array of deterministic integers.
 
    Parameters
    ----------
    vals : ndarray or ExtensionArray
    encoding : str, default 'utf8'
        Encoding for data & key when strings.
    hash_key : str, default _default_hash_key
        Hash_key for string key to encode.
    categorize : bool, default True
        Whether to first categorize object arrays before hashing. This is more
        efficient when the array contains duplicate values.
 
    Returns
    -------
    ndarray[np.uint64, ndim=1]
        Hashed values, same length as the vals.
 
    Examples
    --------
    >>> pd.util.hash_array(np.array([1, 2, 3]))
    array([ 6238072747940578789, 15839785061582574730,  2185194620014831856],
      dtype=uint64)
    rzmust pass a ndarray-likeraz6hash_array requires np.ndarray or ExtensionArray, not z!. Use hash_pandas_object instead.)
ÚhasattrrRrLr    rbrÚndarrayrSÚ__name__Ú _hash_ndarray)rjr5r6r7s    r,rDrDés€ô> 4˜Ô !ÜÐ2Ó3Ð3ä$Ô)Ô*Ø×'Ñ'ب¸Zð(ó
ð    
ô dœBŸJ™JÔ 'äØ DܐD‹z×"Ñ"Ð#Ð#Dð Fó
ð    
ô
˜˜x¨°:Ó >Ð>rZcóf—|j}tj|tj«r8t    |j
|||«}t    |j |||«}|d|zzS|tk(r|jd«}n"t|jtjtjf«r#|jd«jdd¬«}nËt|jtj«rG|jdkr8|jd|jj›«jd«}n`|rPdd    lm}m}m}    |    |d¬
«\}
} t)|| «d¬ «}|j+|
|«} | j-||d¬ «S    t/|||«}||d z    z}|tj6d«z}||dz    z}|tj6d«z}||dz    z}|S#t0$r6t/|jt2«jt4«||«}YŒˆwxYw)z!
    See hash_array.__doc__.
    éÚu8Úi8Fr1éÚur)r\rÚ    factorize)Úsortr]raél¹eÉ9´Âz élëb&ì&‚&    é)rrÚ
issubdtypeÚ
complex128rrÚrealÚimagÚboolrNÚ
issubclassrSÚ
datetime64Ú timedelta64ÚviewÚnumberÚitemsizerJr\rryrrgrbrrRÚstrÚobjectr) rjr5r6r7rÚ    hash_realÚ    hash_imagr\rryrhr^rcs              r,rrrrsõ€ð J‰J€Eô
‡}}UœBŸM™MÔ*Ü! $§)¡)¨X°xÀÓLˆ    Ü! $§)¡)¨X°xÀÓLˆ    Ø˜2     ™>Ñ)Ð)ð ”‚}؏{‰{˜4Ó ŠÜ    E—J‘J¤§¡´·±Р?Ô    @؏y‰y˜‹×%Ñ% d°Ð%Ó7‰Ü    E—J‘J¤§    ¡    Ô    *¨u¯~©~ÀÒ/B؏y‰y˜1˜TŸZ™Z×0Ñ0Ð1Ð2Ó3×:Ñ:¸4Ó@‰ñ
÷ ñ ñ !*¨$°UÔ ;Ñ ˆE:Ü$±°jÓ0AÈ5ÔQˆEØ×)Ñ)¨%°Ó7ˆCØ×*Ñ*Ø!¨HÀð+óð ð    Ü$ T¨8°XÓ>ˆDð    ˆDB‰JÑ€DØŒBI‰IÐ(Ó )Ñ)€D؈DB‰JÑ€DØŒBI‰IÐ(Ó )Ñ)€D؈DB‰JÑ€DØ €Køôò    ä$Ø— ‘ œCÓ ×'Ñ'¬Ó/°¸8óŠDð    úsÆ G1Ç1<H0È/H0)r#zIterator[np.ndarray]r$ÚintÚreturnúnpt.NDArray[np.uint64]) r>zIndex | DataFrame | Seriesr2r‚r5r‰r6z
str | Noner7r‚rŽr)rjz+MultiIndex | Iterable[tuple[Hashable, ...]]r5r‰r6r‰rŽr)
rjrr5r‰r6r‰r7r‚rŽr)
rjz
np.ndarrayr5r‰r6r‰r7r‚rŽr)&Ú__doc__Ú
__future__rrÚtypingrÚnumpyrÚpandas._libs.hashingrÚpandas.core.dtypes.commonrÚpandas.core.dtypes.dtypesrÚpandas.core.dtypes.genericrr    r
r r Úcollections.abcr rrÚpandas._typingrrrJrrrrrKr-r9rMrDrrrHrZr,ú<module>ršsqðñõ#ãÝ ãå2å2Ý6÷õñ÷ñ÷ ÷
óð'Ðð!Ø  ð!Ø-0ð!àó!ðLØØ,Øð aØ    #ðaà ðaððaðð    að
ð að  ó aðLØ%ð/ Ø
5ð/ àð/ ðð/ ðó    / ðhØ%Øð    .?Ø
ð.?àð.?ðð.?ðð    .?ð
ó .?ðfØ%Øð    9Ø
ð9àð9ðð9ðð    9ð
ô 9rZ