hyb
2025-11-18 7539e6f48c75dcaeb808359cccfd1c0d0d182ce8
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
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
Ë
nñúh+‹ãóZ—ddlmZddlmZddlZddlZddlmZmZm    Z    m
Z
m Z m Z ddl Z ddlZddlZddlmZmZmZddlmZmZmZddlmZmZddlmZdd    lm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+dd
l,m-Z-dd l.m/Z/dd l0m1Z1dd l2m3Z3ddl4m5Z5m6Z6ddl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=ddl>m?Z?m@Z@mAZAmBZBmCZCmDZDddlEmFZFmGZGmHZHmIZImJZJddlKmLZLmMZMmNZNmOZOddlPmQZQddlRmSZSmTZTmUZUddlVmWZWddlXmYcmZZ[ddl\m]Z]m^Z^m_Z_m`Z`maZaddlbmcZcddldmeZemfZfmgZgddlhmiZiddljmkZkmlZlmmZmmnZnmoZompZpmqZqddlrmsZsddltmuZuddlvmYcmwZxddlymzZzddl{m|Z|m}Z}ddl~mZdd l€mZerdd!l‚mƒZƒm„Z„dd"l…m†Z†dd#l‡mˆZˆejd$«ZŠd%Z‹d&ZŒdDd'„ZGd(„d)euej«ZŽGd*„d+eŽ«ZGd,„d-e«ZGd.„d/eŽ«Z‘Gd0„d1e‘«Z’Gd2„d3e‘«Z“Gd4„d5e«Z”Gd6„d7e”«Z•Gd8„d9e•«Z–dEd:„Z—dFd;„Z˜    dG                    dHd<„Z™dd=œ                            dId>„ZšdJd?„Z›                                dKd@„ZœdGdLdA„ZdMdNdB„ZždEdC„ZŸy)Oé)Ú annotations)ÚwrapsN)Ú TYPE_CHECKINGÚAnyÚCallableÚLiteralÚcastÚfinal)Ú
get_optionÚusing_copy_on_writeÚwarn_copy_on_write)ÚNaTÚ    internalsÚlib)ÚBlockPlacementÚBlockValuesRefs)ÚNA) Ú    ArrayLikeÚAxisIntÚ DtypeBackendÚDtypeObjÚFÚ FillnaOptionsÚ IgnoreRaiseÚInterpolateOptionsÚQuantileInterpolationÚSelfÚShapeÚnpt©ÚAbstractMethodError)Úcache_readonly)Úfind_stack_level)Úvalidate_bool_kwarg)Úastype_array_safeÚastype_is_view)ÚLossySetitemErrorÚcan_hold_elementÚconvert_dtypesÚfind_result_typeÚmaybe_downcast_to_dtypeÚnp_can_hold_element)Úis_1d_only_ea_dtypeÚis_float_dtypeÚis_integer_dtypeÚ is_list_likeÚ    is_scalarÚis_string_dtype)ÚDatetimeTZDtypeÚExtensionDtypeÚ IntervalDtypeÚ NumpyEADtypeÚ PeriodDtype)Ú ABCDataFrameÚABCIndexÚABCNumpyExtensionArrayÚ    ABCSeries)Úis_re)Úis_valid_na_for_dtypeÚisnaÚna_value_for_dtype)Úmissing)Úextract_bool_arrayÚputmask_inplaceÚputmask_without_repeatÚsetitem_datetimelike_compatÚvalidate_putmask)Úquantile_compat)Úcompare_or_regex_searchÚ replace_regexÚshould_use_regex)Úshift)Ú CategoricalÚ DatetimeArrayÚExtensionArrayÚ IntervalArrayÚNumpyExtensionArrayÚ PeriodArrayÚTimedeltaArray)Ú StringDtype)Ú PandasObject)Ú expressions)Úensure_wrapped_if_datetimelikeÚ extract_array)Úcheck_setitem_lengths)Úget_values_for_csv)ÚIterableÚSequence)ÚIndex)ÚNDArrayBackedExtensionArrayÚobjectaOSetting a value on a view: behaviour will change in pandas 3.0.
You are mutating a Series or DataFrame object, and currently this mutation will
also have effect on other Series or DataFrame objects that share data with this
object. In pandas 3.0 (with Copy-on-Write), updating one Series or DataFrame object
will never modify another.
a Setting a value on a view: behaviour will change in pandas 3.0.
Currently, the mutation will also have effect on the object that shares data
with this object. For example, when setting a value in a Series that was
extracted from a column of a DataFrame, that DataFrame will also be updated:
 
    ser = df["col"]
    ser[0] = 0     <--- in pandas 2, this also updates `df`
 
In pandas 3.0 (with Copy-on-Write), updating one Series/DataFrame will never
modify another, and thus in the example above, `df` will not be changed.
cóL‡—t‰«dˆfd„ «}tt|«S)zp
    If we have a multi-column block, split and operate block-wise.  Otherwise
    use the original method.
    cóŠ•—|jdk(s|jddk(r ‰|g|¢­i|¤ŽS|j‰g|¢­i|¤ŽS)Nér)ÚndimÚshapeÚsplit_and_operate)ÚselfÚargsÚkwargsÚmeths   €úOH:\Change_password\venv_build\Lib\site-packages\pandas/core/internals/blocks.pyÚnewfunczmaybe_split.<locals>.newfunc¬sQø€à 9‰9˜Š>˜TŸZ™Z¨™]¨aÒ/Ù˜Ð.˜tÒ. vÑ.Ð .ð*4×)Ñ)¨$Ð@°Ò@¸Ñ@Ð @ó©Úreturnú list[Block])rr    r)rgris` rhÚ maybe_splitrn¦s,ø€ô  ˆ4ƒ[ôAóðAô ”7Ó Ðrjc    ó¨—eZdZUdZded<ded<ded<ded    <d
Zd ZeedTd „««Z    eedTd „««Z
eedTd„««Z eedTd„««Z eed„««Z eedTd„««ZeedTd„««Zed„«Zeed„««Zed„«ZedUd„«Zej*dVd„«Ze        dW                    dXd„«Ze        dW                    dYd„«ZedZd„«Zed[d„«Zed\d„«Zed]d„«Ze    d^                            d_d„«Zed`d „«Zedad!„«Zedbd"„«Zedbd#„«Z edcd$„«Z!edbd%„«Z"edbd&„«Z#e    dd                    ded'„«Z$e                                dfd(„«Z%ee&d^dgd)„««Z'ed*d d*d+œ                            dhd,„«Z(                        di                                                                    djd-„Z)eedkd.„««Z*e                dl                                            dmd/„«Z+ed0dd1œ            dnd2„«Z,edodpd3„«Z-edqd4„«Z.edrd5„«Z/e                    ds                            dtd6„«Z0e                    ds                    dud7„«Z1e                dv                                            dwd8„«Z2e                dx                                            dyd9„«Z3dzd:„Z4d;„Z5ed{d<„«Z6d|d=„Z7                d}d>„Z8d^d~d?„Z9ede:jvf                            dd@„«Z<                d€dA„Z=d^ddB„Z>    d‚            dgdC„Z?    dƒ                    d„dD„Z@                    d…                            d†dE„ZAdFd dddd ddGœ                                                            d‡dH„ZBed ddIddd ddJœ                                                                    dˆdK„«ZCed‰dL„«ZDdŠd‹dM„ZEe    dŒ                    ddN„«ZFed^dŽdO„«ZGdbdP„ZHedTdQ„«ZIeddR„«ZJdŠddS„ZKy)‘ÚBlockz
    Canonical n-dimensional unit of homogeneous dtype contained in a pandas
    data structure
 
    Index-ignorant; let the container take care of that
    znp.ndarray | ExtensionArrayÚvaluesÚintrarÚrefsrÚ__init__©Fcó`—|j}t|t« xst|t«S)zˆ
        We validate dimension for blocks that can hold 2D values, which for now
        means numpy dtypes or DatetimeTZDtype.
        )ÚdtypeÚ
isinstancer4r3©rdrws  rhÚ_validate_ndimzBlock._validate_ndimÇs0€ð—
‘
ˆÜ˜e¤^Ó4Ð4ò
¼
Ø ”?ó9
ð    
rjcó<—|jjtk(S©N)rqrwÚ
_dtype_obj©rds rhÚ    is_objectzBlock.is_objectÓs€ð{‰{× Ñ ¤JÑ.Ð.rjcóV—tj|jj« Sr|)rÚ is_np_dtyperqrwr~s rhÚ is_extensionzBlock.is_extensionØs €ô—?‘? 4§;¡;×#4Ñ#4Ó5Ð5Ð5rjcó—|j Sr|)r‚r~s rhÚ_can_consolidatezBlock._can_consolidateÝs€ð×$Ñ$Ð$Ð$rjcóF—|j|jjfSr|)r„rwÚnamer~s rhÚ_consolidate_keyzBlock._consolidate_keyãs€ð×$Ñ$ d§j¡j§o¡oÐ5Ð5rjcó‚—|j}t|tj«r|jdvS|jS)z7
        Can we store NA values in this Block?
        Úiub)rwrxÚnpÚkindÚ _can_hold_narys  rhrŒzBlock._can_hold_naès6€ð —
‘
ˆÜ eœRŸX™XÔ &Ø—:‘: UÐ*Ð *Ø×!Ñ!Ð!rjcób—|jjtjt«k(S)z^
        We can be bool if a) we are bool dtype or b) object dtype with bool objects.
        )rqrwrŠÚboolr~s rhÚis_boolz Block.is_boolós!€ð {‰{× Ñ ¤B§H¡H¬T£NÑ2Ð2rjcó,—t|j«Sr|)Úexternal_valuesrqr~s rhr‘zBlock.external_valuesûs€ä˜tŸ{™{Ó+Ð+rjcó0—t|jd¬«S)NF)Úcompat)r?rwr~s rhÚ
fill_valuezBlock.fill_valueÿs€ô" $§*¡*°UÔ;Ð;rjcóp—|jtk7r"t||j«r |j}|Sr|)rwr}r=r”©rdÚvalues  rhÚ_standardize_fill_valuezBlock._standardize_fill_values,€ð :‰:œÒ #Ô(=¸eÀTÇZÁZÔ(PØ—O‘OˆE؈ rjcó—|jSr|©Ú    _mgr_locsr~s rhÚmgr_locszBlock.mgr_locs s €à~‰~Ðrjcó—||_yr|rš)rdÚ new_mgr_locss  rhrœzBlock.mgr_locss    €à%ˆrjNcó–—|€ |j}|jrt||j¬«}t    |||j|¬«S)zm
        Create a new block, with type inference propagate any values that are
        not specified
        ©ra©Ú    placementrars)r›r‚Úensure_block_shaperaÚ    new_block©rdrqr¢rss    rhÚ
make_blockzBlock.make_blocksA€ð Ð ØŸ™ˆIØ × Ò Ü'¨°T·Y±YÔ?ˆF䘨9¸4¿9¹9È4ÔPÐPrjcó\—|€ |j}t|«|||j|¬«S)z2Wrap given values in a block of same type as self.r¡)r›Útyperar¥s    rhÚmake_block_same_classzBlock.make_block_same_class&s0€ð Ð ØŸ™ˆIðŒtD‹z˜&¨I¸D¿I¹IÈDÔQÐQrjcóP—t|«j}|jdk(r|›dt|«›d|j›}|Sdj |j Dcgc] }t|«‘Œc}«}|›d|jj›d|›d|j›}|Scc}w)Nr`z: z dtype: z x z, z    , dtype: )
r¨Ú__name__raÚlenrwÚjoinrbÚstrrœÚindexer)rdr†ÚresultÚsrbs     rhÚ__repr__zBlock.__repr__6s›€ôD‹z×"Ñ"ˆØ 9‰9˜Š>ؐv˜R¤ D£    ˜{¨(°4·:±:°,Ð?ˆFð
ˆ ð—J‘J°·
±
Ö;¨1¤ A¥Ò;Ó<ˆEؐv˜R § ¡ × 5Ñ 5Ð6°b¸¸¸yÈÏÉÈ ÐUˆFàˆ ùò <sÁB#có,—t|j«Sr|)r¬rqr~s rhÚ__len__z Block.__len__Bs€ä4—;‘;ÓÐrjcó˜—|j|}|j|«}|j}t|«|||j|¬«S)zC
        Perform __getitem__-like, return result as block.
        ©rs)r›Ú_slicersr¨ra)rdÚslcržÚ
