o
    g                     @   sH   d Z ddlmZ ddlmZmZ ddlmZ g dZeddd Z	d	S )
z
Miscellaneous utils.
    )asarray)normalize_axis_tuplenormalize_axis_index)
set_module)byte_boundsr   r   znumpy.lib.array_utilsc           
      C   s   | j }|d d }|d }|d }t| jj}| }}|du r*|| j| 7 }||fS t||D ]\}}	|	dk r@||d |	 7 }q/||d |	 7 }q/||7 }||fS )a^  
    Returns pointers to the end-points of an array.

    Parameters
    ----------
    a : ndarray
        Input array. It must conform to the Python-side of the array
        interface.

    Returns
    -------
    (low, high) : tuple of 2 integers
        The first integer is the first byte of the array, the second
        integer is just past the last byte of the array.  If `a` is not
        contiguous it will not use every byte between the (`low`, `high`)
        values.

    Examples
    --------
    >>> import numpy as np
    >>> I = np.eye(2, dtype='f'); I.dtype
    dtype('float32')
    >>> low, high = np.lib.array_utils.byte_bounds(I)
    >>> high - low == I.size*I.itemsize
    True
    >>> I = np.eye(2); I.dtype
    dtype('float64')
    >>> low, high = np.lib.array_utils.byte_bounds(I)
    >>> high - low == I.size*I.itemsize
    True

    datar   stridesshapeN   )__array_interface__r   dtypeitemsizesizezip)
aaia_dataastridesashapebytes_aa_lowa_highr	   stride r   R/var/www/visachat/venv/lib/python3.10/site-packages/numpy/lib/_array_utils_impl.pyr      s   "r   N)
__doc__numpy._corer   numpy._core.numericr   r   numpy._utilsr   __all__r   r   r   r   r   <module>   s    