
    EgÄ                    l   d Z ddlmZ ddlmZ ddlmZm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 dd
lmZmZmZmZmZ ddlmZmZmZmZmZ ddlmZ ddlm Z m!Z! ddl"m#Z#m$Z% ddl&m'Z' ddl(m)Z) ddl*m+Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@ ddlAmBZBmCZCmDZDmEZE erddlFmGZGmHZH ddlImJZJmKZKmLZLmMZM dddddd_d%ZNd`d*ZOdadbd+ZPdcd,ZQddd1ZRdd2dd3ded5ZSdfd9ZTdgd:ZUdadhd;ZVdid<ZWdjd>ZXdkd?ZYdldFZZdkdGZ[dmdKZ\dL Z]	 dndodMZ^dpdOZ_dqdRZ`drdTZadsdVZbdtdXZc	 	 dudvd^ZddS )wz~
Functions for preparing various inputs passed to the DataFrame or Series
constructors before passing them to a BlockManager.
    )annotations)abc)TYPE_CHECKINGAnyN)ma)using_pyarrow_string_dtype)lib)astype_is_view)"construct_1d_arraylike_from_scalardict_compatmaybe_cast_to_datetimemaybe_convert_platformmaybe_infer_to_datetimelike)is_1d_only_ea_dtypeis_integer_dtypeis_list_likeis_named_tupleis_object_dtype)ExtensionDtype)ABCDataFrame	ABCSeries)
algorithmscommon)ExtensionArray)StringDtype)arrayensure_wrapped_if_datetimelikeextract_arrayrange_to_ndarraysanitize_array)DatetimeIndexIndexTimedeltaIndexdefault_indexensure_indexget_objs_combined_axisunion_indexes)ArrayManagerSingleArrayManager)BlockPlacementensure_block_shape	new_blocknew_block_2d)BlockManagerSingleBlockManager create_block_manager_from_blocks'create_block_manager_from_column_arrays)HashableSequence)	ArrayLikeDtypeObjManagernptT)dtypeverify_integritytypconsolidatecolumnsr"   r8   DtypeObj | Noner9   boolr:   
str | Noner;   returnr6   c                  |r6|t          |           }nt          |          }t          | ||          \  } }nt          |          }d | D             } dgt          |           z  }| D ]]}t	          |t
          j        t          f          r+|j        dk    s t          |          t          |          k    rt          d          ^t          |          }t          |          t          |           k    rt          d          ||g}	|dk    rt          | |	||          S |dk    rt          | ||g          S t          d	| d
          )zs
    Segregate Series based on type and coerce into matrices.

    Needs to handle a lot of exceptional cases.
    Nc                0    g | ]}t          |d           S )Textract_numpy)r   .0xs     W/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/core/internals/construction.py