new_valuesrss     rhÚslice_block_columnszBlock.slice_block_columnsFsD€ð
—~‘~ cÑ*ˆ à—[‘[ Ó%ˆ
؏y‰yˆØŒtD‹z˜* l°D·I±IÀDÔIÐIrjcó€—|j|}|j|«}t|«|||jd¬«S©z
        Perform __getitem__-like, return result as block.
 
        Only supports slices that preserve dimensionality.
        Nr¶)r›r·r¨ra)rdÚindicesržr¹s    rhÚtake_block_columnszBlock.take_block_columnsQs;€ð—~‘~ gÑ.ˆ à—[‘[ Ó)ˆ
ØŒtD‹z˜* l°D·I±IÀDÔIÐIrjcó¶—|j|«}|r|jj«r |jnd}t|«|||j|¬«Sr¼)r·rsÚ has_referencer¨ra)rdÚslicerržÚref_inplace_opr¹rss      rhÚgetitem_block_columnszBlock.getitem_block_columns`sJ€ð—[‘[ Ó(ˆ
Ù .°$·)±)×2IÑ2IÔ2KˆtyŠyÐQUˆØŒtD‹z˜* l°D·I±IÀDÔIÐIrjcóH—t|d¬«}t|j|«S)z#require the same dtype as ourselvesT©Ú extract_numpy)rVr(rq)rdÚelements  rhÚ_can_hold_elementzBlock._can_hold_elementms!€ô  °tÔ<ˆÜ § ¡ ¨WÓ5Ð5rjcó4—|j|jk(S)zÝ
        Should we set self.values[indexer] = value inplace or do we need to cast?
 
        Parameters
        ----------
        value : np.ndarray or ExtensionArray
 
        Returns
        -------
        bool
        ©rwr–s  rhÚ should_storezBlock.should_storess€ð{‰{˜dŸj™jÑ(Ð(rjc ó`—||jfi|¤Ž}t|«}|j|«S)z[
        apply the function to my values; return a block if we are not
        one
        )rqÚmaybe_coerce_valuesÚ_split_op_result)rdÚfuncrfr°s    rhÚapplyz Block.apply…s2€ñ d—k‘kÑ, VÑ,ˆä$ VÓ,ˆØ×$Ñ$ VÓ,Ð,rjcó̗|jdk(sJ‚||j«}|jjdk(r|}n|jdd«}|j|«}|gS)Nér`éÿÿÿÿ)rarqÚreshaper¦)rdrÏr°Ú
res_valuesÚnbs     rhÚreducez Block.reduces^€ðy‰y˜AŠ~Ј~ád—k‘kÓ"ˆà ;‰;× Ñ ˜qÒ  Ø‰JàŸ™¨¨AÓ.ˆJà _‰_˜ZÓ (ˆØˆtˆ rjcób—|jdkDrt|jt«rsg}t    |j
«D]W\}}t |j«s    |||dz}n||}t|«}|j||¬«}|j|«ŒY|S|j|«}|gS)Nr`)rqr¢)
rarxrwr4Ú    enumerater›r-rr¦Úappend)    rdr°ÚnbsÚiÚlocÚvalsÚbpÚblockrÖs             rhrÎzBlock._split_op_result s¨€ð ;‰;˜Š?œz¨&¯,©,¼ÔGðˆCÜ# D§N¡NÓ3ò "‘3Ü*¨6¯<©<Ô8Ø! ! a¨!¡eÐ,‘Dà! !™9Dä# CÓ(ØŸ™¨t¸r˜ÓBØ—
‘
˜5Õ!ð "ðˆJà _‰_˜VÓ $ˆàˆtˆ rjcó—|jdk(sJ‚g}t|j«D]\\}}|jt    ||dz«}t |«}t |«||d|j¬«}|j|«Œ^|S)zD
        Split a block into a list of single-column blocks.
        rÒr`r¡)    rarÙr›rqÚslicerr¨rsrÚ)rdÚ
new_blocksrÜÚref_locrÞrßrÖs       rhÚ_splitz Block._split¶s‡€ð
y‰y˜AŠ~Ј~àˆ
Ü# D§N¡NÓ3ò    "‰JˆAˆwØ—;‘;œu Q¨¨A©›Ñ/ˆDä Ó(ˆBØ”d“˜D¨B°Q¸T¿Y¹YÔGˆBØ × Ñ ˜bÕ !ð     "ð Ðrjcó´—|jdk(r|jddk7sJ‚g}|j«D]}||g|¢­i|¤Ž}|j|«Œ!|S)zÙ
        Split the block and apply func column-by-column.
 
        Parameters
        ----------
        func : Block method
        *args
        **kwargs
 
        Returns
        -------
        List[Block]
        rÒrr`)rarbråÚextend)rdrÏrerfÚ
res_blocksrÖÚrbss       rhrczBlock.split_and_operateÆsh€ðy‰y˜AŠ~ $§*¡*¨Q¡-°1Ò"4Ð4Ð4àˆ
Ø—+‘+“-ò    #ˆBِrÐ+˜DÒ+ FÑ+ˆCØ × Ñ ˜cÕ "ð    #ðÐrjcóö—t|jj|«}||jk(r td«‚t    |«rtt |jj«rUt |«rJ|turBt|tjtjf«rtj|«sd}ntt|tj«rZ|jdk(rKt |jj«r,t|j«rt!j"|«rd}|r?t%j&d|›d|jj›dt(t+«¬«|jj|k(r&td|›d    |jj›d
«‚d}|s5t|jt,«r|jj.d k(rd }|j1|||¬ «S)zé
        coerce the current block to a dtype compat for other
        we will return a block, possibly object, and not raise
 
        we can also safely try to coerce to the same dtype
        and will receive the same block
        z\Something has gone wrong, please report a bug at https://github.com/pandas-dev/pandas/issuesFr`zrSetting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas. Value 'z' has dtype incompatible with z5, please explicitly cast to a compatible dtype first.©Ú
