
    OwgW                        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rddlmZ ddlmZ 	 d	 	 	 ddZddZddZy)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Blockc                :   |t        |      }t        | ||      \  } }ddlm}m} ||u rt        | j                  t              rd}||xs | j                  }t        |      }n5||u r1t        | j                  t              st        j                  | |      } t        |t              st        |      }t        | ||      }t        | j                  t        t        f      rt        | d      } t        | |      } t!        | ||       t#        |       }  || ||      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)dtypeT)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   s          P/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/core/internals/api.py
make_blockr!   '   s	    U#(=MFE
 :fllK#H }%u%	/	!*V\\?*S** 
 i0"9-	FIt4D&,,o >? vT:#FD1vy$' (Fdi88    c                    |Ft        | j                  t        j                        st        |      dk7  rd}|S d}|S | j                  }|S )zH
    If `ndim` is not provided, infer it from placement and values.
          )r   r   nplenr   )r   r   r   s      r    r   r   b   sQ     |&,,19~"
 K  K ;;DKr"   c                    dd l }| dv rO|j                  |  dt        d       | dk(  rddlm} |S | dk(  rdd	lm} |S | d
k(  rddlm} |S | dk(  rd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)namer,   r)   r   r   r   s         r    __getattr__r2   r   s       	f ' '  	 	
 55W33W_:L&&D""%%C!!

?vQG r"   )NNN)r   zDtype | Nonereturnr   )r   r   r   z
int | Noner3   int)r1   str)__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   r2    r"   r    <module>rA      sd    #    1 2
 - 2  $2 EI895A89
89v *r"   