
    ]j'                    r   d dl mZ d dlZd dlmZmZmZ d dlZd dl	Z
d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d dlZerd d
lmZmZmZ d dlZd dlm Z m!Z!  edd      Z"ddZ#ddZ$ejJ                  ddddf	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ&	 	 	 	 	 	 	 	 	 	 ddZ'	 	 	 	 ddZ(ddZ)ddZ*d dZ+d!dZ,y)"    )annotationsN)TYPE_CHECKINGLiteralcast)using_string_dtype)lib)	timezones)pa_version_under18p0pa_version_under19p0)import_optional_dependency)pandas_dtype)CallableHashableSequence)DtypeArgDtypeBackendpytzignore)errorsc                    t        d      } | j                         t        j                         | j	                         t        j
                         | j                         t        j                         | j                         t        j                         | j                         t        j                         | j                         t        j                         | j                         t        j                         | j!                         t        j"                         | j%                         t        j&                         | j)                         t        j*                         | j-                         t        j.                         | j1                         t        j2                         | j)                         t        j*                         | j5                         t        j*                         iS )Npyarrow)r   int8pd	Int8Dtypeint16
Int16Dtypeint32
Int32Dtypeint64
Int64Dtypeuint8
UInt8Dtypeuint16UInt16Dtypeuint32UInt32Dtypeuint64UInt64Dtypebool_BooleanDtypestringStringDtypefloat32Float32Dtypefloat64Float64Dtypelarge_string)pas    9/root/env/lib/python3.12/site-packages/pandas/io/_util.py_arrow_dtype_mappingr4   -   s   	#I	.B
	2<<>

BMMO

BMMO

BMMO

BMMO
		R^^%
		R^^%
		R^^%

BOO%
		R^^%


boo'


boo'
		R^^%
2>>+     c                 r   t        d      } | j                         t        j                  t        j
                        | j                         t        j                  t        j
                        i}t        s5t        j                  t        j
                        || j                         <   |j                  S )Nr   )na_value)
r   r+   r   r,   npnanr1   r
   string_viewget)r2   mappings     r3   _arrow_string_types_mapperr=   A   ss    	#I	.B 			R^^RVV4
2>>266:G  $&NNBFF$C !;;r5   Fc           	        t        d      }|i n|}|dk(  r?t               }|r%t        j                         ||j	                         <   |j
                  }n|dk(  rt        j                  }nmt               rt        rt               }nQ||j                         t        j                         |j                         t        j                         |j                         t        j                         |j!                         t        j                         ij
                  }nd }n|t"        j$                  u s|dk(  r||j                         t        j                         |j                         t        j                         |j                         t        j                         |j!                         t        j                         ij
                  }n	d }nt&         | j(                  dd|i|}	t+        |	|||      }	t-        |	      }	|	S )Nr   numpy_nullablenumpytypes_mapper )r   r4   r   r    nullr;   
ArrowDtyper   r   r=   r   r   r   r   r   r   r   r   
no_defaultNotImplementedError	to_pandas_post_convert_dtypes_normalize_timezone_dtypes)
tabledtype_backendnull_to_int64to_pandas_kwargsdtypenamesr2   r<   rA   dfs
             r3   arrow_table_to_pandasrQ   N   s    
$I	.B-5r;K ((&( "$GBGGI{{	)	#}}		57L 	2<<>
BMMO
BMMO
BMMO	
 c   L	#..	(MW,D 	2<<>
BMMO
BMMO
BMMO	
 c   L!!		Gl	G6F	GB	b-	>B	#B	'BIr5   c                   ||t         j                  u s|dk(  rt        |t              r||| _        t        j                         t        j                         t        j                         t        j                         h}| j                  D ]5  }||vs| |   j                  |v s| |   j                  j                  ||<   7 |D ci c]   }|| j                  v s|t        ||         " }}nt        |      }	 | j                  |      } t#               s|dk7  r|t         j                  u s|dk(  rt%        t'        | j                              D ]3  }t)        | j*                  d d |f         }	|	"| j-                  ||	       5 t/        | j0                        }
|
|
| _        t/        | j                        }||| _        | S c c}w # t        $ r}t        t!        |            |d }~ww xY w)Nr@   str)r   rE   
isinstancedictcolumnsr   r   r   r   r    rN   numpy_dtyper   astype	TypeError
ValueErrorrS   r   rangelen_maybe_convert_string_to_objectilocisetitem%_maybe_convert_string_index_to_objectindex)rP   rK   rN   rO   
cmp_dtypescolkeyerrinew_colnew_idxnew_colss               r3   rH   rH      s    '=G+C eT" "
 	J zz ;e#3(C "$C!:!:E#J; :?25#BS\%*--E 
 !'E	05!B  UNcnn,0H s2::' 	(A5bggadmDG"Aw'	(
 8ABH8D!BJIA  	0SX&C/	0s$   
GG>G 	G/G**G/c                   t        | j                  t        j                        rF| j                  j                  t
        j                  u r | j                  d      j                  d       S t        | j                  t        j                        r| j                  j                  j                  }t        |t        j                        r{|j                  t
        j                  u r_t        j                  | j                  j                  j                  d      | j                  j                        }| j                  |      S y )Nobject)