stacklevelzDid not expect new dtype z to equal self.dtype zE. Please report a bug at https://github.com/pandas-dev/pandas/issues.ÚpythonT©ÚcopyÚ    using_cow)r*rqrwÚAssertionErrorr1r/r>rrxrŠÚ
datetime64Ú timedelta64ÚisnatÚndarrayrar.rÚhas_only_ints_or_nanÚwarningsÚwarnÚ FutureWarningr#rRÚstorageÚastype)rdÚotherÚwarn_on_upcastrðÚ    new_dtyperïs      rhÚcoerce_to_target_dtypezBlock.coerce_to_target_dtypeàs¢€ô% T§[¡[×%6Ñ%6¸Ó>ˆ    Ø ˜Ÿ
™
Ò "ä ð>óð ô eÔ Ü  §¡×!2Ñ!2Ô3ܐU” ØœSÑ ä˜5¤2§=¡=´"·.±.Ð"AÔBÄrÇxÁxÐPUÄð#‰Nä uœbŸj™jÔ )Ø—
‘
˜a’Ü  §¡×!2Ñ!2Ô3ܘuŸ{™{Ô+Ü×(Ñ(¨Ô/à"ˆNá Ü M‰Mðà˜Р>¸t¿{¹{×?PÑ?PÐ>QðRFðFôÜ+Ó-õ  ð ;‰;× Ñ      Ò )Ü Ø+¨I¨;Ð6KØ—;‘;×$Ñ$Ð%ð&?ð?óð ð
ˆáܘ4Ÿ:™:¤{Ô3Ø—
‘
×"Ñ" hÒ.àˆD؏{‰{˜9¨4¸9ˆ{ÓEÐErjc
ó¾—|dur|S|jtk(rœ|dk(r td«r|St|Dcgc]}|j    || d¬«‘Œc}«}|dk(rWt |«t |«k7st d„t||«D««s$tjdtt«¬«|S|€|S|dk(rtd«d    ur|St|Dcgc]}|j||«‘Œc}«}|dk(rWt |«t |«k7std
„t||«D««r$tjd tt«¬«|Scc}wcc}w) NFÚfillnaúfuture.no_silent_downcasting)rðrïÚconvert_stringc3óTK—|] \}}|j|jk(–—Œ"y­wr|rÊ)Ú.0ÚxÚys   rhú    <genexpr>z(Block._maybe_downcast.<locals>.<genexpr>>s&èø€ò6Ù+/¨1¨aA—G‘G˜qŸw™wÕ&ñ6ùó‚&(zøDowncasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`rëÚwhereTc3óTK—|] \}}|j|jk7–—Œ"y­wr|rÊ)rÚleftÚrights   rhrz(Block._maybe_downcast.<locals>.<genexpr>]s&èø€ò.Ù.9¨d°E—
‘
˜eŸk™kÕ)ñ.ùr    a|Downcasting behavior in Series and DataFrame methods 'where', 'mask', and 'clip' is deprecated. In a future version this will not infer object dtypes or cast all-round floats to integers. Instead call result.infer_objects(copy=False) for object inference, or cast round floats explicitly. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`)rwr}r Ú extend_blocksÚconvertr¬ÚallÚzipr÷rørùr#Ú _downcast_2dÚany)rdÚblocksÚdowncastrðÚcallerÚblkrÛÚbs        rhÚ_maybe_downcastzBlock._maybe_downcast sx€ð uÑ ØˆMà :‰:œÒ #ð˜Ò!¤jÐ1OÔ&Pؐ äð
 &ö    ðð—K‘KØ"+°i°-ÐPUð õòóˆCð˜Ò!ܐs“8œs 6›{Ò*´#ñ6Ü36°s¸FÓ3Cô6ô3ô—M‘MðPô &Ü#3Ó#5õ    ðˆJà Р؈MØ wÒ ¤:Ð.LÓ#MÐQUÑ#U؈MäÈfÖ UÈ §¡°¸)Õ!DÒ UÓVˆCð WÒ ä6‹{œc #›hÒ&¬#ñ.Ü=@ÀÈÓ=Mô.ô+ô
— ‘ ðLô"Ü/Ó1õ ðˆ
ùòsùò<!Vs µEÃEcó¦—t|j|¬«}t|«}||jur |jnd}|j    ||¬«gS)zs
        downcast specialized to 2D case post-validation.
 
        Refactored to allow use of maybe_split.
        rÊNr¶)r+rqrÍrsr¦)rdrwrðr¹rss     rhrzBlock._downcast_2dqsJ€ô-¨T¯[©[ÀÔFˆ
Ü(¨Ó4ˆ
Ø&¨$¯+©+Ñ5ˆtyŠy¸4ˆØ—‘ 
°Ó6Ð7Ð7rjT©rïrðrcóâ—|js-|s|r|jd¬«gS|r|j«gS|gS|jdk7rt|jddk7rb|j    t
j |||¬«}td„|D««r+|r|jd¬«gS|r|j«gS|gS|S|j}|jdk(r|d}tj|d|¬    «}d
}|r||ust|t«r|j|ur|j«}n||ur |j}t||j«}t!|«}|j#||¬ «gS) zz
        Attempt to coerce any object types to better types. Return a copy
        of the block (if copy = True).
        F©Údeepr`rrc3óNK—|]}|jjdk(–—Œy­w)ÚON©rwr‹)rrs  rhrz Block.convert.<locals>.<genexpr>–sèø€Ò;¨S3—9‘9—>‘> SÕ(Ñ;ùs‚#%rÒT)Úconvert_non_numericrNr¶)rrïrarbrcrprrrqrÚmaybe_convert_objectsrxrOÚ_ndarrayrsr£rÍr¦)rdrïrðrrrqrÕrss        rhrz Block.convert~sn€ð~Š~Ù™IØŸ    ™     u˜    Ó-Ð.Ð.Ù$(D—I‘I“K=Ð 4¨t¨fÐ 4à 9‰9˜Š>˜dŸj™j¨™m¨qÒ0Ø×+Ñ+Ü— ‘ ØØ#Ø-ð    ,óˆFô Ñ;°FÔ;Ô;áØ ŸI™I¨5˜IÓ1Ð2Ð2Ù(,˜Ÿ    ™    › }Ð8°4°&Ð8؈Mà—‘ˆØ ;‰;˜!Ò ð˜A‘YˆFä×.Ñ.Ø Ø $Ø)ô
ˆ
ð
ˆá ؘfÑ$ܘ*Ô&9Ô:Ø×#Ñ# vÑ-à#Ÿ™Ó*‰JØ ˜6Ñ !Ø—9‘9ˆDä'¨
°D·I±IÓ>ˆ
Ü(¨Ó4ˆ
Ø—‘ 
°Ó6Ð7Ð7rjc     󂇗|r ‰jr‰jd|¬«}    n‰g}    t||||g«s |    D
cgc]}
|
j|¬«‘Œc}
Sg} |    D]Ø} | jdk(s‰j
ddk(r| gn| j «} | D
cgc]}
t|
j||||||«‘Œ}}
tˆfd„|D««r"| j| j|¬««Œ•t|| «D]5\}}
| j|
j|||
jdk7¬««Œ7ŒÚ| Scc}
wcc}
w)NFrîrr`rc3ó<•K—|]}|‰jk(–—Œy­wr|rÊ)rrwrds  €rhrz'Block.convert_dtypes.<locals>.<genexpr>Üsøèø€Ò;¨55˜DŸJ™JÕ&Ñ;ùsƒ)rwrïÚsqueeze) rrrrïrarbrår)rqrrÚrrû)rdrïrðÚ infer_objectsrÚconvert_integerÚconvert_booleanÚconvert_floatingÚ dtype_backendÚblksrrérÚsub_blksÚdtypesrws`               rhr)zBlock.convert_dtypes·sPø€ñ ˜TŸ^š^Ø—<‘< U°i<Ó@‰Dà6ˆDäØ ˜°ÀÐ Pô
ð04Ö4¨!A—F‘F FÕ%Ò4Ð 4àˆØò    RˆCà #§¡¨A¢ °·±¸A±À!Ò1C˜‘uÈÏÉˈHð"ö ðôØ—H‘HØ"Ø#Ø#Ø$Ø!Ø!õð ˆFð ôÓ;°FÔ;Ô;à—
‘
˜3Ÿ8™8¨˜8Ó.Ô/Øä ¨Ó1ò R‘qØ—
‘
˜1Ÿ8™8¨%°dÀAÇFÁFÈaÁK˜8ÓPÕQñ Rð)    Rð,ˆ
ùò35ùò s ºD7Â"D<có.—|jjSr|)rqrwr~s rhrwz Block.dtypeès€ð{‰{נѠРrjc ó@—|j}|r@|jdk(r1t|«r&|jddk7r t    d«‚|ddd…f}t ||||¬«}t |«}d}|s|s,t|j|j«r |j}|j||¬«}    |    j|jk7rWtd|›d    |jj›d
|j›d |    jj›d
|    j›d  «‚|    S) ax
        Coerce to the new dtype.
 
        Parameters
        ----------
        dtype : np.dtype or ExtensionDtype
        copy : bool, default False
            copy if indicated
        errors : str, {'raise', 'ignore'}, default 'raise'
            - ``raise`` : allow exceptions to be raised
            - ``ignore`` : suppress exceptions. On error return original object
        using_cow: bool, default False
            Signaling if copy on write copy logic is used.
        squeeze : bool, default False
            squeeze values to ndim=1 if only one column is given
 
        Returns
        -------
        Block
        rÒrr`z*Can not squeeze with more than one column.N)rïÚerrorsr¶zcannot set astype for copy = [z ] for dtype (z [z]) to different shape (z])) rqrar-rbÚ
ValueErrorr%rÍr&rwrsr¦Ú    TypeErrorr†)
rdrwrïr2rðr'rqr¹rsÚnewbs
          rhrûz Block.astypeís
€ð:—‘ˆÙ v—{‘{ aÒ'Ô,?ÀÔ,F؏|‰|˜A‰ !Ò#Ü Ð!MÓNÐNؘAšq˜D‘\ˆFä& v¨u¸4ÈÔOˆ
ä(¨Ó4ˆ
àˆÙ ™T¤~°f·l±lÀJ×DTÑDTÔ'UØ—9‘9ˆDà‰˜z°ˆÓ5ˆØ :‰:˜Ÿ™Ò #ÜØ0°°ð7Ø—J‘J—O‘OÐ$ B t§z¡z lð3Ø—J‘J—O‘OÐ$ B t§z¡z l°"ð6óð ð
ˆ rjÚnan)Úna_repÚquotingcóZ—t|j|||||¬«}|j|«S)z"convert to our native types format)r7r8Ú float_formatÚ date_formatÚdecimal)rXrqr¦)rdr:r;r<r7r8r°s       rhrXzBlock.get_values_for_csv!s5€ô
$Ø K‰KØØØ%Ø#Øô 
ˆð‰˜vÓ&Ð&rjcó®—|j}|r|j«}d}n |j}t|«||j|j
|¬«S)zcopy constructorNr¡)rqrïrsr¨r›ra)rdrrqrss    rhrïz
Block.copy0sI€ð—‘ˆá Ø—[‘[“]ˆF؉Dà—9‘9ˆDØŒtD‹z˜&¨D¯N©NÀÇÁÐQUÔVÐVrjcó’—|r0|r.|jj«}|j|¬«}|S|r|n|j«}|S)Nr)rsrÀrï)rdrðÚinplacerrs     rhÚ _maybe_copyzBlock._maybe_copy?sF€á ™Ø—9‘9×*Ñ*Ó,ˆDØ—)‘) )Ó&ˆCðˆ
ñ"‘$ t§y¡y£{ˆC؈
rjcót—d}| }|r.|r |jj«rd}||fS|j}||fS)NT)rsrÀ)rdrðr?rsrïs     rhÚ_get_refs_and_copyzBlock._get_refs_and_copyHsI€àˆØˆ{ˆÙ Ù˜TŸY™Y×4Ñ4Ô6ؐðTˆzÐð—y‘yØTˆzÐrjc ó6—|j}t|t«rC|j||«}    t    t|    j«}|j ||d¬«|    gS|j |«s+|r|jd¬«gS|r|gS|j«gS|€tj||«}|j«s+|r|jd¬«gS|r|gS|j«gS|j |«s|jdk(r2t|«r&|j||«}    t|    j||«|rat«rW|U|jsI|j j#«r/t%j&t(t*t-«¬«d|_|j.r|‡t1d«dur|    g}
|
S|    j3d||xs|jdk(¬«}
t5|
«d    kDs|
d
j|    jk7r$t%j&d t*t-«¬«|
S|    g}
|
S|j6d    k(s|j8d
d    k(r]||t:ur)|j=t?jt@««}    n|jC||¬ «}    |    jE||d|||¬ «Sg}
tG|jI««D];\} } |
jKtM|«jE| ||d|| | d    z||¬ ««Œ=|
S)z…
        replace the to_replace value with value, possible to create new
        blocks here this is just a call to putmask.
        T©Ú
to_replacer—r?FrÚstringrërrr`ráDowncasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`©rð©rEr—r?Úmaskrðr)'rqrxrKr@r    Ú_replacerÈrïr@Ú mask_missingrrwr<rBr Úwarned_alreadyrsrÀr÷røÚCOW_WARNING_GENERAL_MSGrùr#rr rr¬rarbrrûrŠr]rÿÚreplacerÙrårçr¨) rdrEr—r?rJrðÚalready_warnedrrqrrrÜrÖs              rhrOz Block.replaceVsþ€ð(—‘ˆä fœkÔ *ð×"Ñ" 9¨gÓ6ˆCÜœ+ s§z¡zÓ2ˆFØ O‰O z¸ÈˆOÔ Mؐ5ˆLà×%Ñ% jÔ1ñ
ØŸ    ™     u˜    Ó-Ð.Ð.á!(˜vÐ;¨t¯y©y«{¨mÐ;à ˆ<Ü×'Ñ'¨°
Ó;ˆD؏x‰xŒzñØŸ    ™     u˜    Ó-Ð.Ð.á!(˜vÐ;¨t¯y©y«{¨mÐ;à × #Ñ # EÔ *¨t¯z©z¸XÓ/EÌ%ÐPUÍ,ð×"Ñ" 9¨gÓ6ˆCÜ ˜CŸJ™J¨¨eÔ 4áÜ&Ô(Ø"Ð.Ø&×5Ò5à—9‘9×*Ñ*Ô,Ü—M‘MÜ/Ü%Ü#3Ó#5õð
59NÔ1à—N’N u }ôÐ<Ó=ÀÑEØ!˜UFð,ˆMð)!Ÿ[™[Ø"Ø"+Ø'5Ò'O¸¿¹ÀxÑ9Oð)óFô
˜6“{ Q’¨&°©)¯/©/¸S¿Y¹YÒ*FÜ Ÿ ™ ðTô*Ü'7Ó'9õ ðˆMð˜ØˆMà Y‰Y˜!Š^˜tŸz™z¨!™}°Ò1؈} ¬¡ Ø—k‘k¤"§(¡(¬6Ó"2Ó3‘à×1Ñ1°%À9Ð1ÓMØ—;‘;Ø%ØØØØ#Ø-ð óð ðˆFÜ" 4§;¡;£=Ó1ò ‘2Ø— ‘ ܘ“J×&Ñ&ØØ#-Ø#Ø $Ø! ! a¨!¡e˜_Ø"+Ø'5ð'óõ
ð ðˆMrjcó&—t|«s<|j|«s+|r|jd¬«gS|r|gS|j«gSt|«r'|jtdfvr|jd¬«gS|j|«sC|jdk(r t|«s)|j t jt««}n|j||«}tj|«}    t|j|    ||«|rat«rW|U|jsI|jj«r/t!j"t$t&t)«¬«d|_ |j+d||xs|jdk(¬«}
t-d«} t/|
«dkDs=|
d    j|jk7rG|jdk(r|
d    jdk(s&| s$t!j"d
t&t)«¬«|
S) aA
        Replace elements by the given value.
 
        Parameters
        ----------
        to_replace : object or pattern
            Scalar to replace or regular expression to match.
        value : object
            Replacement object.
        inplace : bool, default False
            Perform inplace modification.
        mask : array-like of bool, optional
            True indicate corresponding element is ignored.
        using_cow: bool, default False
            Specifying if copy on write is enabled.
 
        Returns
        -------
        List[Block]
        FrrFrëTrrr`rrG)r<rÈrïrwr]rûrŠr@ÚreÚcompilerHrqr rMrsrÀr÷rørNrùr#rr r¬) rdrEr—r?rJrðrrPràÚrxrÛÚopts             rhÚ_replace_regexzBlock._replace_regexÖsÅ€ô>ZÔ ¨×)?Ñ)?À
