o
    ҷh                     @  s   d Z ddlmZ ddlmZ ddl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mZmZmZmZmZmZmZmZ erNddlmZ 	ddddZdddZdS )z
This is a pseudo-public API for downstream libraries.  We ask that downstream
authors

1) Try to avoid using internals directly altogether, and failing that,
2) Use only functions exposed here (or in core.internals)

    )annotations)TYPE_CHECKINGN)BlockPlacement)pandas_dtype)DatetimeTZDtypePeriodDtype)DatetimeArray)extract_array)BlockDatetimeTZBlockExtensionBlock
check_ndimensure_block_shapeextract_pandas_arrayget_block_typemaybe_coerce_values)DtypedtypeDtype | Nonereturnr
   c                 C  s   |durt |}t| ||\} }|tu rt| jtrd}|du r*|p$| j}t|}n|tu r;t| jts;t	j
| |d} t|tsDt|}t| ||}t| jttfr]t| dd} t| |} t| || t| } || ||dS )a+  
    This is a pseudo-public analogue to blocks.new_block.

    We ask that downstream libraries use this rather than any fully-internal
    APIs, including but not limited to:

    - core.internals.blocks.make_block
    - Block.make_block
    - Block.make_block_same_class
    - Block.__init__
    N)r   T)extract_numpy)ndim	placement)r   r   r   
isinstancer   r   r   r   r   r   _simple_newr   maybe_infer_ndimr	   r   r   r   )valuesr   klassr   r    r   L/var/www/html/venv/lib/python3.10/site-packages/pandas/core/internals/api.py
make_block(   s,   



r    r   r   r   
int | Noneintc                 C  s<   |du rt | jtjst|dkrd}|S d}|S | j}|S )zH
    If `ndim` is not provided, infer it from placement and values.
    N      )r   r   nplenr   )r   r   r   r   r   r   r   ^   s   r   )NNN)r   r   r   r
   )r   r   r   r!   r   r"   )__doc__
__future__r   typingr   numpyr%   pandas._libs.internalsr   pandas.core.dtypes.commonr   pandas.core.dtypes.dtypesr   r   pandas.core.arraysr   pandas.core.constructionr	   pandas.core.internals.blocksr
   r   r   r   r   r   r   r   pandas._typingr   r    r   r   r   r   r   <module>   s    (6