<listcomp>z!arrays_to_mgr.<locals>.<listcomp>   s%    GGG1-666GGG       zYArrays must be 1-dimensional np.ndarray or ExtensionArray with length matching len(index)z#len(arrays) must match len(columns)block)r;   refsr   2'typ' needs to be one of {'block', 'array'}, got '')_extract_indexr%   _homogenizelen
isinstancenpndarrayr   ndim
ValueErrorr1   r(   )
arraysr<   indexr8   r9   r:   r;   rM   arraxess
             rH   arrays_to_mgrr\   `   s     ="6**EE ''E #65%88 U##GGGGGvF#  		 		CsRZ$@AA8q==s88s5zz)) 6   * 7##G
7||s6{{"">??? UD
g~~6Dk
 
 
 	
 
FUG$4555VPSVVVWWWrJ   datanp.rec.recarray | np.ndarraycopystrc                r   t          j        |           }|t          t          |                    }nt	          |          }|t	          |          }t          ||          \  }}t          |||t          |                    \  }}||}t          |||||          }	|r|	                                }	|	S )zA
    Extract from a masked rec array and create the manager.
    Nr8   r:   )	r   getdatar$   rR   r%   	to_arraysreorder_arraysr\   r_   )
r]   rY   r<   r8   r_   r:   fdatarX   arr_columnsmgrs
             rH   rec_array_to_mgrri      s     JtE}c%jj))U##w''#E733FK )gs5zzRRFK
e
E
E
EC hhjjJrJ   c                    |dk    rzt           t                    r }nI j        dk    r0t           j         j        d          j        d         d          }nt          j         j        d          j                  }n|dk    rt           t                    r }nʉ j        dk    rj fdt          t           j        d                             D             }|rd |D             }t          | j        d          j        d         g          }nU                                 }|r|                                }t          |g j        g          }nt          d	| d
          |S )z
    Convert to specific type of Manager. Does not copy if the type is already
    correct. Does not guarantee a copy otherwise. `copy` keyword only controls
    whether conversion from Block->ArrayManager copies the 1D arrays.
    rL      r   rK   )r:   r   c                :    g | ]}                     |          S  )iget_values)rF   irh   s     rH   rI   zmgr_to_mgr.<locals>.<listcomp>   s%    NNN#//!,,NNNrJ   c                6    g | ]}|                                 S rm   r_   rF   rZ   s     rH   rI   zmgr_to_mgr.<locals>.<listcomp>   s     ;;;Schhjj;;;rJ   rN   rO   )rS   r.   rV   r\   rX   r[   r/   
from_arrayrY   r(   rangerR   internal_valuesr_   r)   rW   )rh   r:   r_   new_mgrrX   r   s   `     rH   
mgr_to_mgrrw      su    g~~c<(( 	RGGx1}}'JSXa[g   -7
1syQQ	c<(( 	CGGx1}}NNNNeC<L<L6M6MNNN <;;F;;;F&vSXa[/IJJ++-- )!JJLLE,eWsykBBVPSVVVWWWNrJ   c                $    t           t                    rx| j        t           j        g          }| j        }n                     |           t                     s,|*t          |          rt          j        dt                     |dk    rdn|}t           dd           }d }t          |          st                    rt           t          j        t          f          r2 j        dk    r' fdt           j        d                   D              n g |*t          t          t                                         }nt#          |          }t%           |||          S t          |t&                    rIt)           d	
           |r                                   j        dk    r                     dd           nt           t          t          f          rS|st/           j                  r j        }|r j                                         n j         t7                      nst           t          j        t          f          rAt/           j                  r|nd}	t          j         |	           t7                      nt;           |            j        k    rt=           d |d	           t?           j        d          j        d         ||          \  }}tA           ||           |dk    rtC           j        j"        tF                    rt          j         t                     ;tI           j                  r' fdt           j        d                   D             }
nOtK          j&         j        d          rtO                       fdt           j        d                   D             }
|rd |
D             }
tQ          |
||gd          S  j)         tI           j                  rtU                     }d |D             }tW          d tY          ||          D                       r5d |D             fdt          t                              D             }nt[          t]          t          |                              }t_           ||          }|g}nY j        j0        dk    rItc                      r;te          d          tU                     }fdtg          |          D             }n>t[          t]          t          |                              }t_           ||          }|g}t          |          dk    rg }ti          |||gd          S )N)r   rK   r8   r   Fr8   rK   c                (    g | ]}d d |f         S Nrm   )rF   nvaluess     rH   rI   z"ndarray_to_mgr.<locals>.<listcomp>  s5        qqq!t  rJ   rb   TrC   rq   )r8   r_   allow_2dr   )rY   r<   c           	     \    g | ](}t          t          d d |f                             )S r{   )r   r   rF   ro   r}   s     rH   rI   z"ndarray_to_mgr.<locals>.<listcomp>W  sL         //qqq!t==   rJ   mMc                (    g | ]}d d |f         S r{   rm   r   s     rH   rI   z"ndarray_to_mgr.<locals>.<listcomp>`  s%    CCCqfQQQTlCCCrJ   c                6    g | ]}|                                 S rm   rq   rr   s     rH   rI   z"ndarray_to_mgr.<locals>.<listcomp>c  s     333Schhjj333rJ   )r9   c                ,    g | ]}t          |          S rm   )r   rE   s     rH   rI   z"ndarray_to_mgr.<locals>.<listcomp>n  s!    NNNQ5a88NNNrJ   c              3  $   K   | ]\  }}||uV  d S r{   rm   )rF   rG   ys      rH   	<genexpr>z!ndarray_to_mgr.<locals>.<genexpr>p  s*      GGdaqzGGGGGGrJ   c                .    g | ]}t          |d           S )rk   )r+   )rF   dvals     rH   rI   z"ndarray_to_mgr.<locals>.<listcomp>q  s#    QQQ$,T155QQQrJ   c                X    g | ]&}t          |         t          |                     'S ))	placement)r-   r*   )rF   r|   
dvals_lists     rH   rI   z"ndarray_to_mgr.<locals>.<listcomp>r  sB        Z]nQ6G6GHHH  rJ   )r   rM   Upyarrow_numpy)storagec                    g | ]\\  }}t                                                              |           t          t	          ||dz                       d          ]S )ry   rK   rk   )rV   )r,   construct_array_type_from_sequencer*   slice)rF   ro   r]   r8   s      rH   rI   z"ndarray_to_mgr.<locals>.<listcomp>~  sz     
 
 
 4 **,,;;D;NNuQA//  
 
 