Ô)KñØŸ    ™     u˜    Ó-Ð.Ð.Ù$D6Ð 7¨4¯9©9«;¨-Ð 7ä Ô  §¡´F¸HÐ3EÑ!Eð—I‘I 5IÓ)Ð*Ð *ð × "Ñ " 5Ô )¨d¯j©j¸HÒ.DÌÈuÌà—K‘K¤§¡¬Ó 0Ó1‰Eà×$Ñ$ Y°Ó8ˆEä Z‰Z˜
Ó #ˆäe—l‘l B¨¨tÔ4ñ Ü"Ô$ØÐ*Ø"×1Ò1ày‰y×&Ñ&Ô(Ü— ‘ Ü+Ü!Ü/Ó1õð
15Ô-àm‰mØØØ)ÒC¨T¯Z©Z¸8Ñ-Cðó
ˆô
Ð7Ó8ˆä ‹HqŠLàA‘— ‘  § ¡ Ò+ØŸ™ xÒ/°C¸±F·L±LÀHÒ4LáÜ M‰MðHô Ü+Ó-õ
ðˆ
rjc óü‡‡‡ —|jŠ t‰ t«rC|j||«}t    t|j«Š ‰ j ||d¬«|gS|j dk(}t||«D    
cgc]4\}    }
|j|    «s|j dk(rt|    «r|    |
f‘Œ6} }    }
t| «s+|r|jd¬«gS|r|gS|j«gSt| «dz
} t‰ j «rt‰ «Šˆˆˆ fd„| D«} n ˆ fd„| D«} |r t| «} |r|g}n|r|n|j«g}|rat«rW|U|j sI|j"j%«r/t'j(t*t,t/«¬    «d|_t1d
«}t3t| | ««D]Œ\}\\}}}|| k(}g}t3|«D]h\}}t|«dk(r|}n|}t|t4«rJ‚|||dz}|j7||||‰||¬ «}|ri|| k7rd|D]_}t9j:|«}|j"j<j?|j"j<jA|««Œa|sŸ|r|jBr‘tEd „|D««sg}|D]v}|jG| ||¬ «}t|«dkDs|dj |j k7r$t'j(dt,t/«¬    «|jI|«Œx|}|jI|«Œk|}Œ|Scc}
}    w)z:
        See BlockManager.replace_list docstring.
        TrDrFFrr`c 3óp•K—|]-}tttt‰|d‰‰¬«««–—Œ/y­w)r)ÚregexrJN)rAr    rrG)rr±Úna_maskrYrqs  €€€rhrz%Block.replace_list.<locals>.<genexpr>_s@øèø€ò
6ðô#ÜÜ!Ü/Ø" A a¡D°¸Gôó÷ñ
6ùsƒ36c3óP•K—|]}tj‰|d«–—Œy­w)rN)r@rL)rr±rqs  €rhrz%Block.replace_list.<locals>.<genexpr>ls"øèø€ÒG¸A”W×)Ñ)¨&°!°A±$×7ÑGùsƒ#&rër)rEr—rJr?rYrðrc3ó$K—|]}|du–—Œ
y­wr|ru©rrs  rhrz%Block.replace_list.<locals>.<genexpr>²sèø€Ò=¨a  T¤    Ñ=ùs‚rrrG)%rqrxrKr@r    rKrwrrÈr<r¬rïr2r>Úlistr rMrsrÀr÷rørNrùr#r rÙrŽÚ_replace_coerceÚweakrefÚrefÚreferenced_blocksÚpopÚindexrrrrç)!rdÚsrc_listÚ    dest_listr?rYrðrPrrrrÚpairsÚsrc_lenÚmasksÚrbrUrÜÚsrcÚdestrJrÚnew_rbÚblk_numÚmÚmibr°rrarÛÚres_blkÚ    convertedrZrqs!    `                          @@rhÚ replace_listzBlock.replace_list4s„ú€ð—‘ˆä fœkÔ *ð×"Ñ" 9¨gÓ6ˆCÜœ+ s§z¡zÓ2ˆFØ O‰O x°yÈ$ˆOÔ Oؐ5ˆLàŸ™ xÑ/ˆô
˜H iÓ0÷
ᐐ1Ø×&Ñ& qÔ)¨d¯j©j¸HÒ.DÌÈqÌðŠFð
ˆñ
ô
5ŒzÙØŸ    ™     u˜    Ó-Ð.Ð.á$D6Ð 7¨4¯9©9«;¨-Ð 7äe“*˜q‘.ˆä ˜6Ÿ<™<Ô (ô˜F“|mˆGõ
6ðô
6‰EóHÀÔGˆEñ ܘ“KˆEá ð‰Bá!‘$ t§y¡y£{Ð3ˆBñ Ü"Ô$ØÐ*Ø"×1Ò1ày‰y×&Ñ&Ô(Ü— ‘ Ü+Ü!Ü/Ó1õð
15Ô-äÐ7Ó8ˆÜ&/´°E¸5Ó0AÓ&BóD    Ñ "ˆAÑ"‘ d˜Tؘ7‘lˆGØ"$ˆFô
!*¨"£ ó< &‘ ˜Ür“7˜a’<Ø‘AàCÜ)¨#¬tÔ4Ð4Ð4ؘG g°¡kÐ2Að
×,Ñ,Ø"ØØØ#ØØ'Ø#1ð-óñ  g¢ð$ò˜Ü%Ÿk™k¨!›n˜ØŸ™×0Ñ0×4Ñ4ØŸF™F×4Ñ4×:Ñ:¸3Ó?õðñÙØŸ š ÜÑ=°9Ô=Ô=ðCØ#)ò.˜Ø$+§O¡OØ.7¨-Ø&/Ø+9ð%4ó%˜    ô
˜y›>¨AÒ-°¸1±×1CÑ1CÀwÇ}Á}Ò1TÜ$ŸM™Mð!Xô!.Ü+;Ó+=õ ðŸ
™
 9Õ-ð'.ð(!FØ— ‘ ˜fÖ%ðy< &ðzŠBðID    ðJˆ    ùó
sÂ9M8có@—t||«r|j||||||¬«S|€ã|j«r¨|jj    «}|j t jt«d|¬«}    |    |us|r|s|    j«}    n0|r.|r,|    jj    «r|r|    j«}    t|    j||«|    gS|r|jd¬«gS|r|gS|j«gS|j||||||¬«S)ai
        Replace value corresponding to the given boolean array with another
        value.
 
        Parameters
        ----------
        to_replace : object or pattern
            Scalar to replace or regular expression to match.
        value : object
            Replacement object.
        mask : np.ndarray[bool]
            True indicate corresponding element is ignored.
        inplace : bool, default True
            Perform inplace modification.
        regex : bool, default False
            If true, perform regular expression substitution.
 
        Returns
        -------
        List[Block]
        )r?rJrðrFrîrrI) rIrVrrsrÀrûrŠrwr]rïrBrqrO)
rdrEr—rJr?rYrðrÚhas_refrÖs
          rhr_zBlock._replace_coerceÏs€ô@ ˜E :Ô .Ø×&Ñ&ØØØØØ#Ø-ð 'óð ðˆ}à—8‘8”:Ø"Ÿi™i×5Ñ5Ó7GØŸ™¤R§X¡X¬fÓ%5¸EÈY˜ÓWBؘd™
¡i¹ØŸW™W›Y™Ù ¡W°·±×1FÑ1FÔ1HÉYàŸW™W›Y˜Ü# B§I¡I¨t°UÔ;ؘ4KÙØ ŸI™I¨5˜IÓ1Ð2Ð2Ù!(˜vÐ;¨t¯y©y«{¨mÐ;Ø—<‘<Ø%ØØØØ#Ø-ð  óð rjcó—|S©zA
        For compatibility with 1D-only ExtensionArrays.
        ru©rdÚargs  rhÚ_maybe_squeeze_argzBlock._maybe_squeeze_args    €ðˆ
rjcó—|Srwru)rdr¯s  rhÚ_unwrap_setitem_indexerzBlock._unwrap_setitem_indexers    €ðˆrjcó.—|jjSr|)rqrbr~s rhrbz Block.shape#s€à{‰{נѠРrjcó —|j|Sr|©rq)rdrÜs  rhÚigetz
Block.iget's€ð{‰{˜1‰~Ðrjcó —|j|S)zreturn a slice of my valuesr)rdrÁs  rhr·z Block._slice0s€ð
{‰{˜6Ñ"Ð"rjcód—|r|jj«|_||j|<y)a¨
        Modify block values in-place with new item value.
 
        If copy=True, first copy the underlying values in place before modifying
        (for Copy-on-Write).
 
        Notes
        -----
        `set_inplace` never creates a new array or new Block, whereas `setitem`
        _may_ create a new array and always creates a new Block.
 
        Caller is responsible for checking values.dtype == self.dtype.
        N©rqrï©rdÚlocsrqrïs    rhÚ set_inplacezBlock.set_inplace7s)€ñ ØŸ+™+×*Ñ*Ó,ˆDŒKØ"ˆ ‰ DÒrjcó‚—|j}|tjur|j}d}nd}t    j
|||||¬«}t |t«r|jdk(r|€J‚|dk(r|€J‚|€ |j}|j|jk7r|j||«S|j||«S)zN
        Take values according to indexer and return them as a block.
        FT)ÚaxisÚ
allow_fillr”r`r) rqrÚ
no_defaultr”ÚalgosÚtake_ndrxÚExtensionBlockrar›rwr¦r©)rdr¯rˆržr”rqr‰r¹s        rhrŒz Block.take_ndIs€ð—‘ˆà œŸ™Ñ 'ØŸ™ˆJ؉JàˆJô—]‘]Ø G $°:È*ô
ˆ
ô dœNÔ +🠠  ™     Qš¨<Ð+?Ð @Ð@ؘA’I ,Ð"6Ð7Ð7à Ð ØŸ>™>ˆLà × Ñ ˜tŸz™zÒ )Ø—?‘? :¨|Ó<Ð <à×-Ñ-¨j¸,ÓGÐ Grjcóڗ|j|jj|¬«\}}|jd«}|j|}||}t    |«}t ||¬«g}||fS)a 
        Return a list of unstacked blocks of self
 
        Parameters
        ----------
        unstacker : reshape._Unstacker
        fill_value : int
            Only used in ExtensionBlock._unstack
        new_placement : np.ndarray[np.intp]
        allow_fill : bool
        needs_masking : np.ndarray[bool]
 
        Returns
        -------
        blocks : list of Block
            New blocks of unstacked values.
        mask : array-like of bool
            The mask of columns of `blocks` we should keep.
        ©r”r©r¢)Úget_new_valuesrqÚTrrÚ new_block_2d)    rdÚ    unstackerr”Ú new_placementÚ needs_maskingr¹rJrßrs             rhÚ_unstackzBlock._unstackqsw€ð4%×3Ñ3Ø K‰KM‰M jð4ó
ш
Dðx‰x˜‹{ˆð —\‘\ $Ñ'ˆ
Ø% dÑ+ˆ ä ˜MÓ *ˆÜ˜z°RÔ8Ð9ˆØtˆ|Ðrjcó€—|j|«}ttj|j«}|j
dk(r |j }t|||«|jtk7r t|d¬«}    t|j|«}|jtk(r0||}tj|«rt|t|«|«}|j!|d¬«}ttj|jj «}t#|tj«r"|j
dk(rt|«dk(r|d}    |||<|S#t$t&f$r}t|«r t'd«|‚‚d}~wwxYw#t($r(|j+|d¬    «}|j-||«cYSwxYw)
a
        Attempt self.values[indexer] = value, possibly creating a new array.
 
        Parameters
        ----------
        indexer : tuple, list-like, array-like, slice, int
            The subset of self.values to set
        value : object
            The value being set
        using_cow: bool, default False
            Signaling if CoW is used.
 
        Returns
        -------
        Block
 
        Notes
        -----
        `indexer` is a direct slice/positional indexer. `value` must
        be a compatible shape.
        rÒTrÅ©r?r`)r.z)setting an array element with a sequence.N©rý)r˜r    rŠrõrqrar’rWrwr}rVr,rr0rDr¬r@rxr4r3r'rÿÚsetitem)    rdr¯r—rðrqÚcastedÚviÚerrrÖs             rhr›z Block.setitemŸs€ð.×,Ñ,¨UÓ3ˆä”b—j‘j $§+¡+Ó.ˆØ 9‰9˜Š>Ø—X‘XˆFô    ˜g u¨fÔ5à :‰:œÒ #ä! %°tÔ<ˆEð    Ü(¨¯©°uÓ=ˆFð z‰zœZÒ'à˜G‘_Ü×#Ñ# BÔ'ô9¸ÄÀRÃÈ&ÓQFà×#Ñ# I°tÐ#Ó<ˆDÜœ"Ÿ*™* d§k¡k§m¡mÓ4ˆFܘ&¤"§*¡*Ô-°&·+±+ÀÒ2BÄsÈ6Ã{ÐVWÒGWà ™ð Ø"(w‘ðˆ øô œzÐ*ò Ü Ô'Ü$ØCóàððûð  ûô)!ò    .à×,Ñ,¨UÀ4Ð,ÓHˆBØ—:‘:˜g uÓ-Ò -ð    .ús*Á?F ÅEÅF    Å,FÆF    Æ .F=Æ<F=có$—|}ttj|j«}t    |j
|«\}}t |tttf«rJ‚|tjur |j}|j|«}t|d¬«}|r|r|jd¬«gS|gSt!«rW|U|j"sI|j$j'«r/t)j*t,t.t1«¬«d|_    t3|j4|«}|j7|d¬«}ttj|j«}t9|j
||«|gS#t:$r    |j<dk(s|j>d    dk(r_tA|«s%|jC|d¬
«jE||«cYS|jG«d    }    |jI|    ||    |¬ «}
|
gcYSt |tj«} g} |jK«} tM| «D]J\}}
|}| r|dd…||dz…f}|dd…||dz…f}|
jE|||¬ «}| jO|«ŒL| cYSwxYw) a}
        putmask the data to the block; it is possible that we may create a
        new dtype of block
 
        Return the resulting block(s).
 
        Parameters
        ----------
        mask : np.ndarray[bool], SparseArray[bool], or BooleanArray
        new : a ndarray/object
        using_cow: bool, default False
 
        Returns
        -------
        List[Block]
        TrÅFrNrër™r`rršrH)(r    rŠrõrqrEr’rxr9r;r8rrŠr”r˜rVrïr rMrsrÀr÷rørNrùr#r,rwr@rCr'rarbr0rÿÚputmaskÚnonzeror›rårÙrç)rdrJÚnewrðrPÚ    orig_maskrqÚnooprœr¯rÖÚis_arrayrèrÛrÜÚnÚsubmaskrés                  rhr z Block.putmaskàs\€ð&ˆ    Ü”b—j‘j $§+¡+Ó.ˆÜ% f§h¡h°Ó5‰
ˆˆdܘc¤H¬i¼Ð#FÔGÐGÐGà ”#—.‘.Ñ  Ø—/‘/ˆCà×*Ñ*¨3Ó/ˆÜ˜C¨tÔ4ˆá ÙØŸ    ™     u˜    Ó-Ð.Ð.ؐ6ˆMô Ô  ØÐ*Ø"×1Ò1ày‰y×&Ñ&Ô(Ü— ‘ Ü+Ü!Ü/Ó1õð
15Ô-ð$    "Ü(¨¯©°sÓ;ˆFà×#Ñ# I°tÐ#Ó<ˆDÜœ"Ÿ*™* d§k¡kÓ2ˆFä " 6§8¡8¨T°6Ô :ؐ6ˆMøÜ ó    "؏y‰y˜AŠ~ §¡¨A¡°!Ò!3ô$ CÔ(à×6Ñ6بDð7óç‘g˜d CÓ(ò)ð#Ÿl™l›n¨QÑ/GØŸ™ g¨s°7©|Ày˜ÓQBؘ4’Kô& c¬2¯:©:Ó6à
Ø—k‘k“mÜ& s›^ò+‘EArؐAÙࢠ1 q¨1¡u 9  Ñ-˜à'ª¨1¨q°1©u¨9¨ Ñ5GØŸ*™* W¨a¸9˜*ÓECØ×%Ñ% cÕ*ð+ð"Ò!ð9    "ús!ÄA&E<Å<AJÇ-JÈBJÊJcó|—|j|jk(sJ‚t|tttf«rJ‚|jdk(}t |«}t tj|j«}|}|r |j}t||«\}}    |    r&|r|jd¬«gS|j«gS|tjur |j}|j!|«}    t#|j$|«}
|
}t'||j)«|«} | |urmt+|«r:t-|«t-|«kr#tj.|||«t1d«‚|j«} tj2| || «n‡t+|«rct|tj«sIt-|«|j4dk(r.tj6|«j9|j4«}t;j.|||«}     |r | j} |jO| «gS#t<t>t@f$rí|jdk(s|j4ddk(r<|jC|«} | j/|||¬«}|jE|||d    ¬
«cYSt|tjtFf«}g}|jI«}tK|«D]K\}}|}|r|d d …||dz…f}|d d …||dz…f}|j/||||¬ «}|jM|«ŒM|cYSwxYw) a‡
        evaluate the block; return result block(s) from the result
 
        Parameters
        ----------
        other : a ndarray/object
        cond : np.ndarray[bool], SparseArray[bool], or BooleanArray
        _downcast : str or None, default "infer"
            Private because we only specify it when calling from fillna.
 
        Returns
        -------
        List[Block]
        rÒFrz‡This should not be reached; call to np.where above is expected to raise ValueError. Please report a bug at github.com/pandas-dev/pandasrÓr`rrHr
