o
    kìEiW  ã                   @  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rNddlmZ ddlmZ 	dddd„Z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)Ú
check_ndimÚensure_block_shapeÚextract_pandas_arrayÚget_block_typeÚmaybe_coerce_values)ÚDtype©ÚBlockÚdtypeúDtype | NoneÚreturnr   c                 C  sì   |durt |ƒ}t| ||ƒ\} }ddlm}m} ||u r$t| jtƒr$d}|du r2|p,| j}t|ƒ}n||u rCt| jt	ƒsCt
j| |d�} t|tƒsLt|ƒ}t| ||ƒ}t| jtt	fƒret| 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)Úextract_numpy)ÚndimÚ	placement)r   r   Úpandas.core.internals.blocksr   r   Ú
isinstancer   r   r   r   r   Ú_simple_newr   Úmaybe_infer_ndimr	   r   r
   r   )Úvaluesr   Úklassr   r   r   r   © r    úV/var/www/agentarbitrage/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   b   s   ýÿr   ÚnameÚstrc                 C  s–   dd l }| dv rC|j| › d�tdd� | dkrddlm} |S | dkr+dd	lm} |S | d
kr7ddlm} |S | dkrCddlm} |S t	d| › d�ƒ‚)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ÚDeprecationWarningÚpandas.core.internals.managersr+   r   r   r   r   ÚAttributeError)r)   r.   r+   r   r   r   r    r    r!   Ú__getattr__r   s,   ú	
ÿr3   )NNN)r   r   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	   r   r
   r   r   r   r   Úpandas._typingr   r   r"   r   r3   r    r    r    r!   Ú<module>   s"    ÿ
;