rJ   )5rS   r   namer"   rY   reindexrR   rT   emptyobjectgetattrr   rU   r   rV   rt   shaper%   r\   r   r   r_   reshaper
   r8   _references_values
_ensure_2dr   _prep_ndarrayliker    	_get_axes!_check_values_indices_shape_match
issubclasstyper`   r   r	   is_np_dtyper   r(   Tlistanyzipr*   r   r-   kindr   r   	enumerater0   )r}   rY   r<   r8   r_   r:   copy_on_sanitizevdtyperM   _copyrX   obj_columnsmaybe_datetimeblock_valuesbpnbr   s   `  `            @rH   ndarray_to_mgrr      s    &)$$ 4?{&..=LEE^^E**F 6{{ 	4w2s7||2XfF333F !$wuuDVWd++FD6"" 9B&9%&@&@ 9B frz>:;; 
	a
   v|A//  FF
 XF?E#f++..//GG"7++GVWe5cJJJJ	FN	+	+ #B vT::: 	#[[]]F;!^^B**F	FY.	/	/ B 	&M^FL%@@M%D 	$^((**FF^FF##	FRZ8	9	9 B e!D!D  	
 &u---F##
 #60@AAAV\U22!
 
 
 Qaw  NE7 &feW===
g~~fl'-- 	4XfF333F=_V\::=    v|A//	  FF v|T22 @7??CCCCE&,q/,B,BCCCF 	433F333FFUG$4uMMMMXF
 }66}6llNN+NNNGGc+~&F&FGGGGG 		 QQ.QQQJ   s://  LL
  c'll 3 344Bf>>>B4LL	6<,338R8T8T3O4446ll
 
 
 
 %[11
 
 
 E#g,,//00&BT:::t
7||q+w&   rJ   r}   
np.ndarrayrY   Nonec                `   | j         d         t          |          k    s| j         d         t          |          k    rq| j         d         dcxk    rt          |          k     rn nt          d          | j         }t          |          t          |          f}t          d| d|           dS )z\
    Check that the shape implied by our axes matches the actual shape of the
    data.
    rK   r   z)Empty data passed with indices specified.zShape of passed values is z, indices imply N)r   rR   rW   )r}   rY   r<   passedimplieds        rH   r   r     s     |A#g,,&&&,q/SZZ*G*G <?a,,,,#e**,,,,,HIIIu::s7||,WfWWgWWXXX +H*GrJ   rL   )r8   r:   r_   dictc                   |cddl m}  | |t                    }|                                }|t	          ||                    }nt          |          }|                                rt          |          s|L|j        	                                d         }	|	D ])}
t          |j        |
         ||          }||j        |