©rrðrN)Ú    _downcastrð)(rarxr9r;r8rAr    rŠrõrqr’rErïrrŠr”r˜r,rwrDÚsumr0r¬r
ÚNotImplementedErrorr rbÚarrayrÔrTr3r4r'rÿrrMrårÙrçr¦)rdrüÚcondrªrðÚ    transposerqÚ
orig_otherÚicondr¤rœÚaltr°ràrr¥rèrÛrÜrÖÚothr§rés                       rhr
z Block.where6s€ð"y‰y˜DŸI™IÒ%Ð%Ð%ܘe¤h´    ¼<Ð%HÔIÐIÐIà—I‘I ‘Nˆ    ä! $Ó'ˆô”b—j‘j $§+¡+Ó.ˆØˆ
Ù Ø—X‘XˆFä& v°¨uÓ5‰ ˆˆtÙ áØŸ    ™     u˜    Ó-Ð.Ð.Ø—I‘I“K=Ð  à ”C—N‘NÑ "Ø—O‘OˆEà×,Ñ,¨UÓ3ˆðD    Bô)¨¯©°uÓ=ˆFðFˆEÜ-¨f°e·i±i³kÀ5ÓIˆCؘ%ÑÜ Ô&¬3¨u«:¼¸F» Ò+Cä—H‘H˜e˜V V¨UÔ3Ü-ð7óðð
 Ÿ™›Ü—
‘
˜6 5¨#Õ.ô
! Ô'Ü& u¬b¯j©jÔ9ܘE›
 d§j¡j°¡nÒ4ô
ŸH™H U›O×3Ñ3°F·L±LÓAEô
%×*Ñ*¨E¨6°6¸5ÓA‘ñ Ø—X‘XˆFà—‘ Ó'Ð(Ð(øôMœIÔ'8Ð9ò    "ðy‰y˜AŠ~ §¡¨A¡°!Ò!3ð×3Ñ3°EÓ:ØŸ™ Z°À˜ÓKØ×+Ñ+Ø Y¸)ÈGð,óòô& e¬b¯j©j¼.Ð-IÓJà
Ø—k‘k“mÜ& s›^ò
+‘EArؐCÙà#¢A q¨1¨q©5 y LÑ1˜à"¢1 a¨!¨a©% i <Ñ0GØŸ(™(ؘW°    ÀYð#óCð×%Ñ% cÕ*ð
+ð"Ò!ð?    "úsÃ/H:È:A/L;Ê+B L;Ì:L;c óh—t|d«}|jsd}n.t|j«}t    |j|«\}}|rE|r|r|j d¬«gS|gS|j | ¬«}    |    j |    g||d¬«}
|
S|.d|j|jjdz
«|kD<|r |jj|||¬«}
n|j|jd¬    «}
t|
D cgc]} | j | g||d¬«‘Œc} «Scc} w)
        fillna on the block with the value. If we fail, then convert to
        block to hold objects instead and try again
        r?TFrrr©r`)rðrP)rª) r$rŒr>rqrErïrÚcumsumrar r’r
r) rdr—Úlimitr?rrðrPr¤rJrÖrÛrs             rhrz Block.fillna­sV€ô& g¨yÓ9ˆà× Ò à‰D䘟 ™ Ó$ˆDÜ)¨$¯+©+°tÓ<‰JˆD$á áÙØ ŸI™I¨5˜IÓ1Ð2Ð2ðv ð—Y‘Y¨     MYÓ2Ø×(Ñ(ؐD 8°yÈð)óð
à Ð Ø>CˆD—‘˜TŸ[™[×-Ñ-°Ñ1Ó2°UÑ:Ñ ;á Ø—,‘,Ø—‘˜¨À>ðó‰Cð —*‘*˜U T§V¡V G°u*Ó=ˆCô
ð
ö     ðð×#Ñ#ؐE H¸    È(ð$õò ó
ð    
ùò sÄ D/r©rˆr?r¶Ú
limit_arearrðrPcón—|js+|r|jd¬«gS|r|gS|j«gS|j||«\}    }
tt|j
«} |dk(r | j } | j||||    ¬«} |    sat«rW|U|jsI|jj«r/tjttt!«¬«d|_    |dk(r | j } t#| d¬«} |j%| |
¬«}|j'|g||d    ¬
«S) NFrr`)Úmethodr¶r¸rïrëTrÅr¶r©r)rŒrïrBr    rOÚ array_valuesr’Ú_pad_or_backfillr rMrsrÀr÷rørNrùr#rVr©r)rdrºrˆr?r¶r¸rrðrPrïrsrÞr¹ÚdatarÖs               rhÚpad_or_backfillzBlock.pad_or_backfillìs0€ð× Ò áØŸ    ™     u˜    Ó-Ð.Ð.Ù$D6Ð 7¨4¯9©9«;¨-Ð 7à×,Ñ,¨Y¸Ó@‰
ˆˆdôÔ'¨×):Ñ):Ó;ˆØ 1Š9Ø—6‘6ˆDØ×*Ñ*ØØØ!Øð    +ó
ˆ
ñÜ"Ô$ØÐ*Ø"×1Ò1ày‰y×&Ñ&Ô(Ü— ‘ Ü+Ü!Ü/Ó1õð
15Ô-Ø 1Š9Ø#Ÿ™ˆJä˜Z°tÔ<ˆà × 'Ñ '¨°4Ð 'Ó 8ˆØ×!Ñ! 2 $¨°)ÀHÐ!ÓMÐMrjÚforward)r?r¶Úlimit_directionr¸rrðrPc     óö—t|d«}|dk(rtj|«|js+|r|j    d¬«gS|r|gS|j    «gS|j
t k(r+|r|j    d¬«gS|r|gS|j    «gS|j||«\} } |jjd ||jdz
||||| dœ|
¤Ž} t| d¬«}| sat«rW|    U|    jsI|jj«r/t!j"t$t&t)«¬    «d|    _ |j+|| ¬
«}|j-|g||d ¬ «S)Nr?ÚasfreqFrr`)rºrˆrdr¶rÁr¸rïTrÅrër¶Ú interpolater»ru)r$r@Úclean_fill_methodrŒrïrwr}rBr¼rÄrarVr rMrsrÀr÷rørNrùr#r©r)rdrºrdr?r¶rÁr¸rrðrPrfrïrsr¹r¾rÖs                rhrÄzBlock.interpolate s‚€ô& g¨yÓ9ˆà XÒ ä × %Ñ % fÔ -à× Ò áØŸ    ™     u˜    Ó-Ð.Ð.Ù$D6Ð 7¨4¯9©9«;¨-Ð 7ð :‰:œÒ #ñØŸ    ™     u˜    Ó-Ð.Ð.Ù$D6Ð 7¨4¯9©9«;¨-Ð 7à×,Ñ,¨Y¸Ó@‰
ˆˆdð3T×&Ñ&×2Ñ2ð    
ØØ—‘˜Q‘ØØØ+Ø!Øñ    
ðñ    
ˆ
ô˜Z°tÔ<ˆñÜ"Ô$ØÐ*Ø"×1Ò1ày‰y×&Ñ&Ô(Ü— ‘ Ü+Ü!Ü/Ó1õð
15Ô-à × 'Ñ '¨°4Ð 'Ó 8ˆØ×!Ñ! 2 $¨°)ÀMÐ!ÓRÐRrjcó”—tj|jj|d¬«j}|j    |¬«gS)z'return block for the diff of the valuesr©rˆr)r‹Údiffrqr’r¦)rdr¦r¹s   rhrÈz
Block.diffds8€ô
—Z‘Z § ¡ § ¡ ¨q°qÔ9×;Ñ;ˆ
Ø—‘ zÓ2Ð3Ð3rjcóÄ—|jdz
}tj|«s|jtk7r t d«‚|j |«}    t|j|«}ttj|j«}t||||«}|j|«gS#t$r'|j|«}|j||¬«cYSwxYw)z+shift the block by periods, possibly upcastr`zfill_value must be a scalarr)rarr1rwr}r3r˜r,r    rŠrõrqrJr©r'rÿ)rdÚperiodsr”rˆrœrqr¹rÖs        rhrJz Block.shiftlsЀðy‰y˜1‰}ˆô }‰}˜ZÔ(¨T¯Z©Z¼:Ò-EôÐ:Ó;Ð ;à×1Ñ1°*Ó=ˆ
ð     <ô)Ø—
‘
˜JóˆFôœ"Ÿ*™* d§k¡kÓ2ˆFܘv w°°fÓ=ˆJØ×.Ñ.¨zÓ:Ð;Ð ;øô!ò    <Ø×,Ñ,¨ZÓ8ˆBØ—8‘8˜G°
8Ó;Ò ;ð    <úsÁB/Â/-CÃCcóî—|jdk(sJ‚t|«sJ‚t|jt    j
|j «|«}t|d¬«}t||j¬«S)a
        compute the quantiles of the
 
        Parameters
        ----------
        qs : Index
            The quantiles to be computed in float64.
        interpolation : str, default 'linear'
            Type of interpolation.
 
        Returns
        -------
        Block
        rÒr r)
rar0rFrqrŠÚasarrayÚ_valuesr£r“r›)rdÚqsÚ interpolationr°s    rhÚquantilezBlock.quantiles`€ð*y‰y˜AŠ~Ј~ܘBÔÐÐä  §¡¬b¯j©j¸¿¹Ó.DÀmÓTˆô$ F°Ô3ˆÜ˜F¨d¯n©nÔ=Ð=rjcó—|jr |jr|j| ¬«Sd}|jj    |«}||jur|s|j«}n |j
}|j ||¬«S)aÉ
        Rounds the values.
        If the block is not of an integer or float dtype, nothing happens.
        This is consistent with DataFrame.round behavivor.
        (Note: Series.round would raise)
 
        Parameters
        ----------
        decimals: int,
            Number of decimal places to round to.
            Caller is responsible for validating this
        using_cow: bool,
            Whether Copy on Write is enabled right now
        rNr¶)Ú
is_numericrrïrqÚroundrsr©)rdÚdecimalsrðrsrqs     rhrÓz Block.round«sz€ð Š $§,¢,Ø—9‘9 i -9Ó0Ð 0؈ð
—‘×"Ñ" 8Ó,ˆØ T—[‘[Ñ  Ùð
 Ÿ™›‘à—y‘yØ×)Ñ)¨&°tÐ)Ó<Ð<rjcóJ—t|«s|g}|jdk(rtttj|j
«}tj ||«}|jj |«}t|«|||j¬«gStj|«|j
jdk\rt‚tj||j
jdgg«}|jj}g}d}|jj«r |jnd}|D]f}||dzk(rnY|j
|dz|…dd…f}||dz|}    t|«|t!|    «|j|¬«}
|j#|
«|}Œh|S)aDeletes the locs from the block.
 
        We split the block to avoid copying the underlying data. We create new
        blocks for every connected segment of the initial block that is not deleted.
        The new blocks point to the initial array.
        r`©r¢rarrÓNr¡)r0rar    rŠrõrqÚdeleter›r¨ÚmaxrbÚ
