o
    Th                     @   sB   d dl ZG dd dZG dd dZdd Zdd	 Zdd
dZdS )    Nc                   @   s   e Zd Zdd ZdS )_FakeMatrixc                 C   s   || _ |j| _d S N)_data__array_interface__selfdata r	   W/home/air/segue/gpt/backup/venv/lib/python3.10/site-packages/scipy/linalg/_testutils.py__init__   s   z_FakeMatrix.__init__N)__name__
__module____qualname__r   r	   r	   r	   r
   r      s    r   c                   @   s   e Zd Zdd ZdddZdS )_FakeMatrix2c                 C   s
   || _ d S r   )r   r   r	   r	   r
   r      s   
z_FakeMatrix2.__init__Nc                 C   s   |r| j  S | j S r   )r   copy)r   dtyper   r	   r	   r
   	__array__   s   
z_FakeMatrix2.__array__)NN)r   r   r   r   r   r	   r	   r	   r
   r   
   s    r   c                 C   s   t | dkr!| d dkr!tj| |d}d|dddf< d|d< |S t | dkre| d | d kretj| |d}t| d }d|||f< d||dd |dd d f< d||dd d |dd f< |S tjd tjj|  |S )zz
    Get a test array of given shape and data type.
    Returned NxN matrices are posdef, and 2xN are banded-posdef.

       r   r      Ni  )lennpzerosarangerandomseedrandnastype)shaper   xjr	   r	   r
   
_get_array   s     r"   c                 C   s   | S r   r	   )r    r	   r	   r
   _id-   s   r#   c              	      s   |du rt jt jt jt jg}|D ]B dD ]=tttfD ]5 fdd|D }fdd|D }| |  d dd}t||D ]\}}t j	j
|||d	 qBqqqdS )
zA
    Test that a call does not overwrite its input arguments
    N)CFc                    s   g | ]}t | qS r	   )r"   ).0sr   r	   r
   
<listcomp><   s    z'assert_no_overwrite.<locals>.<listcomp>c                    s   g | ]	} | qS r	   )r   )r&   r    )fakerorderr	   r
   r(   =   s    zcall modified inputs [z, ])err_msg)r   float32float64	complex64
complex128r#   r   r   ziptestingassert_equal)callshapesdtypesorig_inputsinputsmsgabr	   )r   r)   r*   r
   assert_no_overwrite1   s   r<   r   )numpyr   r   r   r"   r#   r<   r	   r	   r	   r
   <module>   s    