<   *n~t          j        d          }t          t          j        t!          |          |          |                                }|rg|z  }nfdt%          |          D             }||j        |<   t)          |          }t          |          }nOt)                                                     }|rt-          |          nt/          d          } fd|D             }|r|d	k    rd
 |D             }nd |D             }t1          ||||||          S )z
    Segregate Series based on type and coerce into matrices.
    Needs to handle a lot of exceptional cases.

    Used in DataFrame.__init__
    Nr   )Series)rY   r8   ry   r   c                8    g | ]}                                 S rm   rq   )rF   _vals     rH   rI   zdict_to_mgr.<locals>.<listcomp>  s!    ???!388::???rJ   c                D    g | ]}t          j        |                   S rm   )commaybe_iterable_to_listrF   kr]   s     rH   rI   zdict_to_mgr.<locals>.<listcomp>  s(    DDD!#,T!W55DDDrJ   rL   c                   g | ]}t          |t                    r|                                nUt          |t                    s)t          |t                    r*t          |j                  r|                    d           n|S )T)deep)rS   r   r_   r"   r   r   r8   rE   s     rH   rI   zdict_to_mgr.<locals>.<listcomp>  s         a00 q%(( "!Y// ,AG44	QVVV&&&   rJ   c                Z    g | ](}t          |d           r|                                n|)S ry   )hasattrr_   rE   s     rH   rI   zdict_to_mgr.<locals>.<listcomp>  s3    MMM'!W"5"5<affhhh1MMMrJ   )r8   r:   r;   )pandas.core.seriesr   r   isnarP   r%   r   r   r}   nonzeror    iatrT   r8   r   nanrR   sumrt   locr   keysr"   r$   r\   )r]   rY   r<   r8   r:   r_   r   rX   missingmidxsro   rZ   	nan_dtypenmissingrhsr   r   s   `               @rH   dict_to_mgrr     s2   " ------G6:::++--= #67(#344EE ''E ;;== 	*!1%!8!8 	*    ..003 ( (A(AUKKKC$'FJqMM(
 HX..	8UYWW";;== @%(*CC @???uX???C&)
7#fw'' DIIKK  !%;%+++=+;+;DDDDtDDD N'>>     FF NMfMMMF%u#SWXXXXrJ   r3   Index | None$tuple[list[ArrayLike], Index, Index]c                H   t          | d                   r|t          | d         j                  }t          | ||          \  }}t          |          }|Gt	          | d         t
                    rt          |           }nt          t          |                     }|||fS )zA
    Convert a single sequence of arrays to multiple arrays.
    r   Nry   )	r   r%   _fieldsrd   rS   r   _get_names_from_indexr$   rR   )r]   r<   rY   r8   rX   s        rH   nested_data_to_arraysr     s     d1g 07?tAw//gU;;;OFG7##G}d1gy)) 	-)$//EE!#d)),,E7E!!rJ   c                    t          |           dk    oPt          | d                   o;t          | d         dd          dk    o t          | t                    o
| j        dk     S )z7
    Check if we should use nested_data_to_arrays.
    r   rV   rK   rk   )rR   r   r   rS   r   rV   )r]   s    rH   treat_as_nestedr     sl    
 	D		A 	Fa!!	FDGVQ''1,	F D.11Ddi1nE	rJ   c                   t          |           dk    rt          j        dt                    S t	          | t
                    r#t          |           }|dt          j        f         S d t          | d                   r!t          j	        fd| D                       } n]t	          | d         t          j
                  r2| d         j        dk    r!t          j	        fd| D                       } n |           } t          |           S )Nr   )r   r   ry   .c                    t          |           rt          | t                    r| S t          | d          } t	          |           }|S )NTrC   )r   rS   r   r   r   )vress     rH   convertz"_prep_ndarraylike.<locals>.convert/  sL    A 	*Q"="= 	H!4000$Q'' 