IndexErrorÚ concatenateÚas_arrayrsrÀrrÚ) rdrÝrqrœÚ mgr_locs_arrrãÚ previous_locrsÚidxr…rÖs            rhr×z Block.deleteÑs‚€ô˜CԠؐ%ˆCà 9‰9˜Š>Üœ"Ÿ*™* d§k¡kÓ2ˆFÜ—Y‘Y˜v sÓ+ˆFØ—~‘~×,Ñ,¨SÓ1ˆHØ”D˜“J˜v°ÀÇ    Á    ÔJÐKÐ Kä 6‰6#‹;˜$Ÿ+™+×+Ñ+¨AÑ.Ò .ÜÐ ôn‰n˜c D§K¡K×$5Ñ$5°aÑ$8Ð#9Ð:Ó;ˆØ—~‘~×.Ñ.ˆ Ø"$ˆ
àˆ ð!ŸI™I×3Ñ3Ô5ˆtyŠy¸4ˆØò    ˆCؐl QÑ&Ò&à🙠\°AÑ%5¸Ð%;ºQÐ%>Ñ?Ø# L°1Ñ$4°sÐ;Ø”T˜$“Zؤn°TÓ&:ÀÇÁÐQUôð×!Ñ! "Ô%à‰Lð    ð Ðrjcó—t|«‚)ú(return a boolean if I am possibly a viewr r~s rhÚis_viewz Block.is_views€ô" $Ó'Ð'rjcó—t|«‚)zP
        The array that Series.array returns. Always an ExtensionArray.
        r r~s rhr¼zBlock.array_valuesó€ô
" $Ó'Ð'rjcó—t|«‚)z‹
        return an internal format, currently just the ndarray
        this is often overridden to handle to_dense like operations
        r rys  rhÚ
get_valueszBlock.get_values rãrj©rlrŽ)rlr)ržrrlÚNone)NN)r¢úBlockPlacement | NonersúBlockValuesRefs | Nonerlrp)r¢rèrsrérlr)rlr®)rlrr)r¸rârlr)r½únpt.NDArray[np.intp]rlr©F)rÁrâržrrÂrŽrlr)rÇrrlrŽ)r—rrlrŽrk)r°rrlrm)FF)rýrŽrðrŽrlrp)rrmrðrŽrr®rlrm©rðrŽrlrm)rïrŽrðrŽrrŽrlrm)TTTTTÚnumpy_nullable)rïrŽrðrŽr(rŽrrŽr)rŽr*rŽr+rŽr,rrlrm)rlr)FÚraiseFF) rwrrïrŽr2rrðrŽr'rŽrlrp)r7r®rlrp)T)rrŽrlr)rðrŽr?rŽrlr)rðrŽr?rŽ)FNFNN)r?rŽrJznpt.NDArray[np.bool_] | NonerðrŽrlrm)r?rŽrðrŽrlrm)FFFN) rez Iterable[Any]rfz Sequence[Any]r?rŽrYrŽrðrŽrlrm)TFFT) rJúnpt.NDArray[np.bool_]r?rŽrYrŽrðrŽrrŽrlrm)ryú
np.ndarrayrlrð©rlr)rÜú)int | tuple[int, int] | tuple[slice, int]rlrð)rÁú4slice | npt.NDArray[np.bool_] | npt.NDArray[np.intp]rlr©rqrrïrŽrlrç)r¯rêrˆrržrèrlrp©r•rêr–rï)rðrŽrlrp©FN©ÚinferF©rªz
str | boolrðrŽrlrm©NFNFN©r¶ú
int | Noner?rŽrðrŽrlrm©rºrrˆrr?rŽr¶rür¸ú#Literal['inside', 'outside'] | NonerúLiteral['infer'] | NonerðrŽrlrm)rºrrdr[r?rŽr¶rürÁz&Literal['forward', 'backward', 'both']r¸rþrrÿrðrŽrlrm)r¦rrrlrmr|©rÊrrr”rrlrm)Úlinear)rÎr[rÏrrlrp)rÔrrrðrŽrlr©rlrM©rwúDtypeObj | Nonerlrð)Lr«Ú
__module__Ú __qualname__Ú__doc__Ú__annotations__Ú    __slots__rÒr
r"rzrr‚r„r‡rŒÚpropertyrr‘r”r˜rœÚsetterr¦r©r²r´rºr¾rÃrÈrËrÐr×rÎrårcrÿrrnrrr)rwrûrXrïr@rBrOrVrsr_rzr|rbr€r·r†rrŠrŒr—r›r r
rr¿rÄrÈrJrÐrÓr×rár¼rårurjrhrprp·sa    …ñð (Ó'Ø
ƒIØ
ÓØÓà€IØ€Jà
Øò
óó ð
ð Øò/óó ð/ð Øò6óó ð6ð Øò%óó ð%ð Øñ6óó ð6ð Øò"óó ð"ð Ø ò3óó ð3ð  ñ,ó ð,ð Øñ<óó ð<ð ñó ðð òóðð‡__ò&óð&ð ð,0Ø'+ð    Qð)ðQð%ð    Qð
 
ò Qó ðQð" ð,0Ø'+ð     Rð)ð Rð%ð     Rð
 
ò Ró ð Rð ò    ó ð    ð ò ó ð ð òJó ðJð ò Jó ð Jð àRWð
JØð
JØ+9ð
JØKOð
Jà     ò
Jó ð
Jð ò6ó ð6ð
 ò )ó ð )ð" ò-ó ð-ð ò ó ð ð òó ðð* ò ó ð ð òó ðð2 àEJð=FØ%)ð=FØ>Bð=Fà    ò=Fó ð=Fð~ ðNàðNðð    Nð
ð Nð
ò Nó ðNð` Øó    8óó ð    8ð ðØØ#ñ 68ðð68ðð    68ð
ð 68ð
ò 68ó ð68ðx#Ø#Ø $Ø $Ø!%Ø&6ð,àð,ðð,ðð    ,ð
ð ,ð ð ,ðð,ðð,ð$ð,ð
ó,ðb Øò!óó ð!ð ðØ%ØØð 1àð1ðð1ðð    1ð
ð 1ð ð 1ð
ò1ó ð1ðf àCHÐRVñ 'Ø=@ð 'à    ò 'ó ð 'ð ó    Wó ð    Wð òó ðð òó ðð ð
à-1ØØØð}ðð    }ð +ð }ðð}ð
ò}ó ð}ð~ ð
Ø ØØØð[ðð    [ð ð [ð
ò[ó ð[ðz ð
ØØØðXàðXð!ðXðð    Xð
ð Xð ð Xð
òXó ðXðt ð ØØØ#ð?ð$ð    ?ð
ð ?ð ð ?ðð?ðð?ð
ò?ó ð?óJò ðò!óð!óð#ØJð#à    ó#ô#ð$ ð
/3Ø—>‘>ð %Hà%ð%Hðð%Hð,ð    %Hð
ò %Hó ð%HðN*ð,ð    *ð
-ó *ô\?ðDBFðT"Ø$(ðT"à    óT"ðnOTðu)Ø&0ðu)ØGKðu)à    óu)ðt!ØØØØð=
ðð=
ðð    =
ð ð =
ð
ó=
ðFØØ Ø:>Ø,0ØØñ2Nðð2Nðð    2Nð
ð 2Nð ð 2Nð8ð2Nð*ð2Nðð2Nð
ó2Nðh ð Ø ØBKØ:>Ø,0ØØñASð#ðASðð    ASð
ð ASð ð ASð@ðASð8ðASð*ðASððASð
òASó ðASðF ò4ó ð4ô<ðB ð08ð>à ð>ð-ð>ð
ò    >ó ð>ð: ó =ó ð =óJ.ð`ò(óð(ðò(óð(õ (rjrpc    ó‡—eZdZUdZded<eddd„«Zeddd„«Ze    d                    dd„«Ze    d            dd    „«Z    edˆfd
„ «Z
ee dd „««Z eddd „«Z ed dddddddœ                                                            dd„«ZˆxZS)Ú EABackedBlockz>
    Mixin for Block subclasses backed by ExtensionArray.
    rMrqNcóˆ—|jjj||¬«j}|j|«gS)z‹
        Shift the block by `periods`.
 
        Dispatches to underlying ExtensionArray and re-boxes in an
        ExtensionBlock.
        )rÊr”)rqr’rJr©)rdrÊr”r¹s    rhrJzEABackedBlock.shifts;€ð—[‘[—]‘]×(Ñ(°ÀZÐ(ÓP×RÑRˆ
Ø×*Ñ*¨:Ó6Ð7Ð7rjFcóÞ—|}|}|j|«}|j|«}|j}|jdk(r |j}t |||«    |||<|S#t tf$rzt|jt«r'|j|d¬«}|j||«cYSt|t«r'|j|d¬«}|j||«cYS‚wxYw)a„
        Attempt self.values[indexer] = value, possibly creating a new array.
 
        This differs from Block.setitem by not allowing setitem to change
        the dtype of the Block.
 
        Parameters
        ----------
        indexer : tuple, list-like, array-like, slice, int
            The subset of self.values to set
        value : object
            The value being set
        using_cow: bool, default False
            Signaling if CoW is used.
 
        Returns
        -------
        Block
 
        Notes
        -----
        `indexer` is a direct slice/positional indexer. `value` must
        be a compatible shape.
        rÒTrš)r|rzrqrar’rWr3r4rxrwr5rÿr›ÚNDArrayBackedExtensionBlock)rdr¯r—rðÚ orig_indexerÚ
orig_valuerqrÖs        rhr›zEABackedBlock.setitem)sï€ð4ˆ ؈
à×.Ñ.¨wÓ7ˆØ×'Ñ'¨Ó.ˆà—‘ˆØ ;‰;˜!Ò ð—X‘XˆFܘg u¨fÔ5ð    Ø#ˆF7‰OðˆKøôœIÐ&ò     Ü˜$Ÿ*™*¤mÔ4à×0Ñ0°ÈDÐ0ÓQØ—z‘z ,°
Ó;Ò;ä˜DÔ"=Ô>Ø×0Ñ0°ÈDÐ0ÓQØ—z‘z ,°
Ó;Ò;ðð     úsÁA#Á#AC,Â35C,Ã*C,có"—|jj}t|«}|}|}|j|«}|j|«}|tj
ur |j }t||«\}}    |    r&|r|jd¬«gS|j«gS    |j||«j}
|j;|
«}|gS#ttf$r¯|jdk(s|jddk(rÿt|jt t"f«r’|j%|«} |jdk(rGt|t&j(«r-|jdk(rt+| j«s    |dd…df}| j-|||¬«} |j/| ||d¬«cYSt|t0«r<|j%|«} | j-|||¬«} |j/| ||d¬«cYS‚t|t&j(t2f«} g}|j5«} t7| «D]J\}}|}| r|dd…||dz…f}|dd…||dz…f}|j-|||¬«}|j9|«ŒL|cYSwxYw)    NFrr`rrÒrHr
r©)rqr’rArzrrŠr”rErïÚ_wherer3r4rarbrxrwr5rRrÿrŠrõr-r
rrrMrårÙrçr©)rdrür®rªrðÚarrr°Ú    orig_condr±r¤rÕrrÛr¥rèrÜrÖr¦r§rés                    rhr
zEABackedBlock.wherebs‰€ð
k‰km‰mˆä! $Ó'ˆàˆ
؈    Ø×'Ñ'¨Ó.ˆØ×&Ñ& tÓ,ˆà ”C—N‘NÑ "Ø—O‘OˆEä& s¨T¨EÓ2‰ ˆˆtÙ ñØŸ    ™     u˜    Ó-Ð.Ð.Ø—I‘I“K=Ð  ð.    "ØŸ™ D¨%Ó0×2Ñ2ˆJð^× 'Ñ '¨
Ó 3ˆØˆtˆ øô_œIÐ&ó,    "؏y‰y˜AŠ~ §¡¨A¡°!Ò!3ܘdŸj™j¬=¼+Ð*FÔGà×5Ñ5°jÓACàŸ    ™     QšÜ& y´"·*±*Ô=Ø%ŸN™N¨aÒ/Ü 3°C·I±IÔ >à$-ªa°¨gÑ$6˜    ØŸ)™) J°    ÀY˜)ÓOCØ×/Ñ/Ø i¸9ÈWð0óòô  Ô&AÔBð×5Ñ5°jÓACØŸ)™) J°    ÀY˜)ÓOCØ×/Ñ/Ø i¸9ÈWð0óòð
ô& j´2·:±:¼~Ð2NÓOà
Ø—k‘k“mÜ& s›^ò+‘EArØ"AÙà&¢q¨!¨a°!©e¨) |Ñ4˜à'ª¨1¨q°1©u¨9¨ Ñ5GØŸ(™( 1 g¸˜(ÓCCØ×%Ñ% cÕ*ð+ð"Ò!ðY,    "ús!ÂCÃC!JÆ2A
JÇ>B JÊ JcóÆ—t|«}|tjur |j}|}|}|j    |«}|j    |«}|j «s|r|j d¬«gS|gSt«rW|U|jsI|jj«r/tjttt«¬«d|_|j!|d¬«}|j"}|j$dk(r |j&}    |j)||«|gS#t*t,f$r'|j$dk(s|j.d    dk(ryt1|j2t4«r'|j7|d¬
«}|j9||«cYSt1|t:«r'|j7|d¬
«}|j9||«cYS‚t1|t<j>t@f«}    g}
|jC«} tE| «D]H\} } |}|    r|dd…| | dz…f}|dd…| | dz…f}| j9||«}|
jG|«ŒJ|
cYSwxYw) z+
        See Block.putmask.__doc__
        FrNrëTr™rÒr`rrš)$rArrŠr”rzrrïr rMrsrÀr÷rørNrùr#r@rqrar’Ú_putmaskr4r3rbrxrwr5rÿr rrŠrõrMrårÙrç)rdrJr¢rðrPÚorig_newr£rqrr¥rèrÛrÜrÖr¦r§rés                 rhr zEABackedBlock.putmask®sE€ô" $Ó'ˆØ ”#—.‘.Ñ  Ø—/‘/ˆCàˆØˆ    Ø×%Ñ% cÓ*ˆØ×&Ñ& tÓ,ˆàx‰xŒzÙØŸ    ™     u˜    Ó-Ð.Ð.ؐ6ˆMô Ô  ØÐ*Ø"×1Ò1ày‰y×&Ñ&Ô(Ü— ‘ Ü+Ü!Ü/Ó1õð
15Ô-à×Ñ     °4ÐÓ8ˆØ—‘ˆØ ;‰;˜!Ò Ø—X‘XˆFð#    "à O‰O˜D #Ô &ðFˆvˆ øôEœ:Ð&ó     "؏y‰y˜AŠ~ §¡¨A¡°!Ò!3ܘdŸj™j¬-Ô8ð×5Ñ5°hÈtÐ5ÓTCØŸ;™; y°(Ó;Ò;ä Ô&AÔBð×5Ñ5°hÈtÐ5ÓTCØŸ;™; y°(Ó;Ò;ðô& h´·±¼^Ð0LÓMà
Ø—k‘k“mÜ& s›^ò+‘EArØ AÙà$¢Q¨¨A°©E¨     \Ñ2˜à'ª¨1¨q°1©u¨9¨ Ñ5GØŸ*™* W¨aÓ0CØ×%Ñ% cÕ*ð+ð"Ò!ðA     "ús ÄD)Ä)A0I Æ5I ÇB I ÉI có •—|jdk(rU|jj|«}|jj|«}t    |«|||j¬«gS|jjdk(rgSt
‰|    |«S)Nr`rÖ)rarqr×r›r¨Úsuper)rdrÝrqrœÚ    __class__s    €rhr×zEABackedBlock.deleteüszø€ð 9‰9˜Š>Ø—[‘[×'Ñ'¨Ó,ˆFØ—~‘~×,Ñ,¨SÓ1ˆHØ”D˜“J˜v°ÀÇ    Á    ÔJÐKÐ KØ [‰[× Ñ  Ò "àˆI܉w‰~˜cÓ"Ð"rjcó—|jSr|rr~s rhr¼zEABackedBlock.array_values    s€ð{‰{Ðrjcó²—|j}|tk(r|jt«}t    j
|«j |j«S)zS
        return object dtype as boxed values, such as Timestamps/Timedelta
        )rqr}rûr]rŠrÌrÔrb)rdrwrqs   rhråzEABackedBlock.get_values     sA€ð
