a
    OfW                     @  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 erddlmZ ddlmZ ddddddZddddddZd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)
check_ndimensure_block_shapeextract_pandas_arrayget_block_typemaybe_coerce_values)DtypeBlockzDtype | Noner   )dtypereturnc                 C  s   |durt |}t| ||\} }ddlm}m} ||u rHt| jtrHd}|du rd|pX| j}t|}n"||u rt| jt	st
j| |d} t|tst|}t| ||}t| jtt	frt| 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__
    Nr   )DatetimeTZBlockExtensionBlock)r   T)Zextract_numpy)ndim	placement)r   r   pandas.core.internals.blocksr   r   
isinstancer   r   r   r   r   Z_simple_newr   maybe_infer_ndimr	   r   r
   r   )valuesr   klassr   r   r   r    r   R/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/core/internals/api.py
make_block'   s.    



r   r   z
int | Noneint)r   r   r   c                 C  s8   |du r4t | jtjs.t|dkr(d}q4d}n| 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   b   s    r   str)namec                 C  s   dd l }| dv r|j|  dtdd | dkr>ddlm} |S | dkrVdd	lm} |S | d
krnddlm} |S | dkrddlm} |S t	d|  dd S )Nr   )r   r   r    create_block_manager_from_blockszP is deprecated and will be removed in a future version. Use public APIs instead.r"   )
stacklevelr'   )r'   r   r   r   )r   r   )r   z5module 'pandas.core.internals.api' has no attribute '')
warningswarnDeprecationWarningZpandas.core.internals.managersr'   r   r   r   r   AttributeError)r&   r*   r'   r   r   r   r   r   r   __getattr__r   s,    	
r.   )NNN)__doc__
__future__r   typingr   numpyr#   Zpandas._libs.internalsr   Zpandas.core.dtypes.commonr   Zpandas.core.dtypes.dtypesr   r   Zpandas.core.arraysr   Zpandas.core.constructionr	   r   r
   r   r   r   r   Zpandas._typingr   r   r   r   r.   r   r   r   r   <module>   s     ;