rJ   c                &    g | ]} |          S rm   rm   rF   r   r   s     rH   rI   z%_prep_ndarraylike.<locals>.<listcomp>?  !    666!771::666rJ   c                &    g | ]} |          S rm   rm   r   s     rH   rI   z%_prep_ndarraylike.<locals>.<listcomp>B  r   rJ   )rR   rT   r   r   rS   rt   r   newaxisr   r   rU   rV   r   )r}   r_   rZ   r   s      @rH   r   r   #  s    6{{a xf----	FE	"	" $v&&3
?##   F1I !6666v66677	F1Irz	*	* !vay~/B/B6666v66677frJ   c                    | j         dk    r#|                     | j        d         df          } n"| j         dk    rt          d| j                   | S )zB
    Reshape 1D values, raise on anything else other than 2D.
    rK   r   rk   zMust pass 2-d input. shape=)rV   r   r   rW   )r}   s    rH   r   r   I  sZ     {aa! 455			Ev|EEFFFMrJ   !tuple[list[ArrayLike], list[Any]]c                   d }g }g }| D ]n}t          |t          t          f          rp||                    |d          }t          |t                    r |j        |ur|                    |d          }|                    |j                   |j        }nt          |t                    rx||                    d          }t          |t          t          f          rt          |          }nt          |          }t          j        ||j        t          j                  }t#          |||d          }t%          j        ||           |                    d            |                    |           p||fS )NFrq   O)defaultr8   r_   )rS   r   r"   astyperY   r   appendr   r   r   r!   r#   r   r	   fast_multigetrT   r   r    r   require_length_match)r]   rY   r8   oindexhomogenizedrM   r   s          rH   rQ   rQ   T  s|    FKD    cIu-.. 	 jjUj33#y)) 5ciu.D.D kk%ek44KK(((+CC#t$$ M >"\\#..Fem^%DEE $%c**CC s))C'V^RVLLL e5uEEEC$S%000KK3rJ   c                @   t          |           dk    rt          d          S g }g }d}d}d}| D ]}t          |t                    rd}|                    |j                   4t          |t                    r7d}|                    t          |                                                     t          |          r:t          |dd          dk    r%d}|                    t          |                     t          |t          j                  r|j        dk    rt          d          |s|st          d          |rt          |          }n|rt          |d          }|rt          t!          |                    }t          |          dk    rt          d	          |rt          d
          |rD|d         t          |          k    r*d|d          dt          |           }	t          |	          nt          |d                   }t#          |          S )zR
    Try to infer an Index from the passed data, raise ValueError on failure.
    r   FTrV   rK   z,Per-column arrays must each be 1-dimensionalz2If using all scalar values, you must pass an indexsortz%All arrays must be of the same lengthz<Mixing dicts with non-Series may lead to ambiguous ordering.zarray length z does not match index length )rR   r$   rS   r   r   rY   r   r   r   r   r   rT   rU   rV   rW   r'   setr%   )
r]   raw_lengthsindexeshave_raw_arrayshave_series
have_dictsr   rY   lengthsmsgs
             rH   rP   rP   ~  sZ   
 4yyA~~QK,.GOKJ M Mc9%% 
	MKNN39%%%%T"" 	MJNN4

++,,,,# 	M73#:#:a#?#?"Os3xx((((RZ(( 	MSX\\KLLL O; OMNNN 3g&&	 3gE222 .s;''((w<<!DEEE 	N    	.qzSZZ''+GAJ + +!%jj+ +  !oo% ( "'!*--ErJ   rX   list[ArrayLike]rg   lengthinttuple[list[ArrayLike], Index]c                T   ||                     |          sg }|                    |          }t          |          D ]c\  }}|dk    r;t          j        |t
                    }|                    t          j                   n| |         }|                    |           d|} |}| |fS )zB
    Pre-emptively (cheaply) reindex arrays with new columns.
    Nr~   ry   )	equalsget_indexerr   rT   r   r   fillr   r   )	rX   rg   r<   r   