!ŸK™KˆØ ”JÒ Ø—]‘]¤6Ó*ˆFäz‰z˜&Ó!×)Ñ)¨$¯*©*Ó5Ð5rjrr·cóŠ—|j}    ||dœ}
dtj|    j«jvr||
d<n#|!t t |    «j›d«‚|    jdk(r,|dk(r'|    jjdi|
¤Žj} n|    jdi|
¤Ž} |j| «gS)N)rºr¶r¸z„ does not implement limit_area (added in pandas 2.2). 3rd-party ExtnsionArray authors need to add this argument to _pad_or_backfill.rÒr`ru) rqÚinspectÚ    signaturer½Ú
parametersr¬r¨r«rar’r©) rdrºrˆr?r¶r¸rrðrPrqrfr¹s             rhr¿zEABackedBlock.pad_or_backfill    sˀ𗑈à,2¸UÑ!CˆØ œ7×,Ñ,¨V×-DÑ-DÓE×PÑPÑ PØ#-ˆF<Ò  Ø Ð #Ü%ܘ“<×(Ñ(Ð)ð*AðAóð ð ;‰;˜!Ò  ¨¢    à2˜Ÿ™×2Ñ2Ñ<°VÑ<×>Ñ>‰Jà0˜×0Ñ0Ñ:°6Ñ:ˆJØ×*Ñ*¨:Ó6Ð7Ð7rjr|rrë)rðrŽr÷rùrörìrkrrrý)r«rrrrr
rJr›r
r r×r"r¼rår¿Ú __classcell__©rs@rhr r sWø…ñð Óà
ó
8ó ð
8ð ó6ó ð6ðp àNSðIØ&0ðIØGKðIà    òIó ðIðV àAEðKØ$(ðKà    òKó ðKðZ ô    #ó ð    #ð Øòóó ðð ó6ó ð6ð ð
ØØ Ø:>Ø,0ØØñ8ðð8ðð    8ð
ð 8ð ð 8ð8ð8ð*ð8ðð8ð
ò8ó ô8rjr cóЇ—eZdZUdZded<                    d                            dˆfd„ Zedd„«Zdd„Zddd„Z    d„Z
d    „Z e dd
„«Z edd „«Z                dd „Zedd „«Z                dd„ZˆxZS)rzñ
    Block for holding extension types.
 
    Notes
    -----
    This holds all 3rd-party extension array types. It's also the immediate
    parent class for our internal extension types' blocks.
 
    ExtensionArrays are limited to 1-D.
    rMrqcóT•—t|jttf«rt‰ |||||||¬«S|r;|j r/|jjs|j}|j}n™|j||«\}    }    |jj |d||    ¬«}|    sbt«rX|V|jsJ|jj«r0tjt t"t%«¬«d|_     |j/||¬«}
|
j1|
g||d    ¬
«S#t&$rhd}|jj |d|¬«}tjdt)|j«j*›dt,t%«¬«YŒ™wxYw) N)r—r¶r?rrðrP)r—rºr¶rïrëT)r—rºr¶zÛExtensionArray.fillna added a 'copy' keyword in pandas 2.1.0. In a future version, ExtensionArray subclasses will need to implement this keyword or an exception will be raised. In the interim, the keyword is ignored by ú.r¶r)rðr)rxrwr5rRrrrŒrqÚ_hasnarsrBr rMrÀr÷rørNrùr#r4r¨r«ÚDeprecationWarningr©r) rdr—r¶r?rrðrPrsr¹rïrÖrs            €rhrzExtensionBlock.fillnaG    s•ø€ô d—j‘j¤=´+Ð">Ô ?ä‘7‘>ØØØØ!Ø#Ø-ð "óð ñ ˜×*Ò*°4·;±;×3EÒ3EØ—9‘9ˆDØŸ™‰Jà×0Ñ0°¸GÓD‰JˆD$ð! =Ø!Ÿ[™[×/Ñ/ب°EÀð0ó
ñ*Ü*Ô,Ø&Ð2Ø*×9Ò9à—y‘y×.Ñ.Ô0Ü Ÿ ™ Ü3Ü)Ü'7Ó'9õð
9=˜Õ5à × 'Ñ '¨
¸Ð 'Ó >ˆØ×!Ñ! 2 $¨¸IÈhÐ!ÓWÐWøôAò àØ!Ÿ[™[×/Ñ/°eÀDÐPUÐ/ÓV
ô— ‘ ðIô˜DŸK™KÓ(×1Ñ1Ð2°!ð    5ô
'Ü/Ó1÷    ð  úsÂ
D6Ä6A.F'Æ&F'có —|jdk(rt|j«fSt|j«t|j«fS)Nr`)rar¬rqr›r~s rhrbzExtensionBlock.shape†    s>€ð 9‰9˜Š>ܘŸ ™ Ó$Ð&Ð &ܐ4—>‘>Ó"¤C¨¯ © Ó$4Ð4Ð4rjcóV—t|t«r{|\}}tj|«s|dk7rt    |›d«‚t|t
«r/|dkr|t |j«z }|j||dzS|j|S|dk7rt    |›d«‚|jS)Nrz only contains one itemr`)rxÚtupleÚcomÚ is_null_slicerÙrâr¬rq)rdrÜÚcolrÝs    rhr€zExtensionBlock.iget    s®€ô aœÔ à‰HˆCÜ×$Ñ$ SÔ)¨c°QªhÜ  D 6Ð)@Ð!AÓBÐBܘ#œuÔ%ð˜’7Øœ3˜tŸ{™{Ó+Ñ+Cð—{‘{ 3¨¨q©Ð1Ð1Ø—;‘;˜sÑ#Ð #àAŠvÜ  D 6Ð)@Ð!AÓBÐBØ—;‘;Ð rjcód—|r|jj«|_||jddyr|rƒr„s    rhr†zExtensionBlock.set_inplace©    s(€ñ ØŸ+™+×*Ñ*Ó,ˆDŒK؈ ‰ ‘A‰rjcóR—t|tjtf«rE|j|j
jdzk(r|j ddk(sJ‚|dd…df}|St|t«r1|j ddk(sJ‚|jdd¬«j}|S)z@
        If necessary, squeeze a (N, 1) ndarray to (N,)
        r`NrrÇ)
rxrŠrõrMrarqrbr8Ú_ixsrÍrxs  rhrzz!ExtensionBlock._maybe_squeeze_arg°    s¡€ô sœRŸZ™Z¬Ð8Ô 9Ø—‘˜DŸK™K×,Ñ,¨qÑ0Ò0ð—9‘9˜Q‘< 1Ò$Ð $Ð$ð’a˜d‘)ˆCðˆ
ô ˜œ\Ô *ð—9‘9˜Q‘< 1Ò$Ð $Ð$Ø—(‘(˜1 1(Ó%×-Ñ-ˆCàˆ
rjcóæ—t|t«ràt|«dk(rÒtd„|D««rO|\}}|jdk(r%|dk(j«r|j
ddk(s t d«‚|dd…df}|Stj|d«r|ddk(r|d}|Stj|d«r|d}|St|d«r|dddk(r|d}|St d«‚|S)zw
        Adapt a 2D-indexer to our 1D values.
 
        This is intended for 'setitem', not 'iget' or '_slice'.
        rÒc3órK—|]/}t|tj«xr|jdk(–—Œ1y­w)rÒN)rxrŠrõrar]s  rhrz9ExtensionBlock._unwrap_setitem_indexer.<locals>.<genexpr>Ó    s+èø€ÒNÀ”:˜a¤§¡Ó,Ò<°·±¸1±Ó<ÑNùs‚57r`rzPThis should not be reached. Please report a bug at github.com/pandas-dev/pandas/N) rxr,r¬rÚsizerbr¬rÚ
is_integerr-r.r0)rdr¯ÚfirstÚseconds    rhr|z&ExtensionBlock._unwrap_setitem_indexerÆ    s€ô gœuÔ %¬#¨g«,¸!Ò*;ô
ÑNÀgÔNÔNà '‘ và—K‘K 1Ò$¨&°A©+×):Ñ):Ô)<ÀÇÁÈQÁÐSTÒATä-ð8óðð ¢ 1 ™+ð"ˆô—‘ ¨¡
Ô+°¸±
¸a²à! !™*ðˆô×"Ñ" 7¨1¡:Ô.Ø! !™*ðˆô˜g a™jÔ)¨g°a©j¸©m¸qÒ.@Ø! !™*ðˆô    *ð4óððˆrjcó—y)z,Extension arrays are never treated as views.Frur~s rhrázExtensionBlock.is_viewð    s€ðrjcóB—|jjjSr|)rqrwÚ _is_numericr~s rhrÒzExtensionBlock.is_numericö    s€à{‰{× Ñ ×,Ñ,Ð,rjcó֗|jdk(rLt|t«s td|«‚t    d«|}t |«s td|«‚td«}|j |S)zþ
        Return a slice of my values.
 
        Parameters
        ----------
        slicer : slice, ndarray[int], or ndarray[bool]
            Valid (non-reducing) indexer for self.values.
 
        Returns
        -------
        ExtensionArray
        rÒz+invalid slicing for a 1-ndim ExtensionArrayr`N)rarxrârñÚranger¬rq)rdrÁÚnew_locss   rhr·zExtensionBlock._sliceú    sp€ð& 9‰9˜Š>ô˜f¤eÔ,Ü$ØAÀ6óðô˜Q“x Ñ'ˆHܐx”=Ü$ØAÀ6óðô˜4“[ˆFà{‰{˜6Ñ"Ð"rjcó†—|j|}t|«||j|j|j¬«S)zN
        Perform __getitem__-like specialized to slicing along index.
        )rars)rqr¨r›rars)rdrÁr¹s   rhÚslice_block_rowszExtensionBlock.slice_block_rows"
