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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
U
¬ý°d‡0ã@sÆddlmZddlmZddlZddlZddlZddlZddlZddl    m
Z
m Z m Z m Z mZmZmZddlZddlZddlmZddlmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#ddl$m%Z%m&Z&m'Z'm(Z(ddl)m*Z*dd    l+m,Z,dd
l-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4dd l5m6Z6dd l7m8Z8dd l9m:Z:ddl;m<Z<m=Z=ddl>m?m@ZAddlBmCZCmDZDmEZEddlFmGZGddlHmIZIe%shddlJZKddlLmMZNddlOmPZPddlQmRZReNjSeNjTeNjUeNjVeNjWeNjXdœZYeNjZdd„eNj[dd„eNj\dd„dœZ]ddddœdd„Z^dddd œd!d"„Z_eNj`d#d„eNjad$d„eNjbd%d„d&d„d'd„d(d„d)d„ececececeNjdd*d„d+œZee
rŠdd,lmfZfmgZgdd-lhmiZied.d/d0Zjd1d2„Zkd3d4d5œd6d7„ZlGd8d/„d/e:e=eGƒZmdS)9é)Ú annotations)ÚdeepcopyN)Ú TYPE_CHECKINGÚAnyÚCallableÚLiteralÚSequenceÚTypeVarÚcast)Úlib) Ú    ArrayLikeÚAxisIntÚDtypeÚ FillnaOptionsÚIteratorÚNpDtypeÚPositionalIndexerÚScalarÚSortKindÚ TakeIndexerÚ TimeAmbiguousÚTimeNonexistentÚnpt)Úpa_version_under7p0Úpa_version_under8p0Úpa_version_under9p0Úpa_version_under11p0)Údoc)Úvalidate_fillna_kwargs)Ú is_array_likeÚ is_bool_dtypeÚ
is_integerÚis_integer_dtypeÚ is_list_likeÚis_object_dtypeÚ    is_scalar)Úisna)Ú    roperator)ÚOpsMixin)ÚExtensionArrayÚExtensionArraySupportsAnyAll)Úcheck_array_indexerÚunpack_tuple_and_ellipsesÚvalidate_indices)ÚBaseStringArrayMethods)Ú    to_offset)Úfallback_performancewarning)Ú
ArrowDtype)ÚeqÚneÚltÚgtÚleÚgecCs t ||¡S©N)ÚpcÚ
and_kleene©ÚxÚy©r>úUd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/core/arrays/arrow/array.pyÚ<lambda>\ór@cCs t ||¡Sr8)r9Ú    or_kleener;r>r>r?r@^rAcCs t ||¡Sr8)r9Úxorr;r>r>r?r@`rA)Úand_Zrand_Úor_Zror_rCZrxorúpa.ChunkedArrayzpa.Array | pa.Scalar)Ú arrow_arrayÚ    pa_objectÚreturncCs.tj |j¡r*tj |j¡r*| t ¡¡S|Sr8)ÚpaÚtypesr!Útyper
Úfloat64)rGrHr>r>r?Úcast_for_truedivcs
ÿrNz&pa.ChunkedArray | pa.Array | pa.Scalar)ÚleftÚrightrIcCs>t t ||¡¡}tj |j¡r:tj |j¡r:| |j¡}|Sr8)r9ÚfloorÚdividerJrKr!rLr
)rOrPÚresultr>r>r?Úfloordiv_compatns rTcCs t ||¡Sr8)r9Ú add_checkedr;r>r>r?r@{rAcCs t ||¡Sr8)r9Úsubtract_checkedr;r>r>r?r@}rAcCs t ||¡Sr8)r9Úmultiply_checkedr;r>r>r?r@rAcCst t||ƒ|¡Sr8©r9rRrNr;r>r>r?r@€rAcCst |t||ƒ¡Sr8rXr;r>r>r?r@rAcCs
t||ƒSr8©rTr;r>r>r?r@‚rAcCs
t||ƒSr8rYr;r>r>r?r@ƒrAcCs t ||¡Sr8)r9Ú power_checkedr;r>r>r?r@‰rA)ÚaddÚraddÚsubZrsubÚmulZrmulÚtruedivZrtruedivÚfloordivZ    rfloordivÚmodZrmodÚdivmodZrdivmodÚpowZrpow)Ú NumpySorterÚNumpyValueArrayLike)ÚSeriesÚArrowExtensionArrayTÚArrowExtensionArray)ÚboundcCs:tr4t|ƒ dd¡ddd…}|dkr0t|ƒ‚|S|jS)Nú[ééÿÿÿÿ)ÚsÚmsÚusÚns)rÚstrÚsplitÚ
ValueErrorÚunit)Úpa_dtypertr>r>r?Úget_unit_from_pa_dtype—s rvz'ArrowDtype | pa.DataType | Dtype | Nonezpa.DataType | None©ÚdtyperIcCsLt|tƒr|jSt|tjƒr |S|rHz t |¡WStjk
rFYnXdS)z3
    Convert dtype to a pyarrow type instance.
    N)Ú
isinstancer1Ú pyarrow_dtyperJZDataTypeZfrom_numpy_dtypeÚArrowNotImplementedError©rxr>r>r?Úto_pyarrow_type¡s
  r}csF    eZdZUdZded<ded<dddœd    d
„Zed d d œddd œdd„ƒZed d d œddd œdd„ƒZddœdd„Z    ddœdd„Z
dtdd„Z duddd œd!d"„Z d#d#d$œd%d&„Z d#d#d$œd'd(„Zd#d#d$œd)d*„Zd#d#d$œd+d,„Zd-d.„Zddœd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zddœd9d:„Zeddœd;d<„ƒZed=dœd>d?„ƒZd=dœd@dA„Zddœ‡fdBdC„ ZeddœdDdE„ƒZdFdœdGdH„ZdIdJœddJœdKdL„ZdIdJœddJœdMdN„Z dIdOdPdQœddRdSddTœdUdV„Z!ddSd=dWœ‡fdXdY„ Z"dvdd=dZœd[d\„Z#dwdd=dZœd]d^„Z$d#d#d$œd_d`„Z%d#d#d$œdadb„Z&e'e(j)ƒdxd#dcddded#dfœ‡fdgdh„ ƒZ)dFdœdidj„Z*dkdœdldm„Z+e'e(j,ƒdyddndoœdpdq„ƒZ,drds„Z-dzd#d=d#duœdvdw„Z.e'e(j/ƒd{dydzd{d|d}œd~d„ƒZ/d|d€dddd‚œdƒd„„Z0e'e(j1ƒd d e2j3fd…dd†dd‡œdˆd‰„ƒZ1d#d#d$œdŠd‹„Z4d}ddŒdœdŽd„Z5edd#d‘œd’d“„ƒZ6dIdJœdSdd”d•œ‡fd–d—„Z7dIdJœdSdd˜œ‡fd™dš„Z8ddœd›dœ„Z9dtddždId dŸœd dSdSdddŸœ‡fd¡d¢„Z:d#d£dSd#d¤œd¥d¦„Z;d~d#dd#d§œd¨d©„Z<dªd«„Z=ed¬d­d­d®œd¯d°„ƒZ>edd¬d­d±œd²d³„ƒZ?d´dµd¶œd·d¸„Z@ddSd=d¹œdºd»„ZAd€d=d½dSd¾œd¿dÀ„ZBddd=ddÁœdÂdÄZCd‚dSdĜdÅdƄZDdƒdSdĜdÇdȄZEd„dÊdËd=dd=dd̜dÍd΄ZFdÏdМdÑd҄ZGd…dSdd=dÓdԜdÕdքZHd†dd=dÓdלdØdلZId‡dSd=dedڜdÛd܄ZJd=dݜdÞd߄ZKdSdàœdádâ„ZLdSddãœdädå„ZMdSddãœdædç„ZNdˆdedededèœdédê„ZOd‰dededëdìœdídî„ZPdïdð„ZQdñdò„ZRdódô„ZSdõdö„ZTd÷dø„ZUdùdú„ZVdûdü„ZWdýdþ„ZXdÿd„ZYdd„ZZdd„Z[dd„Z\dd„Z]d    d
„Z^d d „Z_dАd d„Z`d‹dd„ZadŒdd„ZbdSdœdd„ZcdSdœdd„Zddd„ZeddSdSdœdd„ZfdŽdSd=ddœd d!„ZgddSd=d¹œd"d#„ZhddSdàœd%d&„Zid‘dSd=dedڜd'd(„Zjd’dSd=dedڜd)d*„ZkdSd+œd,d-„Zld“dSd=d.œd/d0„Zmd”dëdedd1d2œd3d4„Znd•dëded5œd6d7„Zod8d9œd:d;„Zpd=d<œd=d>„Zqed?d@„ƒZredAdB„ƒZsedCdD„ƒZtetZuetZvedEdF„ƒZwewZxedGdH„ƒZydIdJ„ZzedKdL„ƒZ{edMdN„ƒZ|edOdP„ƒZ}edQdR„ƒZ~edSdT„ƒZedUdV„ƒZ€edWdX„ƒZedYdZ„ƒZ‚ed[d\„ƒZƒed]d^„ƒZ„dSd_œd`da„Z…d–dcdddedfœdgdh„Z†d—dddediœdjdk„Z‡d˜dddediœdldm„Zˆd™dddediœdndo„Z‰dpdq„ZАdšdddediœdrds„Z‹‡ZŒS(›rhaW
    Pandas ExtensionArray backed by a PyArrow ChunkedArray.
 
    .. warning::
 
       ArrowExtensionArray is considered experimental. The implementation and
       parts of the API may change without warning.
 
    Parameters
    ----------
    values : pyarrow.Array or pyarrow.ChunkedArray
 
    Attributes
    ----------
    None
 
    Methods
    -------
    None
 
    Returns
    -------
    ArrowExtensionArray
 
    Notes
    -----
    Most methods are implemented using `pyarrow compute functions. <https://arrow.apache.org/docs/python/api/compute.html>`__
    Some methods may either raise an exception or raise a ``PerformanceWarning`` if an
    associated compute function is not available based on the installed version of PyArrow.
 
    Please install the latest version of PyArrow to enable the best functionality and avoid
    potential bugs in prior versions of PyArrow.
 
    Examples
    --------
    Create an ArrowExtensionArray with :func:`pandas.array`:
 
    >>> pd.array([1, 1, None], dtype="int64[pyarrow]")
    <ArrowExtensionArray>
    [1, 1, <NA>]
    Length: 3, dtype: int64[pyarrow]
    rFÚ_datar1Ú_dtypezpa.Array | pa.ChunkedArrayÚNone)ÚvaluesrIcCsftrd}t|ƒ‚t|tjƒr,t |g¡|_n(t|tjƒr@||_ntdt    |ƒ›dƒ‚t
|jj    ƒ|_ dS)NzBpyarrow>=7.0.0 is required for PyArrow backed ArrowExtensionArray.zUnsupported type 'z' for ArrowExtensionArray) rÚ ImportErrorryrJÚArrayÚ chunked_arrayr~Ú ChunkedArrayrsrLr1r)ÚselfrÚmsgr>r>r?Ú__init__æs  ÿzArrowExtensionArray.__init__NF©rxÚcopyz Dtype | NoneÚboolcCsºt|ƒ}t||ƒr|j}n`t|tjtjfƒsz|r@t|ƒr@t|ƒ}ztj||dd}Wn$tj    k
rxtj|dd}YnX|rˆ| 
|¡}||ƒ}tj   |j ¡r¶|jdkr¶| |jj¡}|S)zL
        Construct a new ExtensionArray from a sequence of scalars.
        T©rLÚ from_pandas©rr)r}ryr~rJrƒr…rrÚarrayÚ ArrowInvalidr
rKÚ is_durationrLÚ
null_countÚfillnarxÚna_value)ÚclsÚscalarsrxrŠruÚarrr>r>r?Ú_from_sequenceôs 
 
z"ArrowExtensionArray._from_sequencec CsÔt|ƒ}|dks(tj |¡s(tj |¡r0|}n”tj |¡rXddlm}||dd}nltj |¡r‚ddlm}||ddj    }nBtj 
|¡rddl m }||dd}|j dkrÄt|ƒ}t|tjtjfƒsâtj|t ¡dd    }t |d|¡}z| t ¡¡}Wntjk
rYnXn¦tj |¡rFdd
lm}    |    |d d}n~tj |¡rpdd lm}
|
 |¡  ¡}nTtj !|¡sštj "|¡sštj #|¡r´dd l$m%} | |dd}nt&d|›dƒ‚|j'|||dS)zL
        Construct a new ExtensionArray from a sequence of strings.
        Nr)Ú to_datetimeÚraise)Úerrors)Ú to_timedeltarpTrŒ)Úto_timeZcoerce)Ú BooleanArray)Ú
to_numericzConverting strings to z is not implemented.r‰)(r}rJrKÚ    is_binaryÚ    is_stringZ is_timestampZpandas.core.tools.datetimesr™Úis_dateÚdater‘Zpandas.core.tools.timedeltasrœrtr&ryrƒr…rÚstringr9Úif_elser
Úint64rÚis_timeZpandas.core.tools.timesrÚ
is_booleanZpandas.core.arraysržÚ_from_sequence_of_stringsÚto_numpyr!Ú is_floatingÚ
is_decimalZpandas.core.tools.numericrŸÚNotImplementedErrorr˜) r•ÚstringsrxrŠÚpa_typer–r™rœÚmaskrržrŸr>r>r?r©sXÿ
þ
ý         
ÿ
þ
ý 
ÿz-ArrowExtensionArray._from_sequence_of_stringsr)ÚitemcCst||ƒ}t|tjƒršt|ƒs^|jjdkr@|jjdkr@t     ¡}n|jj
}t |ƒtj g|dƒSt |jƒrr| |¡St|jƒrt |ƒ|j |¡ƒStdƒ‚nt|tƒr¬t|ƒ}|tkr¼tdƒ}t|ƒrÔt|ƒsÔtdƒ‚|j|}t|tjƒröt |ƒ|ƒS| ¡}|dkr|jjS|SdS)a8Select a subset of self.
 
        Parameters
        ----------
        item : int, slice, or ndarray
            * int: The position in 'self' to get.
            * slice: A slice object, where 'start', 'stop', and 'step' are
              integers or None
            * ndarray: A 1-d boolean NumPy ndarray the same length as 'self'
 
        Returns
        -------
        item : scalar or ExtensionArray
 
        Notes
        -----
        For scalar ``item``, return a scalar value suitable for the array's
        type. This should be an instance of ``self.dtype.type``.
        For slice ``key``, return an instance of ``ExtensionArray``, even
        if the slice is length 0 or 1.
        For a boolean mask, return an instance of ``ExtensionArray``, filtered
        to the values where ``item`` is True.
        r¤Úpyarrow©rLzFOnly integers, slices and integer or boolean arrays are valid indices.Nzuonly integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices)r+ryÚnpÚndarrayÚlenrÚnameZstoragerJr¤rzrLr„r"rxÚtaker r~ÚfilterÚ
IndexErrorÚtupler,ÚEllipsisÚslicer%r!r…Úas_pyr”)r†r±ruÚvalueÚscalarr>r>r?Ú __getitem__Ns:
 
 
 
 
ÿ
ÿ
 
zArrowExtensionArray.__getitem__z Iterator[Any]©rIccs6|jj}|jD]"}| ¡}|dkr*|Vq|VqdS)z5
        Iterate over elements of the array.
        N)rr”r~r¾)r†r”r¿Úvalr>r>r?Ú__iter__“s 
zArrowExtensionArray.__iter__cCs|jS)z)Convert myself to a pyarrow ChunkedArray.)r~)r†rLr>r>r?Ú__arrow_array__Ÿsz#ArrowExtensionArray.__arrow_array__zNpDtype | Nonez
np.ndarrayrwcCs |j|dS)z?Correctly construct numpy arrays when passed to `np.asarray()`.r|©rª)r†rxr>r>r?Ú    __array__£szArrowExtensionArray.__array__rg)r†rIcCst|ƒt |j¡ƒSr8)rLr9Úinvertr~©r†r>r>r?Ú
__invert__§szArrowExtensionArray.__invert__cCst|ƒt |j¡ƒSr8)rLr9Znegate_checkedr~rÉr>r>r?Ú__neg__ªszArrowExtensionArray.__neg__cCst|ƒ|jƒSr8©rLr~rÉr>r>r?Ú__pos__­szArrowExtensionArray.__pos__cCst|ƒt |j¡ƒSr8)rLr9Z abs_checkedr~rÉr>r>r?Ú__abs__°szArrowExtensionArray.__abs__cCs|j ¡}|j ¡|d<|S©Nr~)Ú__dict__rŠr~Úcombine_chunks©r†Ústater>r>r?Ú __getstate__µs
z ArrowExtensionArray.__getstate__cCs"t |d¡|d<|j |¡dSrÏ)rJr„rÐÚupdaterÒr>r>r?Ú __setstate__ºsz ArrowExtensionArray.__setstate__c    Cs0ddlm}t|j}t|tƒr0||j|jƒ}nøt|tjt    fƒrN||j|ƒ}nÚt||ƒrj||j| 
¡ƒ}n¾t |ƒrz||jt   |¡ƒ}Wn‚t jjt jjfk
r t|ƒt|ƒB}|}tjt|ƒdd}|t |¡||ƒ||<t j|t  ¡d}t ||d¡}YnXnt|j›dt|ƒ›ƒ‚t|ƒS)Nr©ÚBaseMaskedArrayr‹r|r³ú not implemented for )Úpandas.core.arrays.maskedrØÚARROW_CMP_FUNCSÚ__name__ryrhr~r´rµÚlistrÅr%rJrÀr r{rr&Úzerosr¶rÚbool_r9r¥r­rL)r†ÚotherÚoprØÚpc_funcrSr°Zvalidr>r>r?Ú _cmp_method¾s, 
 
 
 
ÿzArrowExtensionArray._cmp_methodc Cs¾ddlm}|jj}tj |¡s,tj |¡rÈ|tj    t
j fkrÈ|j  ¡}tj |¡r^dg|}n
dg|}t |ƒr||g|}nt|t|ƒƒr|j}|tj    kr¬t |j||¡}nt ||j|¡}t|ƒ|ƒS||j}    |    tkrêt|j›dƒ‚t|tƒr|    |j|jƒ}n¬t|tjtfƒr0|    |jtj|ddƒ}n‚t||ƒrN|    |j| ¡ƒ}ndt |ƒršt|ƒr‚|jtkr‚tjd|jjd}
n
t |¡}
|    |j|
ƒ}nt|j›d    t|ƒ›ƒ‚t|ƒ|ƒS)
Nrr×ÚrAz not implemented.TrŽr³rÙ)rÚrØr~rLrJrKr¡r Úoperatorr[r'r\Úlengthr%ryr9Zbinary_join_element_wiserÜÚNotImplementedr­rhr´rµrÝrrÅr&ÚARROW_LOGICAL_FUNCSrÀ) r†ràráZ arrow_funcsrØr¯ræÚsepsrSrâZ    pa_scalarr>r>r?Ú_evaluate_op_methodÙsH þ
 
 
 
 
 
ÿz'ArrowExtensionArray._evaluate_op_methodcCs| ||t¡Sr8)rêrè©r†ràrár>r>r?Ú_logical_method
sz#ArrowExtensionArray._logical_methodcCs| ||t¡Sr8)rêÚARROW_ARITHMETIC_FUNCSrër>r>r?Ú _arith_method sz!ArrowExtensionArray._arith_methodcCst|tƒsdS|j|jkS©NF)ryrhr~)r†ràr>r>r?Úequalss
zArrowExtensionArray.equalscCs|jS)z2
        An instance of 'ExtensionDtype'.
        )rrÉr>r>r?rxszArrowExtensionArray.dtypeÚintcCs|jjS)zL
        The number of bytes needed to store this object in memory.
        )r~ÚnbytesrÉr>r>r?ròszArrowExtensionArray.nbytescCs
t|jƒS)z]
        Length of this array.
 
        Returns
        -------
        length : int
        )r¶r~rÉr>r>r?Ú__len__%szArrowExtensionArray.__len__cs\t|ƒrL||jjk    rL|jjdkrHt |¡rHt|ƒrHt t |j    ¡¡ 
¡SdSt t ƒ  |¡ƒS)NÚfF)r&rxr”Úkindr Zis_floatr9ÚanyÚis_nanr~r¾r‹ÚsuperÚ __contains__)r†Úkey©Ú    __class__r>r?rù/s
z ArrowExtensionArray.__contains__cCs |jjdkS)Nr)r~r’rÉr>r>r?Ú_hasna;szArrowExtensionArray._hasnaznpt.NDArray[np.bool_]cCs|j ¡ ¡S)z
        Boolean NumPy array indicating if each value is missing.
 
        This should return a 1-D array the same length as 'self'.
        )r~Úis_nullrªrÉr>r>r?r&?szArrowExtensionArray.isnaT©ÚskipnacKs|jdd|i|—ŽS)a
        Return whether any element is truthy.
 
        Returns False unless there is at least one element that is truthy.
        By default, NAs are skipped. If ``skipna=False`` is specified and
        missing values are present, similar :ref:`Kleene logic <boolean.kleene>`
        is used as for logical operations.
 
        Parameters
        ----------
        skipna : bool, default True
            Exclude NA values. If the entire array is NA and `skipna` is
            True, then the result will be False, as for an empty array.
            If `skipna` is False, the result will still be True if there is
            at least one element that is truthy, otherwise NA will be returned
            if there are NA's present.
 
        Returns
        -------
        bool or :attr:`pandas.NA`
 
        See Also
        --------
        ArrowExtensionArray.all : Return whether all elements are truthy.
 
        Examples
        --------
        The result indicates whether any element is truthy (and by default
        skips NAs):
 
        >>> pd.array([True, False, True], dtype="boolean[pyarrow]").any()
        True
        >>> pd.array([True, False, pd.NA], dtype="boolean[pyarrow]").any()
        True
        >>> pd.array([False, False, pd.NA], dtype="boolean[pyarrow]").any()
        False
        >>> pd.array([], dtype="boolean[pyarrow]").any()
        False
        >>> pd.array([pd.NA], dtype="boolean[pyarrow]").any()
        False
        >>> pd.array([pd.NA], dtype="float64[pyarrow]").any()
        False
 
        With ``skipna=False``, the result can be NA if this is logically
        required (whether ``pd.NA`` is True or False influences the result):
 
        >>> pd.array([True, False, pd.NA], dtype="boolean[pyarrow]").any(skipna=False)
        True
        >>> pd.array([1, 0, pd.NA], dtype="boolean[pyarrow]").any(skipna=False)
        True
        >>> pd.array([False, False, pd.NA], dtype="boolean[pyarrow]").any(skipna=False)
        <NA>
        >>> pd.array([0, 0, pd.NA], dtype="boolean[pyarrow]").any(skipna=False)
        <NA>
        rör)rö©Ú_reduce©r†rÚkwargsr>r>r?röGs8zArrowExtensionArray.anycKs|jdd|i|—ŽS)a
        Return whether all elements are truthy.
 
        Returns True unless there is at least one element that is falsey.
        By default, NAs are skipped. If ``skipna=False`` is specified and
        missing values are present, similar :ref:`Kleene logic <boolean.kleene>`
        is used as for logical operations.
 
        Parameters
        ----------
        skipna : bool, default True
            Exclude NA values. If the entire array is NA and `skipna` is
            True, then the result will be True, as for an empty array.
            If `skipna` is False, the result will still be False if there is
            at least one element that is falsey, otherwise NA will be returned
            if there are NA's present.
 
        Returns
        -------
        bool or :attr:`pandas.NA`
 
        See Also
        --------
        ArrowExtensionArray.any : Return whether any element is truthy.
 
        Examples
        --------
        The result indicates whether all elements are truthy (and by default
        skips NAs):
 
        >>> pd.array([True, True, pd.NA], dtype="boolean[pyarrow]").all()
        True
        >>> pd.array([1, 1, pd.NA], dtype="boolean[pyarrow]").all()
        True
        >>> pd.array([True, False, pd.NA], dtype="boolean[pyarrow]").all()
        False
        >>> pd.array([], dtype="boolean[pyarrow]").all()
        True
        >>> pd.array([pd.NA], dtype="boolean[pyarrow]").all()
        True
        >>> pd.array([pd.NA], dtype="float64[pyarrow]").all()
        True
 
        With ``skipna=False``, the result can be NA if this is logically
        required (whether ``pd.NA`` is True or False influences the result):
 
        >>> pd.array([True, True, pd.NA], dtype="boolean[pyarrow]").all(skipna=False)
        <NA>
        >>> pd.array([1, 1, pd.NA], dtype="boolean[pyarrow]").all(skipna=False)
        <NA>
        >>> pd.array([True, False, pd.NA], dtype="boolean[pyarrow]").all(skipna=False)
        False
        >>> pd.array([1, 0, pd.NA], dtype="boolean[pyarrow]").all(skipna=False)
        False
        Úallr)rrrr>r>r?rs8zArrowExtensionArray.allZ    quicksortÚlast)Ú    ascendingrõÚ na_positionrrq)rrõrrIc    Ks^|rdnd}dddœ |d¡}|dkr4td|›ƒ‚tj|j||d}| ¡}|jtjdd    S)
NrÚ
descendingÚat_endÚat_start)rÚfirstzinvalid na_position: )ÚorderÚnull_placementF©rŠ)    Úgetrsr9Úarray_sort_indicesr~rªÚastyper´Úintp)    r†rrõrrr rrSZ    np_resultr>r>r?Úargsort»s ÿzArrowExtensionArray.argsort)rÚmethodrIcs||j ¡d|jjfks |jr8|s8ttƒd|›ƒ|dS|j}tj |j    ¡rZ| 
t  ¡¡}tt |ƒ||d}t   ||¡ ¡S)NrÚargrÿ)Ú
skip_nulls)r~rær’rýÚgetattrrørJrKr‘rLr
r¦r9Úindexr¾)r†rrÚdatar¿rûr>r?Ú _argmin_maxÎsÿÿzArrowExtensionArray._argmin_max)rrIcCs | |d¡S)NÚmin©r©r†rr>r>r?ÚargminÞszArrowExtensionArray.argmincCs | |d¡S)NÚmaxrrr>r>r?ÚargmaxászArrowExtensionArray.argmaxcCst|ƒ|jƒS)z·
        Return a shallow copy of the array.
 
        Underlying ChunkedArray is immutable, so a deep copy is unnecessary.
 
        Returns
        -------
        type(self)
        rÌrÉr>r>r?rŠäs
zArrowExtensionArray.copycCst|ƒt |j¡ƒS)z|
        Return ArrowExtensionArray without NA values.
 
        Returns
        -------
        ArrowExtensionArray
        )rLr9Ú    drop_nullr~rÉr>r>r?ÚdropnaðszArrowExtensionArray.dropnazobject | ArrayLike | NonezFillnaOptions | Nonez
int | None)r†r¿rÚlimitrIcs0t||ƒ\}}|dk    r(tƒj|||dS|dk    rHtƒtƒj|||dSt|ƒr†tt|ƒ}t|ƒt|ƒkr†tdt|ƒ›dt|ƒ›ƒ‚dd„}|||j    j
|j ƒ}zd|dkrÄt
|ƒt j |j    |dƒWS|dkrât
|ƒt  |j    ¡ƒWS|dkrt
|ƒt  |j    ¡ƒWSWntjk
rYnXtƒj|||dS)    N)r¿rr$z'Length of 'value' does not match. Got (z )  expected c
Ss–|dkr |St|tjtjtjfƒr&|St|ƒr6tj}ntj}z|||dd}WnBtjk
r}z"dt    |ƒ›d|›}t
|ƒ|‚W5d}~XYnX|S)NTrŒúInvalid value 'ú ' for dtype ) ryrJrrƒr…rrrÀÚArrowTypeErrorrqÚ    TypeError)r¿r¯rxÚpa_boxÚerrr‡r>r>r?Úconvert_fill_valuesz6ArrowExtensionArray.fillna.<locals>.convert_fill_value)Ú
fill_valueÚpadZbackfill)rrør“r0rr
r r¶rsr~rLrxr9Ú    fill_nullZfill_null_forwardZfill_null_backwardrJr{)r†r¿rr$r+r,rûr>r?r“ús0
ÿ
zArrowExtensionArray.fillnacCsDt|ƒstjt|ƒtdStj|jtj|ddd}tj|tj    dS)Nr|TrŽ)Z    value_set)
r¶r´rÞr‹r9Úis_inr~rJrrß)r†rrSr>r>r?Úisin4szArrowExtensionArray.isinztuple[np.ndarray, Any]cCs|j ¡}||jjfS)a+
        Return an array and missing value suitable for factorization.
 
        Returns
        -------
        values : ndarray
        na_value : pd.NA
 
        Notes
        -----
        The values returned by this method are also used in
        :func:`pandas.util.hash_pandas_object`.
        )r~rªrxr”)r†rr>r>r?Ú_values_for_factorize>s
z)ArrowExtensionArray._values_for_factorizez!tuple[np.ndarray, ExtensionArray])Úuse_na_sentinelrIc    Csð|rdnd}|jj}tj |¡r2|j t ¡¡}n|j}|j|d}| ¡dkr|t    j
gt    j d}t|ƒtj g|jj dƒ}nN| ¡j}|jdkrœt |d¡}|jdd    d
jt    j dd }t|ƒ| d¡jƒ}tj |¡rètt| |j¡ƒ}||fS) Nr°Úencode)Ú null_encodingrr|r³rlFT)Úzero_copy_onlyÚwritabler)r~rLrJrKr‘r
r¦Zdictionary_encoderær´rrr„Z
value_typerÑÚindicesr’r9r.rªrÚchunkÚ
dictionaryrhrx)    r†r2r4r¯rÚencodedr7ÚuniquesZ
pa_indicesr>r>r?Ú    factorizeOs(    
 
 ÿ zArrowExtensionArray.factorizecOstt|ƒ›dƒ‚dS)NzA does not support reshape as backed by a 1D pyarrow.ChunkedArray.)r­rL)r†Úargsrr>r>r?Úreshapens ÿzArrowExtensionArray.reshaper)r†ÚdecimalsrIcOst|ƒtj|j|dƒS)aŽ
        Round each value in the array a to the given number of decimals.
 
        Parameters
        ----------
        decimals : int, default 0
            Number of decimal places to round to. If decimals is negative,
            it specifies the number of positions to the left of the decimal point.
        *args, **kwargs
            Additional arguments and keywords have no effect.
 
        Returns
        -------
        ArrowExtensionArray
            Rounded values of the ArrowExtensionArray.
 
        See Also
        --------
        DataFrame.round : Round values of a DataFrame.
        Series.round : Round values of a Series.
        )Úndigits)rLr9Úroundr~)r†r?r=rr>r>r?rAtszArrowExtensionArray.roundrOz$NumpyValueArrayLike | ExtensionArrayzLiteral[('left', 'right')]rdznpt.NDArray[np.intp] | np.intp)r¿ÚsideÚsorterrIcCs6|jrtdƒ‚t|tƒr"| t¡}| ¡j|||dS)NzOsearchsorted requires array to be sorted, which is impossible with NAs present.)rBrC)rýrsryr)rÚobjectrªÚ searchsorted)r†r¿rBrCr>r>r?rEŽsÿ
 
z ArrowExtensionArray.searchsortedrr)r7Ú
allow_fillr,rIcCs(t|ƒst |¡}n|}t|jƒdkr:|dk ¡r:tdƒ‚|jdkr^| ¡t|jƒkr^tdƒ‚|rÞ|dk}| ¡rÈt    |t|jƒƒt
j ||d}|j  |¡}t |ƒr°t|ƒ|ƒSt|ƒ|ƒ}|||<|St|ƒ|j  |¡ƒSnF|dk ¡rt |¡}||dkt|jƒ7<t|ƒ|j  |¡ƒSdS)a‘
        Take elements from an array.
 
        Parameters
        ----------
        indices : sequence of int or one-dimensional np.ndarray of int
            Indices to be taken.
        allow_fill : bool, default False
            How to handle negative values in `indices`.
 
            * False: negative values in `indices` indicate positional indices
              from the right (the default). This is similar to
              :func:`numpy.take`.
 
            * True: negative values in `indices` indicate
              missing values. These values are set to `fill_value`. Any other
              other negative values raise a ``ValueError``.
 
        fill_value : any, optional
            Fill value to use for NA-indices when `allow_fill` is True.
            This may be ``None``, in which case the default NA value for
            the type, ``self.dtype.na_value``, is used.
 
            For many ExtensionArrays, there will be two representations of
            `fill_value`: a user-facing "boxed" scalar, and a low-level
            physical NA value. `fill_value` should be the user-facing version,
            and the implementation should handle translating that to the
            physical version for processing the take if necessary.
 
        Returns
        -------
        ExtensionArray
 
        Raises
        ------
        IndexError
            When the indices are out of bounds for the array.
        ValueError
            When `indices` contains negative values other than ``-1``
            and `allow_fill` is True.
 
        See Also
        --------
        numpy.take
        api.extensions.take
 
        Notes
        -----
        ExtensionArray.take is called by ``Series.__getitem__``, ``.loc``,
        ``iloc``, when `indices` is a sequence of values. Additionally,
        it's called by :meth:`Series.reindex`, or any other method
        that causes realignment, with a `fill_value`.
        rzcannot do a non-empty takez!out of bounds value in 'indices'.)r°N)rr´Z
asanyarrayr¶r~rörºÚsizer r-rJrr¸r&rLrŠ)r†r7rFr,Z indices_arrayZ    fill_maskrSr>r>r?r¸Ÿs.<    
zArrowExtensionArray.takeznpt.DTypeLike | NonerD)rxrŠr”rIcCs0|dkr|jrt}|tjkr$|jj}|jj}tj     
|¡rXtj      |¡sXt j t|ƒ|d}nÀt|ƒr˜|jr˜t jt|ƒtd}| ¡}t  ||j¡||<n€tj     |jj¡rÐt j|j|d}t|ƒsÌ||dd…<|S|jrú| ¡}||| ¡<t j|j|dSt j|j|d}|r| ¡}|jr,||| ¡<|S©Nr|)rýrDr Ú
no_defaultrxr”r~rLrJrKÚ is_temporalr¢r´rrÝr$Úemptyr¶r&ÚasarrayrþrŠ)r†rxrŠr”r¯rSr°rr>r>r?rªs4
 
   zArrowExtensionArray.to_numpycCsX|jj}tj |¡r&|j t ¡¡}n|j}t |¡}tj |¡rL| |¡}t|ƒ|ƒS)z€
        Compute the ArrowExtensionArray of unique values.
 
        Returns
        -------
        ArrowExtensionArray
        )    r~rLrJrKr‘r
r¦r9Úunique)r†r¯rZ    pa_resultr>r>r?rM(s 
 
zArrowExtensionArray.uniquerf)r#rIc CsÀ|jj}tj |¡r&|j t ¡¡}n|j}ddlm}m    }| 
¡}|  d¡}|  d¡}|r‚|j dkr‚|  ¡}    | |    ¡}| |    ¡}tj |¡r˜| |¡}t|ƒ}|t|ƒ|ƒƒ}
|||
dddS)a@
        Return a Series containing counts of each unique value.
 
        Parameters
        ----------
        dropna : bool, default True
            Don't include counts of missing values.
 
        Returns
        -------
        counts : Series
 
        See Also
        --------
        Series.value_counts
        r)ÚIndexrfrkÚcountF)rr·rŠ)r~rLrJrKr‘r
r¦ÚpandasrNrfÚ value_countsÚfieldr’Zis_validr¹rh) r†r#r¯rrNrfZvcrÚcountsr°rr>r>r?rQ?s" 
 
 
 
 
z ArrowExtensionArray.value_countsztype[ArrowExtensionArrayT])r•rIcCsHdd„|Dƒ}|djdkr&t ¡}n |djj}tj||d}||ƒS)zÕ
        Concatenate multiple ArrowExtensionArrays.
 
        Parameters
        ----------
        to_concat : sequence of ArrowExtensionArrays
 
        Returns
        -------
        ArrowExtensionArray
        cSs g|]}|j ¡D]}|‘qqSr>©r~Z
iterchunks)Ú.0Zearr>r>r?Ú
<listcomp>}s z9ArrowExtensionArray._concat_same_type.<locals>.<listcomp>rr¤r³)rxrJr¤rzr„)r•Z    to_concatÚchunksrur—r>r>r?Ú_concat_same_typens 
 z%ArrowExtensionArray._concat_same_typez$ArrowExtensionArray | ExtensionArray)r·rrIc     s˜ddi ||¡}tt|dƒ}|dkr<tƒj|fd|i|—ŽS|j}|j}tj     |¡rb| 
t  ¡¡}||fd|i|—Ž}tj     |¡rŒ| 
|¡}t|ƒ|ƒS)a¶
        Return an ExtensionArray performing an accumulation operation.
 
        The underlying data type might change.
 
        Parameters
        ----------
        name : str
            Name of the function, supported values are:
            - cummin
            - cummax
            - cumsum
            - cumprod
        skipna : bool, default True
            If True, skip NA values.
        **kwargs
            Additional keyword arguments passed to the accumulation function.
            Currently, there is no supported kwarg.
 
        Returns
        -------
        array
 
        Raises
        ------
        NotImplementedError : subclass does not define accumulations
        ZcumsumZcumulative_sum_checkedNrr) rrr9røÚ _accumulater~rLrJrKr‘r
r¦)    r†r·rrÚ pyarrow_nameÚ pyarrow_methZ data_to_accumrurSrûr>r?rY†s"ÿþ   
zArrowExtensionArray._accumulate)r·rc süˆjj}ˆj}|dkr|tj |¡sFtj |¡sFtj |¡sFtj |¡r|tj |¡rdˆj t     ¡¡}nˆj}t
  |d¡}|}nj|dkr¢tj |¡r¢ˆj t     ¡¡}nD|dkrætj  |¡ræ|j }|dkrֈj t ¡¡}nˆj t     ¡¡}|dkrü‡fdd„}    nDd    d
d d d œ ||¡}
tt
|
dƒ}    |    dkr@tƒj|fd|i|—ŽS|dkr^d|kr^d|d<n|dkrpd|d<z|    |fd|i|—Ž} Wnbtttfk
rê} z<dtˆƒj›dˆj›d|›dtj›d|›d } t| ƒ| ‚W5d} ~ XYnX|dkrþ| d} t
 | ¡ ¡rˆjjS|dkr8tj |¡r8|  |¡} |dkrZtj  |¡rZ|  |¡} |dkrôtj  |¡rô|  t     ¡¡} tj |¡rš|  |¡} nZtj |¡rÂt|ƒ}|  t |¡¡} n2tj |¡râ|  t d¡¡} n|  t |j ¡¡} |  ¡S)a
        Return a scalar result of performing the reduction operation.
 
        Parameters
        ----------
        name : str
            Name of the function, supported values are:
            { any, all, min, max, sum, mean, median, prod,
            std, var, sem, kurt, skew }.
        skipna : bool, default True
            If True, skip NaN values.
        **kwargs
            Additional keyword arguments passed to the reduction function.
            Currently, `ddof` is the only supported kwarg.
 
        Returns
        -------
        scalar
 
        Raises
        ------
        TypeError : subclass does not define reductions
        )rörr)rr Úsum)ÚmedianÚmeanÚstdÚsemé r`cs4tj|fd|i|—Ž}t t ˆj¡¡}t ||¡S)Nr)r9ÚstddevZ sqrt_checkedrOr~Zdivide_checked)rrrÚ    numeratorÚ denominatorrÉr>r?r[ñsz1ArrowExtensionArray._reduce.<locals>.pyarrow_methÚquantileÚproductrbZvariance)r]Úprodr_ÚvarNrZ    min_countr]gà?Úqrú'z ' with dtype z does not support reduction 'z' with pyarrow version z. 'z(' may be supported by upgrading pyarrow.)r]r^)r_r`rm)!r~rLrJrKr!r«r‘r¬r
r¦r9Ú    not_equalrJÚ    bit_widthÚint32rrrørÚAttributeErrorr­r(rÜrxÚ __version__rþr¾r”r§rvÚdurationr¢rt)r†r·rrr¯Zdata_to_reduceZ data_to_cmpZnot_eqÚnbitsr[rZrSr*r‡rtrûrÉr?r¸s‚
ÿ
þ
ý
ü      üû     
 
 
,ÿ
 
 
 zArrowExtensionArray._reducec    Cs2t|tƒrt|ƒdkr|d}t||ƒ}| |¡}t |¡rP| d||j¡}n¾t    |ƒrt
t |ƒ}t|ƒ}|dkr|||7}d|kr|ks¦nt d|›d|›ƒ‚t |ƒr¸tdƒ‚nt|tjƒrÌ| ¡}|jd|…jtj|g|jjddf|j|dd…j•}t |¡ ¡}nøt|ƒrBtj|tjd    }| |j||¡}nÌt|ƒsZt|tjƒrˆtjt|ƒtjd    }d||<| |||j¡}n†t t|ƒ¡|}t|ƒt|ƒkr´tdƒ‚t|ƒdkrÆdSt |¡}||}|  |¡}tjt|ƒtjd    }d||<| |j||¡}t|tj!ƒr(t |g¡}||_dS)
a÷Set one or more values inplace.
 
        Parameters
        ----------
        key : int, ndarray, or slice
            When called from, e.g. ``Series.__setitem__``, ``key`` will be
            one of
 
            * scalar int
            * ndarray of integers.
            * boolean ndarray
            * slice object
 
        value : ExtensionDtype.type, Sequence[ExtensionDtype.type], or object
            value or values to be set of ``key``.
 
        Returns
        -------
        None
        rkrTzindex z' is out of bounds for axis 0 with size z%Length of indexer and values mismatchNrŒr|)"ryr»r¶r+Ú_maybe_convert_setitem_valueÚcomZ is_null_sliceÚ_if_elser~r!r
rñrºr#rsrJrr¾rWrrLr„rÑr r´rLrßÚ_replace_with_maskr%rÞÚarangerr¸rƒ)    r†rúr¿rÚnrWr°r7rr>r>r?Ú __setitem__0s\
 
 
 
 
ÿ
 þý
 
 
 zArrowExtensionArray.__setitem__ÚaverageÚkeep©ÚaxisrÚ    na_optionrÚpctr cs~ts |dkr\tƒj|||||d}|dks.|r8t ¡}nt ¡}tj||dd}t|ƒ|ƒS|j     ¡}    |rndnd}
|dkr~d    nd
} |dkrŽd n|} t
j |    |
| | d }|d krÖt
  |j¡} tj d|jd}t
 | ||¡}|dkr"t
j |    |
| dd }| t ¡¡}| t ¡¡}t
 t
 ||¡d¡}|rrtj |j¡sF| t ¡¡}|dkr\t
 |¡}n
t
 |¡}t
 ||¡}t|ƒ|ƒS)z*
        See Series.rank.__doc__.
        rr{ryTrŒrr    Útopr r
r)Ú    sort_keysrÚ
tiebreakerrzNr³r éZdense)rrøÚ_rankrJrMZuint64rrLr~rÑr9ZrankrþrÀr¥r
rRr[rKr«r rO)r†r|rr}rr~Zrankedr¯rSrr€rrr°ÚnullZ
result_maxZ
result_minZdivisorrûr>r?rƒsZ û 
 
 ü 
ü
 
 zArrowExtensionArray._rankznpt.NDArray[np.float64])r†ÚqsÚ interpolationrIcCs¤|jj}|j}tj |¡rF|j}|dkr8| t ¡¡}n| t ¡¡}t    j
|||d}tj |¡r˜|j}|dkr€| t ¡¡}n| t ¡¡}| |¡}t|ƒ|ƒS)zè
        Compute the quantiles of self for each quantile in `qs`.
 
        Parameters
        ----------
        qs : np.ndarray[float64]
        interpolation: str
 
        Returns
        -------
        same type as self
        ra)rir†) r~rLrJrKrJrlr
rmr¦r9re)r†r…r†rurrqrSr>r>r?Ú    _quantileÂs  
zArrowExtensionArray._quantile)r†r#rIc
CsÀ|jj}tj |¡rX|j}|dkr4|j t ¡¡}q^|dkrN|j t ¡¡}q^t    |ƒ‚n|j}|rj| 
¡}t   |¡}|  d¡ t  |  d¡t  |  d¡¡¡¡}tj |¡r´| |¡}t|ƒ|ƒS)aT
        Returns the mode(s) of the ExtensionArray.
 
        Always returns `ExtensionArray` even if only one value.
 
        Parameters
        ----------
        dropna : bool, default True
            Don't consider counts of NA values.
 
        Returns
        -------
        same type as self
            Sorted, if possible.
        raé@rrS)r~rLrJrKrJrlr
rmr¦r­r"r9rQrRr¹Úequalr )r†r#r¯rqrÚresÚ most_commonr>r>r?Ú_modeés$ 
 
 
ÿ 
zArrowExtensionArray._modec
Csœ|dkr |St|tjtjtjfƒr&|St|ƒr6tj}ntj}z|||jj    dd}WnDtj
k
r–}z$dt |ƒ›d|j ›}t |ƒ|‚W5d}~XYnX|S)z-Maybe convert value to be pyarrow compatible.NTrŒr%r&)ryrJrrƒr…r#rrÀr~rLr'rqrxr()r†r¿r)r*r‡r>r>r?rrsz0ArrowExtensionArray._maybe_convert_setitem_valueznpt.NDArray[np.bool_] | boolzArrayLike | Scalar)ÚcondrOrPc    Cstzt |||¡WStjk
r&YnXddœdd„}||ƒ\}}||ƒ\}}|pT|}t |||¡}tj||ddS)an
        Choose values based on a condition.
 
        Analogous to pyarrow.compute.if_else, with logic
        to fallback to numpy for unsupported types.
 
        Parameters
        ----------
        cond : npt.NDArray[np.bool_] or bool
        left : ArrayLike | Scalar
        right : ArrayLike | Scalar
 
        Returns
        -------
        pa.Array
        z%tuple[np.ndarray, pa.DataType | None]rÂcSsLt|tjtjfƒr|j}n t|tjƒr6|j}| ¡}nd}tj|t    d|fSrH)
ryrJrƒr…rLrr¾r´rrD)r¿r¯r>r>r?Ú_to_numpy_and_type?s 
z8ArrowExtensionArray._if_else.<locals>._to_numpy_and_typeTrŒ)r9r¥rJr{r´Úwherer)    r•rrOrPrŽZ    left_typeZ
right_typer¯rSr>r>r?rt#s
 zArrowExtensionArray._if_else)rr°Ú replacementscCst|tjƒr| ¡}trpt|tjƒrbt t|ƒd¡}t     t|ƒ¡||<tj
|t  ¡d}|  |¡}|  |||¡St|tjƒr’tj |j¡r’| ¡}zt |||¡WStjk
r¸YnXt|tjƒrÖtj
|td}nt|tjƒrê| ¡}tj
|td}|||<tj
||jddS)a¿
        Replace items selected with a mask.
 
        Analogous to pyarrow.compute.replace_with_mask, with logic
        to fallback to numpy for unsupported types.
 
        Parameters
        ----------
        values : pa.Array or pa.ChunkedArray
        mask : npt.NDArray[np.bool_] or bool
        replacements : ArrayLike or Scalar
            Replacement value(s)
 
        Returns
        -------
        pa.Array or pa.ChunkedArray
        Nr³r|TrŒ)ryrJr…rÑrrƒr´Úfullr¶rvrr¦r¸rtrKr¨rLr9Zreplace_with_maskr{rDrr¾)r•rr°rr7rSr>r>r?ruOs,  
  z&ArrowExtensionArray._replace_with_maskrzlist[list[Any]])ÚfuncrIcs‡fdd„|j ¡DƒS)zJApply a callable to each element while maintaining the chunking structure.cs&g|]}‡fdd„|jddDƒ‘qS)cs g|]}|dkrdnˆ|ƒ‘qSr8r>)rUrér’r>r?rV‡sÿzEArrowExtensionArray._apply_elementwise.<locals>.<listcomp>.<listcomp>F)r5rÆ)rUr8r“r>r?rV†sü
 
þz:ArrowExtensionArray._apply_elementwise.<locals>.<listcomp>rT)r†r’r>r“r?Ú_apply_elementwise„s
ûz&ArrowExtensionArray._apply_elementwise)ÚpatÚflagscCs(|rtd|›ƒ‚t|ƒt |j|¡ƒS)Nz!count not implemented with flags=)r­rLr9Zcount_substring_regexr~)r†r•r–r>r>r?Ú
_str_countŽszArrowExtensionArray._str_countú z"Literal[('left', 'right', 'both')])ÚwidthrBÚfillcharcCsX|dkrtj}n0|dkr tj}n |dkr0tj}ntd|›dƒ‚t|ƒ||j||dƒS)NrOrPZbothzInvalid side: z-. Side must be one of 'left', 'right', 'both')r™Úpadding)r9Z    utf8_lpadZ    utf8_rpadZ utf8_centerrsrLr~)r†r™rBršZpa_padr>r>r?Ú_str_pad“s
ÿzArrowExtensionArray._str_pad)Úcaser–ÚregexcCsT|rtd|›ƒ‚|rtj}ntj}||j|| d}t|ƒsH| |¡}t|ƒ|ƒS)Nz$contains not implemented with flags=)Z ignore_case)r­r9Zmatch_substring_regexZmatch_substringr~r&r.rL)r†r•rr–ÚnaržZ pa_containsrSr>r>r?Ú _str_contains¥s
z!ArrowExtensionArray._str_contains)r•cCs.tj|j|d}t|ƒs"| |¡}t|ƒ|ƒS©N©Úpattern)r9Z starts_withr~r&r.rL©r†r•rŸrSr>r>r?Ú_str_startswith´s
z#ArrowExtensionArray._str_startswithcCs.tj|j|d}t|ƒs"| |¡}t|ƒ|ƒSr¡)r9Ú    ends_withr~r&r.rLr¤r>r>r?Ú _str_endswithºs
z!ArrowExtensionArray._str_endswithrlzstr | re.Patternzstr | Callable)r•Úreplrwrr–ržc    CsRt|tjƒst|ƒs|r|r$tdƒ‚|r.tjntj}||j|||d}t    |ƒ|ƒS)NzRreplace is not supported with a re.Pattern, callable repl, case=False, or flags!=0)r£Ú replacementZmax_replacements)
ryÚreÚPatternÚcallabler­r9Zreplace_substring_regexZreplace_substringr~rL)    r†r•r¨rwrr–ržr’rSr>r>r?Ú _str_replaceÀs    ÿz ArrowExtensionArray._str_replacezint | Sequence[int])ÚrepeatscCsHt|tƒs tdt|ƒj›ƒ‚n$tr.tdƒ‚nt|ƒt |j|¡ƒSdS)Nz*repeat is not implemented when repeats is z)repeat is not implemented for pyarrow < 7)    ryrñr­rLrÜrr9Z binary_repeatr~)r†r®r>r>r?Ú _str_repeatÓs
ÿ
zArrowExtensionArray._str_repeatz Scalar | None)r•rr–rŸcCs(| d¡sd|›}|j||||ddS)Nú^T©rž)Ú
startswithr ©r†r•rr–rŸr>r>r?Ú
_str_matchÝs
 
zArrowExtensionArray._str_match)rr–rŸcCs.| d¡r| d¡r|›d}| ||||¡S)Nú$z//$)Úendswithr´r³r>r>r?Ú_str_fullmatchäs
z"ArrowExtensionArray._str_fullmatch)r]ÚstartÚendcCs¤|dkrZ|dk    rZtj|j||d}t ||¡}t |d¡}t |||¡}t |||¡}n>|dkr~|dkr~|j}t ||¡}ntd|›d|›d|›ƒ‚t|ƒ|ƒS)Nr©Ústoprlzfind not implemented with sub=z, start=z, end=)    r9Úutf8_slice_codeunitsr~Zfind_substringr‰r[r¥r­rL)r†r]r¸r¹ZslicesrSÚ    not_foundZ offset_resultr>r>r?Ú    _str_findës  ÿzArrowExtensionArray._str_find)Úic
Cs¬t |j¡}|dkr2t ||¡}|}|d}d}nt | |¡}|}|d}d}t | d¡¡}tj|j|||d}tj    dg|j 
¡|jj d}    t  |||    ¡}    t |ƒ|    ƒS)NrrkrlT©r¸r»Ústepr³) r9Ú utf8_lengthr~Ú greater_equalÚgreaterrÈr.r¼rJrrærLr¥)
r†r¿ÚlengthsZ out_of_boundsr¸r»rÁZnot_out_of_boundsÚselectedrSr>r>r?Ú_str_getûs(  ÿzArrowExtensionArray._str_get©ÚsepcCst|ƒt |j|¡ƒSr8)rLr9Z binary_joinr~)r†rÉr>r>r?Ú    _str_joinszArrowExtensionArray._str_join)rÉÚexpandcs(‡fdd„}| |¡}t|ƒt |¡ƒS)Ncs
| ˆ¡Sr8)Ú    partition©rÃrÈr>r?r@rAz4ArrowExtensionArray._str_partition.<locals>.<lambda>©r”rLrJr„©r†rÉrËÚ    predicaterSr>rÈr?Ú_str_partitions 
z"ArrowExtensionArray._str_partitioncs(‡fdd„}| |¡}t|ƒt |¡ƒS)Ncs
| ˆ¡Sr8)Ú
rpartitionrÍrÈr>r?r@rAz5ArrowExtensionArray._str_rpartition.<locals>.<lambda>rÎrÏr>rÈr?Ú_str_rpartitions 
z#ArrowExtensionArray._str_rpartitionrÀcCs4|dkr d}|dkrd}t|ƒtj|j|||dƒS)NrrkrÀ)rLr9r¼r~)r†r¸r»rÁr>r>r?Ú
_str_slicesÿzArrowExtensionArray._str_slicez
str | None)r¸r»r¨cCs2|dkr d}|dkrd}t|ƒt |j|||¡ƒS)Nrär)rLr9Zutf8_replace_slicer~)r†r¸r»r¨r>r>r?Ú_str_slice_replace's
z&ArrowExtensionArray._str_slice_replacecCst|ƒt |j¡ƒSr8)rLr9Z utf8_is_alnumr~rÉr>r>r?Ú _str_isalnum0sz ArrowExtensionArray._str_isalnumcCst|ƒt |j¡ƒSr8)rLr9Z utf8_is_alphar~rÉr>r>r?Ú _str_isalpha3sz ArrowExtensionArray._str_isalphacCst|ƒt |j¡ƒSr8)rLr9Zutf8_is_decimalr~rÉr>r>r?Ú_str_isdecimal6sz"ArrowExtensionArray._str_isdecimalcCst|ƒt |j¡ƒSr8)rLr9Z utf8_is_digitr~rÉr>r>r?Ú _str_isdigit9sz ArrowExtensionArray._str_isdigitcCst|ƒt |j¡ƒSr8)rLr9Z utf8_is_lowerr~rÉr>r>r?Ú _str_islower<sz ArrowExtensionArray._str_islowercCst|ƒt |j¡ƒSr8)rLr9Zutf8_is_numericr~rÉr>r>r?Ú_str_isnumeric?sz"ArrowExtensionArray._str_isnumericcCst|ƒt |j¡ƒSr8)rLr9Z utf8_is_spacer~rÉr>r>r?Ú _str_isspaceBsz ArrowExtensionArray._str_isspacecCst|ƒt |j¡ƒSr8)rLr9Z utf8_is_titler~rÉr>r>r?Ú _str_istitleEsz ArrowExtensionArray._str_istitlecCst|ƒt |j¡ƒSr8)rLr9Zutf8_capitalizer~rÉr>r>r?Ú_str_capitalizeHsz#ArrowExtensionArray._str_capitalizecCst|ƒt |j¡ƒSr8)rLr9Z
utf8_titler~rÉr>r>r?Ú
_str_titleKszArrowExtensionArray._str_titlecCst|ƒt |j¡ƒSr8)rLr9Z utf8_is_upperr~rÉr>r>r?Ú _str_isupperNsz ArrowExtensionArray._str_isuppercCst|ƒt |j¡ƒSr8)rLr9Z utf8_swapcaser~rÉr>r>r?Ú _str_swapcaseQsz!ArrowExtensionArray._str_swapcasecCst|ƒt |j¡ƒSr8)rLr9rÂr~rÉr>r>r?Ú_str_lenTszArrowExtensionArray._str_lencCst|ƒt |j¡ƒSr8)rLr9Z
utf8_lowerr~rÉr>r>r?Ú
_str_lowerWszArrowExtensionArray._str_lowercCst|ƒt |j¡ƒSr8)rLr9Z
utf8_upperr~rÉr>r>r?Ú
_str_upperZszArrowExtensionArray._str_uppercCs2|dkrt |j¡}ntj|j|d}t|ƒ|ƒS©N)Ú
characters)r9Zutf8_trim_whitespacer~Z    utf8_trimrL©r†Zto_striprSr>r>r?Ú
_str_strip]szArrowExtensionArray._str_stripcCs2|dkrt |j¡}ntj|j|d}t|ƒ|ƒSrå)r9Zutf8_ltrim_whitespacer~Z
utf8_ltrimrLrçr>r>r?Ú _str_lstripdszArrowExtensionArray._str_lstripcCs2|dkrt |j¡}ntj|j|d}t|ƒ|ƒSrå)r9Zutf8_rtrim_whitespacer~Z
utf8_rtrimrLrçr>r>r?Ú _str_rstripkszArrowExtensionArray._str_rstrip©ÚprefixcsNtjdkr&ddlm}tj|ˆd}n ‡fdd„}| |¡}t|ƒt     |¡ƒS)N)éé    r©Ú removeprefixrëcs
| ˆ¡Sr8rïrÍrër>r?r@rAz7ArrowExtensionArray._str_removeprefix.<locals>.<lambda>)
ÚsysÚ version_infoZpandas.util._str_methodsrðÚ    functoolsÚpartialr”rLrJr„)r†rìrðrÐrSr>rër?Ú_str_removeprefixrs 
 
z%ArrowExtensionArray._str_removeprefix)ÚsuffixcCsDtj|j|d}tj|jdt|ƒ d}t |||j¡}t|ƒ|ƒS)Nr¢rrº)r9r¦r~r¼r¶r¥rL)r†rör¦ÚremovedrSr>r>r?Ú_str_removesuffixƒsz%ArrowExtensionArray._str_removesuffixcCs$dd„}| |¡}t|ƒt |¡ƒS)NcSs| ¡Sr8)ÚcasefoldrÍr>r>r?r@ŠrAz3ArrowExtensionArray._str_casefold.<locals>.<lambda>rÎ)r†rÐrSr>r>r?Ú _str_casefold‰s
z!ArrowExtensionArray._str_casefoldÚstrict©Úencodingr›cs*‡‡fdd„}| |¡}t|ƒt |¡ƒS)Ncs | ˆˆ¡Sr8)r3rÍrür>r?r@rAz1ArrowExtensionArray._str_encode.<locals>.<lambda>rÎ)r†rýr›rÐrSr>rür?Ú _str_encodeŽs
zArrowExtensionArray._str_encode)r•r–rËcCs tdƒ‚dS)Nz:str.extract not supported with pd.ArrowDtype(pa.string()).)r­)r†r•r–rËr>r>r?Ú _str_extract“sÿz ArrowExtensionArray._str_extractcs6tj||d‰‡fdd„}| |¡}t|ƒt |¡ƒS)N)r–cs
ˆ |¡Sr8)ÚfindallrÍr±r>r?r@šrAz2ArrowExtensionArray._str_findall.<locals>.<lambda>)rªÚcompiler”rLrJr„)r†r•r–rÐrSr>r±r?Ú _str_findall˜s 
z ArrowExtensionArray._str_findallú|c    Cs¢t |j|¡ ¡}| ¡ ¡}| tj     |¡¡}g}| 
¡D]F}|dkr^|  dgt |ƒ¡q<t  |t t|ƒ¡¡}|  | 
¡¡q<t|ƒt |¡ƒ}|| 
¡fSrï)r9Ú split_patternr~rÑÚflattenrMr¸rJÚcomputerÚ    to_pylistÚappendr¶r/rÚsetrL)    r†rÉrrr;Zuniques_sortedZ result_dataÚlstrŠrSr>r>r?Ú_str_get_dummiesžs  z$ArrowExtensionArray._str_get_dummiescs,‡‡‡fdd„}| |¡}t|ƒt |¡ƒS)Ncs| ˆˆˆ¡Sr8)rrÍ©r¹r¸r]r>r?r@­rAz0ArrowExtensionArray._str_index.<locals>.<lambda>rΩr†r]r¸r¹rÐrSr>r r?Ú
_str_index¬s
zArrowExtensionArray._str_indexcs,‡‡‡fdd„}| |¡}t|ƒt |¡ƒS)Ncs| ˆˆˆ¡Sr8)ÚrindexrÍr r>r?r@²rAz1ArrowExtensionArray._str_rindex.<locals>.<lambda>rÎr r>r r?Ú _str_rindex±s
zArrowExtensionArray._str_rindex©Úformcs(‡fdd„}| |¡}t|ƒt |¡ƒS)Ncs t ˆ|¡Sr8)Ú unicodedataÚ    normalizerÍrr>r?r@·rAz4ArrowExtensionArray._str_normalize.<locals>.<lambda>rÎ)r†rrÐrSr>rr?Ú_str_normalize¶s 
z"ArrowExtensionArray._str_normalize)r]r¸cs,‡‡‡fdd„}| |¡}t|ƒt |¡ƒS)Ncs| ˆˆˆ¡Sr8)ÚrfindrÍr r>r?r@¼rAz0ArrowExtensionArray._str_rfind.<locals>.<lambda>rÎr r>r r?Ú
_str_rfind»s
zArrowExtensionArray._str_rfindz bool | None)r•rwrËržcCs6|dkr d}|rtj}ntj}t|ƒ||j||dƒS)N¾rrl)Ú
max_splits)r9Zsplit_pattern_regexrrLr~)r†r•rwrËržZ
split_funcr>r>r?Ú
_str_splitÀs zArrowExtensionArray._str_split)r•rwcCs(|dkr d}t|ƒtj|j||ddƒS)NrT)rÚreverse)rLr9rr~)r†r•rwr>r>r?Ú _str_rsplitÏszArrowExtensionArray._str_rsplitzdict[int, str]©Útablecs(‡fdd„}| |¡}t|ƒt |¡ƒS)Ncs
| ˆ¡Sr8)Ú    translaterÍrr>r?r@ÕrAz4ArrowExtensionArray._str_translate.<locals>.<lambda>rÎ)r†rrÐrSr>rr?Ú_str_translateÔs 
z"ArrowExtensionArray._str_translate)r™c s<||d<tjf|މ‡fdd„}| |¡}t|ƒt |¡ƒS)Nr™csd ˆ |¡¡S)NÚ
)ÚjoinÚwraprÍ©Ztwr>r?r@ÜrAz/ArrowExtensionArray._str_wrap.<locals>.<lambda>)ÚtextwrapÚ TextWrapperr”rLrJr„)r†r™rrÐrSr>r$r?Ú    _str_wrapÙs
 
zArrowExtensionArray._str_wrapcCst|ƒt |j¡ƒSr8)rLr9Úyearr~rÉr>r>r?Ú_dt_yearàszArrowExtensionArray._dt_yearcCst|ƒt |j¡ƒSr8)rLr9Údayr~rÉr>r>r?Ú_dt_dayäszArrowExtensionArray._dt_daycCst|ƒt |j¡ƒSr8)rLr9Z day_of_weekr~rÉr>r>r?Ú_dt_day_of_weekèsz#ArrowExtensionArray._dt_day_of_weekcCst|ƒt |j¡ƒSr8)rLr9Z day_of_yearr~rÉr>r>r?Ú_dt_day_of_yearïsz#ArrowExtensionArray._dt_day_of_yearcCst|ƒt |j¡ƒSr8)rLr9Úhourr~rÉr>r>r?Ú_dt_hourõszArrowExtensionArray._dt_hourcCst|ƒt |j¡ƒSr8)rLr9Z iso_calendarr~rÉr>r>r?Ú_dt_isocalendarùsz#ArrowExtensionArray._dt_isocalendarcCst|ƒt |j¡ƒSr8)rLr9Z is_leap_yearr~rÉr>r>r?Ú_dt_is_leap_yearüsz$ArrowExtensionArray._dt_is_leap_yearcCst|ƒt |j¡ƒSr8)rLr9Ú microsecondr~rÉr>r>r?Ú_dt_microsecondsz#ArrowExtensionArray._dt_microsecondcCst|ƒt |j¡ƒSr8)rLr9Úminuter~rÉr>r>r?Ú
_dt_minuteszArrowExtensionArray._dt_minutecCst|ƒt |j¡ƒSr8)rLr9Úmonthr~rÉr>r>r?Ú    _dt_monthszArrowExtensionArray._dt_monthcCst|ƒt |j¡ƒSr8)rLr9Ú
nanosecondr~rÉr>r>r?Ú_dt_nanosecond sz"ArrowExtensionArray._dt_nanosecondcCst|ƒt |j¡ƒSr8)rLr9Úquarterr~rÉr>r>r?Ú _dt_quarterszArrowExtensionArray._dt_quartercCst|ƒt |j¡ƒSr8)rLr9Úsecondr~rÉr>r>r?Ú
_dt_secondszArrowExtensionArray._dt_secondcCst|ƒ|j t ¡¡ƒSr8)rLr~r
rJZdate32rÉr>r>r?Ú_dt_dateszArrowExtensionArray._dt_datecCs6|jjjdkr|jjjnd}t|ƒ|j t |¡¡ƒS)N>rprorp)rxrzrtrLr~r
rJZtime64)r†rtr>r>r?Ú_dt_times
 ÿ ýzArrowExtensionArray._dt_timecCs
|jjjSr8)rxrzÚtzrÉr>r>r?Ú_dt_tz%szArrowExtensionArray._dt_tz©ÚformatcCst|ƒtj|j|dƒS)NrB)rLr9Ústrftimer~)r†rCr>r>r?Ú _dt_strftime)sz ArrowExtensionArray._dt_strftimeršz#Literal[('ceil', 'floor', 'round')]rr)rÚ    ambiguousÚ nonexistentc
Cs´|dkrtdƒ‚|dkr tdƒ‚t|ƒ}|dkr>td|›ƒ‚dddddddd    d
d d d dddœ}| |jd¡}|dkr†td|›dƒ‚|j}tt|›dƒ}    t|ƒ|    |j    ||dƒS)Nršzambiguous is not supported.znonexistent is not supported.z Must specify a valid frequency: r(r:r6Úweekr*r.r4r<Z millisecondr2r8)ÚAZASÚQZQSÚMZMSÚWÚDÚHÚTÚSÚLÚUÚNzfreq=ú is not supportedZ    _temporal)Úmultiplert)
r­r/rsrÚ_prefixrwrr9rLr~)
r†rÚfreqrFrGÚoffsetZpa_supported_unitrtrUZrounding_methodr>r>r?Ú_round_temporally,s8òz%ArrowExtensionArray._round_temporally©rFrGcCs| d|||¡S)NÚceil©rY©r†rWrFrGr>r>r?Ú_dt_ceilQszArrowExtensionArray._dt_ceilcCs| d|||¡S)NrQr\r]r>r>r?Ú    _dt_floorYszArrowExtensionArray._dt_floorcCs| d|||¡S)NrAr\r]r>r>r?Ú    _dt_roundaszArrowExtensionArray._dt_roundcCs4|j ¡}|jjjdkr&dd„|Dƒ}tj|tdS)NrpcSs$g|]}|dkrdn
|jdd‘qS)NF)Úwarn)Z to_pydatetime)rUÚtsr>r>r?rVlsz9ArrowExtensionArray._dt_to_pydatetime.<locals>.<listcomp>r|)r~rrrzrtr´rrD)r†rr>r>r?Ú_dt_to_pydatetimeis
z%ArrowExtensionArray._dt_to_pydatetimecCsŠ|dkrtd|›dƒ‚ddddœ |d¡}|dkrDtd|›dƒ‚|dkrf|j t |jjj¡¡}nt    j
|jt |ƒ||d}t |ƒ|ƒS)    Nršz
ambiguous=rTZearliestZlatest)ršZshift_backwardZ shift_forwardz nonexistent=rZ) r­rr~r
rJÚ    timestamprxrzrtr9Zassume_timezonerqrL)r†r@rFrGZnonexistent_parSr>r>r?Ú_dt_tz_localizeos(ýûÿz#ArrowExtensionArray._dt_tz_localize)N)N)T)T)NNN)T)r)rON)FN)T)T)r)rOr˜)TrNT)N)N)rlTrT)TrN)TrN)rN)NNN)NNN)N)N)N)rû)rT)r)r)rN)rN)rN)NrlFN)Nrl)ršrš)ršrš)ršrš)ršrš)ršrš)rÜÚ
__module__Ú __qualname__Ú__doc__Ú__annotations__rˆÚ classmethodr˜r©rÁrÄrÅrÇrÊrËrÍrÎrÔrÖrãrêrìrîrðÚpropertyrxròrórùrýr&rörrrrr!rŠr#rr)r“r0r1r<r>rArEr¸rªr rIrMrQrXrYrrxrƒr‡rŒrrrtrur”r—rœr r¥r§r­r¯r´r·r¾rÇrÊrÑrÓrÔrÕrÖr×rØrÙrÚrÛrÜrÝrÞrßràrárârãrärèrérêrõrørúrþrÿrr rrrrrrr r'r)r+r,Z _dt_dayofweekZ _dt_weekdayr-Z _dt_dayofyearr/r0r1r3r5r7r9r;r=r>r?rArErYr^r_r`rcreÚ __classcell__r>r>rûr?rhµs´
+ÿ>E 1
 :=û 
ü9
þÿüübü&/ÿ2xRùC')+4
üÿ
ù ÿÿÿ ÿ    
       û û (ü ü ü     ü)nÚ
__future__rrŠrrórårªrñr%Útypingrrrrrr    r
rÚnumpyr´Z pandas._libsr Zpandas._typingr r rrrrrrrrrrrZ pandas.compatrrrrZpandas.util._decoratorsrZpandas.util._validatorsrZpandas.core.dtypes.commonrr r!r"r#r$r%Zpandas.core.dtypes.missingr&Z pandas.corer'Zpandas.core.arrayliker(Zpandas.core.arrays.baser)r*Zpandas.core.commonÚcoreÚcommonrsZpandas.core.indexersr+r,r-Zpandas.core.strings.baser.Zpandas.tseries.frequenciesr/r²rJZpyarrow.computerr9Z%pandas.core.arrays.arrow._arrow_utilsr0Zpandas.core.arrays.arrow.dtyper1r‰rkZlessrÄZ
less_equalrÃrÛr:rBrCrèrNrTrUrVrWrçrZrírdrerPrfrgrvr}rhr>r>r>r?Ú<module>s  $     <  $            ú
ú      ð  
 
ÿ