new_arraysindexerro   r   rZ   s	            rH   re   re     s     ~~k** 	"*,J!--g66G!'** ' '177(6888CHHRV$$$$ )C!!#&&&&F!K;rJ   c                Z   t          d | D                       }|st          t          |                     S t          t	          t          |                               }d}t          |           D ]+\  }}t          |dd           }||||<   d| ||<   |dz  },t          |          S )Nc              3  <   K   | ]}t          |d d          duV  dS )r   N)r   )rF   ss     rH   r   z(_get_names_from_index.<locals>.<genexpr>  s3      KK6400<KKKKKKrJ   r   r   zUnnamed rK   )r   r$   rR   r   rt   r   r   r"   )r]   has_some_namerY   countro   r  r|   s          rH   r   r     s    KKdKKKKKM (SYY''' s4yy!1!122EE$  1Avt$$=E!HH)%))E!HQJEE<<rJ   NKtuple[Index, Index]c                    |t          |           }nt          |          }|t          |          }nt          |          }||fS r{   )r$   r%   )r  r  rY   r<   s       rH   r   r     sP     }a  U##""w'''>rJ   c                H    ddl m} t          t          ||                     S )a  
    Converts a list of dataclass instances to a list of dictionaries.

    Parameters
    ----------
    data : List[Type[dataclass]]

    Returns
    --------
    list_dict : List[dict]

    Examples
    --------
    >>> from dataclasses import dataclass
    >>> @dataclass
    ... class Point:
    ...     x: int
    ...     y: int

    >>> dataclasses_to_dicts([Point(1, 2), Point(2, 3)])
    [{'x': 1, 'y': 2}, {'x': 2, 'y': 3}]

    r   )asdict)dataclassesr  r   map)r]   r  s     rH   dataclasses_to_dictsr    s.    0 #"""""FD!!"""rJ   c                    t                     st           t          j                  ry j        j        mt           j        j                  } fd|D             }t                     dk    r/t          |          D ]\  }}|j        dk    r|dddf         ||<    ||fS g t          g           fS t           t          j                  rD j        j        8t          t           j        j                            } fd|D             }||fS t           d         t          t          f          rt                     }n~t           d         t          j                  rt           |          \  }}nJt           d         t                     rt#           |          \  }}nd  D              t                     }t%          |||          \  }}||fS )a	  
    Return list of arrays, columns.

    Returns
    -------
    list[ArrayLike]
        These will become columns in a DataFrame.
    Index
        This will become frame.columns.

    Notes
    -----
    Ensures that len(result_arrays) == len(result_index).
    Nc                     g | ]
}|         S rm   rm   )rF   r   r]   s     rH   rI   zto_arrays.<locals>.<listcomp>0  s    999$t*999rJ   r   rk   c                     g | ]
}|         S rm   rm   r   s     rH   rI   zto_arrays.<locals>.<listcomp>?  s    +++a$q'+++rJ   c                ,    g | ]}t          |          S rm   )tuplerE   s     rH   rI   zto_arrays.<locals>.<listcomp>J  s    '''Qa'''rJ   )rR   rS   rT   rU   r8   namesr%   r   rV   r"   r   r  _list_to_arraysr   Mapping_list_of_dict_to_arraysr   _list_of_series_to_arrays_finalize_columns_and_data)r]   r<   r8   rX   ro   rZ   contents   `      rH   rd   rd     s   $ t99 dBJ'' 	'z+&tz'7889999999t99>> #,F"3"3 2 238q==(+AAAqD	F1Iw&<####	D"*	%	% $**:*FTZ-..//++++7+++w$q'D%=)) 	$d##	DGS[	)	) $.tW==WW	DGY	'	' $0w??WW ('$'''d##1#wFFGWGrJ   list[tuple | list]c                    t          | d         t                    rt          j        |           }nt          j        |           }|S )Nr   )rS   r  r	   to_object_array_tuplesto_object_array)r]   r"  s     rH   r  r  Q  sC     $q'5!! ,,T22 %d++NrJ   r   tuple[np.ndarray, Index]c                   |d | D             }t          |d          }i }g }| D ]}t          |dd           }|t          t          |                    }t	          |          |v r|t	          |                   }n'|                    |          x}|t	          |          <   t          |d          }|                    t          j	        ||                     t          j        |          }	|	|fS )Nc                J    g | ] }t          |t          t          f          |!S rm   )rS   r   r   rE   s     rH   rI   z-_list_of_series_to_arrays.<locals>.<listcomp>d  s,    QQQ1
1y,6O(P(PQQQQQrJ   Fr   rY   TrC   )r&   r   r$   rR   idr  r   r   r   take_ndrT   vstack)
r]   r<   	pass_dataindexer_cachealigned_valuesr  rY   r  r}   r"  s
             rH   r   r   \  s    QQQQQ	(???+-MN C C7D))=!#a&&))Ee99%%#BuII.GG161B1B71K1KKGmBuII.q555j0AABBBBi''GGrJ   