s5€ð—[‘[ Ñ(ˆ
ØŒtD‹z˜* d§n¡n¸4¿9¹9È4Ï9É9ÔUÐUrjc ó*—|j\}}|j|}||}tt||««D    cgc]D\}\}}    t    |«|j
j ||||¬«t|    «d¬«‘ŒF}
}}}    |
|fScc}    }}w)N)r‰r”rÒr )Ú arange_resultr’rÙrr¨rqÚtaker) rdr”r”r•r–r¹rJrÜr½Úplacers            rhr—zExtensionBlock._unstack,
sµ€ð%×2Ñ2ш
Dð  —\‘\ $Ñ'ˆ
Ø% dÑ+ˆ ô(1´°ZÀÓ1OÓ'P÷
 
ð
 
ñ$Ñ#G˜Uð ŒD‹JØ— ‘ נѠب °aÑ(8ÀZð!óô˜uÓ%Øö  ð
 
ˆò
 
ðtˆ|Ðùô
 
s½A    Brúrûrñ)rÜròrërôræ)rÁrórlrM)rÁrârlrrõ)r«rrrrrr"rbr€r†rzr|r
rárÒr·r
r@r—r#r$s@rhrr9    sêø…ñ    ð Óð
!ØØØØð=Xðð=Xðð    =Xð ð =Xð
õ=Xð~ò5óð5ó ô8 òò,(ðTòóðð
ò-óð-ð&#ØJð&#à    ó&#ðP òVó ðVð'ð,ð    'ð
-÷ 'rjrcó\—eZdZUded<dZed    d„«Zed
d„«Zd d d„Ze    d    d„«Z
y) Ú
NumpyBlockrðrqrucó2—|jjduS©ràN)rqÚbaser~s rhrázNumpyBlock.is_viewZ
s€ð{‰{×Ñ tÐ+Ð+rjcó,—t|j«Sr|)rOrqr~s rhr¼zNumpyBlock.array_values_
s€ä" 4§;¡;Ó/Ð/rjNcój—|tk(r|jjt«S|jSr|)r}rqrûrys  rhråzNumpyBlock.get_valuesc
s)€Ø ”JÒ Ø—;‘;×%Ñ%¤jÓ1Ð 1؏{‰{ÐrjcóN—|jj}|j}|dvS)NÚfciub)rqrwr‹)rdrwr‹s   rhrÒzNumpyBlock.is_numerich
s$€à— ‘ ×!Ñ!ˆØz‰zˆàwˆÐrjrærr|r) r«rrrr    r
rár¼rår"rÒrurjrhrFrFV
sL…Ø ÓØ€Ià ò,óð,ðò0óð0ôð
òóñrjrFcó—eZdZdZy)Ú NumericBlockruN©r«rrr    rurjrhrOrOp
ó    „ðIrjrOcó—eZdZdZy)Ú ObjectBlockruNrPrurjrhrSrSv
rQrjrScó.—eZdZUdZded<edd„«Zy)rz8
    Block backed by an NDArrayBackedExtensionArray
    r\rqcóF—|jjjduSrH)rqr$rIr~s rhráz#NDArrayBackedExtensionBlock.is_viewƒ
s€ð{‰{×#Ñ#×(Ñ(°Ð4Ð4rjNræ)r«rrrrr
rárurjrhrr|
s!…ñð (Ó'à ò5óñ5rjrcó$—eZdZUdZdZdZded<y)ÚDatetimeLikeBlockz*Block for datetime64[ns], timedelta64[ns].ruFzDatetimeArray | TimedeltaArrayrqN)r«rrrr    rÒrrurjrhrWrWŠ
s…Ù4à€IØ€JØ *Ô*rjrWcó —eZdZUdZded<dZy)ÚDatetimeTZBlockz0implement a datetime64 block with a tz attributerLrqruN)r«rrrrr    rurjrhrYrY’
s…Ù:à ÓàIrjrYcó4—t|tj«rJt|«}t    |j
j t«rtj|t¬«}t|ttf«r|j|jd«}|S)a:
    Input validation for values passed to __init__. Ensure that
    any datetime64/timedelta64 dtypes are in nanoseconds.  Ensure
    that we do not have string dtypes.
 
    Parameters
    ----------
    values : np.ndarray or ExtensionArray
 
    Returns
    -------
    values : np.ndarray or ExtensionArray
    rÊN)rxrŠrõrUÚ
issubclassrwr¨r®r­r]rLrQÚfreqÚ
_with_freqrs rhrÍr͞
sm€ô &œ"Ÿ*™*Ô%Ü/°Ó7ˆä f—l‘l×'Ñ'¬Ô -Ü—X‘X˜f¬FÔ3ˆFä&œ=¬.Ð9Ô:¸v¿{¹{Ð?Và×"Ñ" 4Ó(ˆà €Mrjcó¾—t|t«rtSt|t«rtSt|t
«rt S|j}|dvrtStS)zÑ
    Find the appropriate Block subclass to use for the given values and dtype.
 
    Parameters
    ----------
    dtype : numpy or pandas dtype
 
    Returns
    -------
    cls : class, subclass of Block
    ÚMm)
rxr3rYr7rr4rr‹rWrFr!s  rhÚget_block_typer`»
sR€ô%œÔ)ÜÐÜ    Eœ;Ô    'Ü*Ð*Ü    Eœ>Ô    *äÐð :‰:€DØ ˆt|ܠРä ÐrjcóZ—t|j«}t|«}||d||¬«S)NrÒ©rar¢rs)r`rwrÍ)rqr¢rsÚklasss    rhr“r“Ø
s-€ô ˜6Ÿ<™<Ó (€Eä   Ó (€FÙ ˜a¨9¸4Ô @Ð@rjr¶cóD—t|j«}|||||¬«S)Nrb)r`rw)rqr¢rarsrcs     rhr¤r¤å
s#€ô ˜6Ÿ<™<Ó (€EÙ ˜d¨i¸dÔ CÐCrjcóŽ—|j|kDrtd|j›d|›d«‚t|j«sf|j|k7rtd|j›d|›d«‚t    |«t    |«k7r#tdt    |«›dt    |«›«‚y |dk(rt    |«d    k7r td
«‚y y ) aV
    ndim inference and validation.
 
    Validates that values.ndim and ndim are consistent.
    Validates that len(values) and len(placement) are consistent.
 
    Parameters
    ----------
    values : array-like
    placement : BlockPlacement
    ndim : int
 
    Raises
    ------
    ValueError : the number of dimensions do not match
    z0Wrong number of dimensions. values.ndim > ndim [z > ú]z1Wrong number of dimensions. values.ndim != ndim [z != zWrong number of items passed z, placement implies rÒr`z need to splitN)rar3r-rwr¬)rqr¢ras   rhÚ
check_ndimrgô
sä€ð$‡{{TÒäð #Ø#)§;¡; -¨s°4°&¸ð ;ó
ð    
ô
˜vŸ|™|Ô ,à ;‰;˜$Ò Üð(Ø(.¯ ©  }°D¸¸¸aðAóð ô ˆy‹>œS ›[Ò (ÜØ/´°F³ ¨}ð=%Ü%(¨£^Ð$4ð6óð ð )ð
 
Š”s˜9“~¨Ò*ä˜Ó)Ð)ð+ˆrjcóº—t|t«r,|j«}|r|dkDrtj|«}t|t
«r |j }||fS)zU
    Ensure that we don't allow NumpyExtensionArray / NumpyEADtype in internals.
    r`)rxr:Úto_numpyrŠÚ
atleast_2dr6Ú numpy_dtype)rqrwras   rhÚextract_pandas_arrayrl sQ€ô&Ô0Ô1Ø—‘Ó"ˆÙ D˜1’Hä—]‘] 6Ó*ˆFä%œÔ&Ø×!Ñ!ˆà 5ˆ=Ðrjcó—|€g}t|t«r<|D]5}t|t«r|j|«Œ%|j|«Œ7|St|t«sJt |««‚|j|«|S)z.return a new extended blocks, given the result)rxr^rçrÚrpr¨)r°rÚrs   rhrr4 sz€à €~؈ܐ&œ$ÔØò    !ˆAܘ!œTÔ"Ø— ‘ ˜aÕ à— ‘ ˜aÕ ð        !ð €Mô˜&¤%Ô(Ð6¬$¨v«,Ó6Ð(؏ ‰ fÔØ €MrjcóŠ—|j|kr3t|j«std|«}|j    dd«}|S)z:
    Reshape if possible to have values.ndim == ndim.
    z+np.ndarray | DatetimeArray | TimedeltaArrayr`rÓ)rar-rwr    rÔ)rqras  rhr£r£D s@€ð
‡{{TÒÜ" 6§<¡<Ô0ôÐGÈÓPˆFØ—^‘^ A rÓ*ˆFà €Mrjcó*—t|ttf«r|jt«St|t
t f«r |j}t|tj«r+t«r!|j«}d|j_ |S)a+
    The array that Series.values returns (public attribute).
 
    This has some historical constraints, and is overridden in block
    subclasses to return the correct array (e.g. period returns
    object ndarray and datetimetz a datetime64[ns] ndarray instead of
    proper extension array).
    F)rxrPrNrûr]rLrQr$rŠrõr ÚviewÚflagsÚ    writeablers rhr‘r‘T sn€ô&œ;¬ Ð6Ô7؏}‰}œVÓ$Ð$Ü    Fœ]¬NÐ;Ô    <𗑈ä&œ"Ÿ*™*Ô%Ô*=Ô*?Ø—‘“ˆØ!&ˆ ‰ Ôð €Mrj)rgrrlr)rqrrlr)rwrrlz type[Block]r|)rqrr¢rrsré)r¢rrarrrsrérlrp)r¢rrarrrlrç)rqrrwrrarrrlz!tuple[ArrayLike, DtypeObj | None]rk)r`)rqrrarrrlr) Ú
__future__rÚ    functoolsrr rRÚtypingrrrrr    r
r÷r`ÚnumpyrŠÚpandas._configr r r Ú pandas._libsrrÚ libinternalsrÚpandas._libs.internalsrrÚpandas._libs.missingrÚpandas._typingrrrrrrrrrrrrÚ pandas.errorsr!Úpandas.util._decoratorsr"Úpandas.util._exceptionsr#Úpandas.util._validatorsr$Úpandas.core.dtypes.astyper%r&Úpandas.core.dtypes.castr'r(r)r*r+r,Úpandas.core.dtypes.commonr-r.r/r0r1r2Úpandas.core.dtypes.dtypesr3r4r5r6r7Úpandas.core.dtypes.genericr8r9r:r;Úpandas.core.dtypes.inferencer<Úpandas.core.dtypes.missingr=r>r?Ú pandas.corer@Úpandas.core.algorithmsÚcoreÚ
algorithmsr‹Úpandas.core.array_algos.putmaskrArBrCrDrEÚ pandas.core.array_algos.quantilerFÚpandas.core.array_algos.replacerGrHrIÚ"pandas.core.array_algos.transformsrJÚpandas.core.arraysrKrLrMrNrOrPrQÚpandas.core.arrays.string_rRÚpandas.core.baserSÚpandas.core.commonÚcommonr-Úpandas.core.computationrTÚpandas.core.constructionrUrVÚpandas.core.indexersrWÚpandas.core.indexes.baserXÚcollections.abcrYrZÚpandas.core.apir[Úpandas.core.arrays._mixinsr\rwr}rNÚCOW_WARNING_SETITEM_MSGrnrpr rrFrOrSrrWrYrÍr`r“r¤rgrlrr£r‘rurjrhú<module>ržsOðÝ"åÛÛ    ÷÷óÛã÷ñ÷ ñ÷
õ$÷ ÷ ÷ ó õ.Ý2Ý4Ý7÷÷÷÷÷÷õ÷óõ /÷ñõ  ß&Ð&÷õõ=÷ñõ
5÷÷ñõ3Ý)ߠРÝ/÷õ7Ý7á÷õ
&ÝFðˆRXŠXhÓ €
ðÐð Ðóô"[(ˆL˜,×,Ò,ô[(ô|:a8Eôa8ôH    Z]ôZôzôô4:ôô *ôô 5 -ô 5ô+Ð3ô+ôÐ'ôóó:ð<RVð
AØ ð
AØ"0ð
AØ8Nó
Að$$(ñ Dàð Dð ð     Dð
!ð Dð  ó Dó'*ðTØ ðØ-ðØ58ðà&óô, ô  ô rj