categoriesordered)rT   rN   r   r,   r7   r8   r9   rX   fillnaCategoricalDtyperl   rm   )data	cat_dtypes     r3   r]   r]      s     $**bnn-$**2E2E2O{{8$++D11	DJJ 3 3	4JJ))//	i0Y5G5G2665Q++::0077A

**I ;;y)) r5   c                B   t        | t        j                        rqt        d | j                  D              rTg }| j                  D ]2  }t        |      }||j                  |       "|j                  |       4 | j                  |      S y t        dt        |             S )Nc              3     K   | ]P  }t        |j                  t        j                        xr& |j                  j                  t
        j                  u  R y wN)rT   rN   r   r,   r7   r8   r9   .0levels     r3   	<genexpr>z8_maybe_convert_string_index_to_object.<locals>.<genexpr>   sE      
 u{{BNN3V8L8LPRPVPV8VV
s   AApd.Index | None)	rT   r   
MultiIndexanylevelsr]   append
set_levelsr   )ra   
new_levelsrw   	new_levels       r3   r`   r`      s    %' 

 
 J -;EB	(%%i0%%e,- ##J// %'Fu'MNNr5   c                   t        |       j                  j                  d      s| S t        j                  |       rt
        j                  j                  S | j                   	 t        j                  | j                        S t        j                  |       r,	 | j                  d      }|t        j                  |      S 	 | S | S # t        $ r Y Nw xY w# t        $ r Y | S w xY w)z
    If the input tz is a pytz timezone, attempt to convert it to "default"
    tzinfo object (zoneinfo or datetime.timezone).
    r   N)type
__module__
startswithr	   is_utcdttimezoneutczonezoneinfoZoneInfo	Exceptionis_fixed_offset	utcoffset)tzoffsets     r3   _normalize_pytz_timezoner      s    
 8))&1 	{{	ww	$$RWW--
   $	\\$'F!{{6** "
 I2I  		  	I	s$   #C 'C 	CC	C! C!c                   t        | t        j                        rQt        d | j                  D              r3| j                  D cg c]  }t        |       }}| j                  |      S | S t        | j                  t        j                        rHt        | j                  j                        }|| j                  j                  ur| j                  |      S | S c c}w )Nc              3  d   K   | ](  }t        |j                  t        j                         * y wrt   )rT   rN   r   DatetimeTZDtyperu   s     r3   rx   z,_normalize_timezone_index.<locals>.<genexpr>  s!     Uuz%++r'9'9:Us   .0)rT   r   rz   r{   r|   _normalize_timezone_indexr~   rN   r   r   r   
tz_convert)ra   rw   r|   normalized_tzs       r3   r   r     s    %'UUUDILLQ5/6QFQ##F++%++r1120@.##M22L Rs   Cc                   t         t        d | j                  j                         D              r| j	                  t
        j                        }|D ]x  }| j                  dd|f   }t        |j                  j                        }||j                  j                  usN| j                  ||j                  j                  |             z t        | j                        | _        t        | j                         | _        | S )a  
    PyArrow uses pytz by default for timezones, but pandas uses
    zoneinfo / datetime.timezone since pandas 3.0.

    TODO: Starting with pyarrow 25, it will use zoneinfo by default, and then
    this normalization can be skipped (https://github.com/apache/arrow/pull/49694).
    Nc              3  P   K   | ]  }t        |t        j                           y wrt   )rT   r   r   )rv   rN   s     r3   rx   z-_normalize_timezone_dtypes.<locals>.<genexpr>(  s%      
 ub001
s   $&)r   r{   _mgrget_unique_dtypes_select_dtypes_indicesr   r   r^   r   rN   r   r_   r   r   r   ra   rV   )rP   col_indicesrf   rc   r   s        r3   rI   rI     s      
224
 
 33B4F4FGK  Eggadm 8 F 		4KK366#4#4]#CD	E -RXX6.rzz:
Ir5   )returnrU   )r   r   )rJ   zpyarrow.TablerK   /DtypeBackend | Literal['numpy'] | lib.NoDefaultrL   boolrM   zdict | NonerN   DtypeArg | NonerO   Sequence[Hashable] | Noner   pd.DataFrame)
rP   r   rK   r   rN   r   rO   r   r   r   )rp   zpd.Series | pd.Indexr   zpd.Series | pd.Index | None)ra   pd.Indexr   ry   )r   	dt.tzinfor   r   )ra   r   r   r   )rP   r   r   r   )-
__future__r   datetimer   typingr   r   r   r   r@   r8   pandas._configr   pandas._libsr   pandas._libs.tslibsr	   pandas.compatr
   r   pandas.compat._optionalr   pandas.core.dtypes.commonr   pandasr   collections.abcr   r   r   r   pandas._typingr   r   r   r4   r=   rE   rQ   rH   r]   r`   r   r   rI   rB   r5   r3   <module>r      s#   "  
   -  ) ? 2    "&:(
 FI^^$(!'+66B6 6 "	6
 6 %6 6r>>B> > %	>
 >B
 $O(@ r5   