list[dict]c                    |Kd | D             }t          d | D                        }t          j        ||          }t          |          }d | D             } t          j        | t          |                    }||fS )a  
    Convert list of dicts to numpy arrays

    if `columns` is not passed, column names are inferred from the records
    - for OrderedDict and dicts, the column names match
      the key insertion-order from the first record to the last.
    - For other kinds of dict-likes, the keys are lexically sorted.

    Parameters
    ----------
    data : iterable
        collection of records (OrderedDict, dict)
    columns: iterables or None

    Returns
    -------
    content : np.ndarray[object, ndim=2]
    columns : Index
    Nc              3  X   K   | ]%}t          |                                          V  &d S r{   )r   r   rE   s     rH   r   z*_list_of_dict_to_arrays.<locals>.<genexpr>  s0      ,,!tAFFHH~~,,,,,,rJ   c              3  @   K   | ]}t          |t                    V  d S r{   )rS   r   rF   ds     rH   r   z*_list_of_dict_to_arrays.<locals>.<genexpr>  s,      99qz!T**999999rJ   r   c                \    g | ])}t          |          t          u r|nt          |          *S rm   )r   r   r4  s     rH   rI   z+_list_of_dict_to_arrays.<locals>.<listcomp>  s0    <<<!aDAAd1gg<<<rJ   )r   r	   fast_unique_multiple_list_genr%   dicts_to_arrayr   )r]   r<   genr   pre_colsr"  s         rH   r  r  {  s    . ,,t,,,99D9999994StDDDx(( =<t<<<D tG}}55GGrJ   r"  c                   t          | j                  }	 t          ||          }n"# t          $ r}t	          |          |d}~ww xY wt          |          r,|d         j        t          j        k    rt          ||          }||fS )zG
    Ensure we have valid columns, cast object dtypes if possible.
    Nr   ry   )
r   r   _validate_or_indexify_columnsAssertionErrorrW   rR   r8   rT   object_convert_object_array)r"  r<   r8   contentserrs        rH   r!  r!    s     GIH'/'BB ' ' 'oo3&' 8}} ?!*bj88'>>>Ws   ' 
AAAlist[np.ndarray]c                Z   |t          t          |                     }n
t          |t                    ot	          d |D                       }|sOt          |          t          |           k    r/t          t          |           dt          |            d          |rt          d |D                       dk    rt          d          |r[t          |d                   t          |           k    r5t          t          |d                    dt          |            d          |S )	a  
    If columns is None, make numbers as column names; Otherwise, validate that
    columns have valid length.

    Parameters
    ----------
    content : list of np.ndarrays
    columns : Index or None

    Returns
    -------
    Index
        If columns is None, assign positional column index value as columns.

    Raises
    ------
    1. AssertionError when content is not composed of list of lists, and if
        length of columns is not equal to length of content.
    2. ValueError when content is list of lists, but length of each sub-list
        is not equal
    3. ValueError when content is list of lists, but length of sub-list is
        not equal to length of content
    Nc              3  @   K   | ]}t          |t                    V  d S r{   )rS   r   rF   cols     rH   r   z0_validate_or_indexify_columns.<locals>.<genexpr>  s=       7
 7
&)JsD!!7
 7
 7
 7
 7
 7
rJ   z! columns passed, passed data had z columnsc                ,    h | ]}t          |          S rm   )rR   rE  s     rH   	<setcomp>z0_validate_or_indexify_columns.<locals>.<setcomp>  s    000CHH000rJ   rK   z<Length of columns passed for MultiIndex columns is differentr   )r$   rR   rS   r   allr=  rW   )r"  r<   
is_mi_lists      rH   r<  r<    sf   4 G--  .. 
3 7
 7
-47
 7
 7
 4
 4

  	c'llc'll:: w<< * *w<<* * *    	0000011A55 R  
  3wqz??c'll:: 71: . .7||. . .   NrJ   numpyFlist[npt.NDArray[np.object_]]dtype_backendcoerce_floatc                8    fdfd| D             }|S )aA  
    Internal function to convert object array.

    Parameters
    ----------
    content: List[np.ndarray]
    dtype: np.dtype or ExtensionDtype
    dtype_backend: Controls if nullable/pyarrow dtypes are returned.
    coerce_float: Cast floats that are integers to int.

    Returns
    -------
    List[ArrayLike]
    c                   t          j        d          k    rAt          j        | dk              } | j        t          j        d          k    rlt	          |           } dk    rV| j        t          j        d          k    r9t                      }|                                }|                    | |          } ndk    r9t          | t           j	                  r| j        j
        dv rt          | d          } n[t          t                    r-                                }|                    | d          } nj
        d	v rt          |           } | S )
Nr   rK  )	try_floatconvert_to_nullable_dtypery   iufbFrq   r   r   )rT   r8   r	   maybe_convert_objectsr   r   r   r   rS   rU   r   pd_arrayr   r   )rZ   	new_dtypearr_clsclsrN  r8   rM  s       rH   r   z%convert_object_array.<locals>.convert  sX   BHSMM!!+&*77*B  C }9--5c::C$//CI#4N4N$/MM	"+"@"@"B"B%44S	4JJ"g--*S"*2M2M-y~//&s777E>22 9 0022((E(FFt## -S%88
rJ   c                &    g | ]} |          S rm   rm   )rF   rZ   r   s     rH   rI   z(convert_object_array.<locals>.<listcomp>.  s!    ...sggcll...rJ   rm   )r"  r8   rM  rN  rX   r   s    ``` @rH   r?  r?    sJ    ,( ( ( ( ( ( (T /...g...FMrJ   )r<   r"   r8   r=   r9   r>   r:   r?   r;   r>   r@   r6   )
r]   r^   r8   r=   r_   r>   r:   r`   r@   r6   )T)r:   r`   r_   r>   r@   r6   )r8   r=   r_   r>   r:   r`   r@   r6   )r}   r   rY   r"   r<   r"   r@   r   )
r]   r   r8   r=   r:   r`   r_   r>   r@   r6   )
r]   r3   r<   r   rY   r   r8   r=   r@   r   )r@   r>   )r_   r>   r@   r   )r}   r   r@   r   )rY   r"   r8   r=   r@   r   )r@   r"   )
rX   r   rg   r"   r<   r   r   r  r@   r  )
r  r  r  r  rY   r   r<   r   r@   r  r{   )r<   r   r8   r=   r@   r  )r]   r#  r@   r   )r]   r   r<   r   r@   r'  )r]   r0  r<   r   r@   r'  )r"  r   r<   r   r8   r=   r@   r  )r"  rB  r<   r   r@   r"   )rK  F)
r"  rL  r8   r=   rM  r`   rN  r>   r@   r   )e__doc__
__future__r   collectionsr   typingr   r   rK  rT   r   pandas._configr   pandas._libsr	   pandas.core.dtypes.astyper
   pandas.core.dtypes.castr   r   r   r   r   pandas.core.dtypes.commonr   r   r   r   r   pandas.core.dtypes.dtypesr   pandas.core.dtypes.genericr   r   pandas.corer   r   r   pandas.core.arraysr   pandas.core.arrays.string_r   pandas.core.constructionr   rU  r   r   r   r    pandas.core.indexes.apir!   r"   r#   r$   r%   r&   r'   #pandas.core.internals.array_managerr(   r)   pandas.core.internals.blocksr*   r+   r,   r-   pandas.core.internals.managersr.   r/   r0   r1   collections.abcr2   r3   pandas._typingr4   r5   r6   r7   r\   ri   rw   r   r   r   r   r   r   r   rQ   rP   re   r   r   r  rd   r  r   r  r!  r<  r?  rm   rJ   rH   <module>ro     s    # " " " " "             
           5 5 5 5 5 5       4 4 4 4 4 4                           5 4 4 4 4 4       
        . - - - - - 2 2 2 2 2 2                                                                    
            "!>X >X >X >X >X >XB       F" " " " "Re e e ePY Y Y Y. "PY PY PY PY PY PYf" " " "4	 	 	 	# # # # #L   ' ' ' 'T8 8 8 8v   6   $   $# # #D ;?5 5 5 5 5p      >" " " "J   ,5 5 5 5v !	B B B B B B BrJ   