
    !Цiq                         % S SK r S SKJr  S SKrSSKJrJrJrJ	r	  \
\   \S'   \R                  R                  \R                  5      S:  a  S SKJr  OS SKJr  S rS	 rS
 rg)    N)Iterable   )ContinuousWaveletDiscreteContinuousWaveletModesWavelet	AxisErrorz1.25.0)r	   c                     [        U [        [        45      (       d  [        U 5      n [        U [        5      (       a  [	        S5      eU $ )z)Convert wavelet name to a Wavelet object.zA ContinuousWavelet object was provided, but only discrete Wavelet objects are supported by this function.  A list of all supported discrete wavelets can be obtained by running:
print(pywt.wavelist(kind='discrete')))
isinstancer   r   r   
ValueError)wavelets    J/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/pywt/_utils.py_as_waveletr      sF    g 17;<<+G4',--45 	5
 N    c                    [        U5      n[        U [        [        45      (       a  [	        U 5      /[        U5      -  nU$ [        U [        5      (       am  [        U 5      S:X  a  [	        U S   5      /[        U5      -  nU$ [        U 5      [        U5      :w  a  [        S5      eU  Vs/ s H  n[	        U5      PM     nn U$ [        S5      es  snf )a  Initialize Wavelets for each axis to be transformed.

Parameters
----------
wavelet : Wavelet or tuple of Wavelets
    If a single Wavelet is provided, it will used for all axes.  Otherwise
    one Wavelet per axis must be provided.
axes : list
    The tuple of axes to be transformed.

Returns
-------
wavelets : list of Wavelet objects
    A tuple of Wavelets equal in length to ``axes``.

r   r   zGThe number of wavelets must match the number of axes to be transformed.z*wavelet must be a str, Wavelet or iterable)tupler   strr   r   lenr   r   )r   axeswaveletsws       r   _wavelets_per_axisr   $   s    " ;D'C>**(+c$i7 O 
GX	&	&w<1#GAJ/2SY>H O 7|s4y( )* * 1881AH8H O EFF 9s   )Cc                    [        U5      n[        U [        [        45      (       a%  [        R
                  " U 5      /[        U5      -  n U $ [        U [        5      (       a  [        U 5      S:X  a'  [        R
                  " U S   5      /[        U5      -  n O#[        U 5      [        U5      :w  a  [        S5      eU  Vs/ s H  n[        R
                  " U5      PM     n nU $ [        S5      es  snf )ag  Initialize mode for each axis to be transformed.

Parameters
----------
modes : str or tuple of strings
    If a single mode is provided, it will used for all axes.  Otherwise
    one mode per axis must be provided.
axes : tuple
    The tuple of axes to be transformed.

Returns
-------
modes : tuple of int
    A tuple of Modes equal in length to ``axes``.

r   r   zDThe number of modes must match the number of axes to be transformed.z*modes must be a str, Mode enum or iterable)	r   r   intr   r   from_objectr   r   r   )modesr   modes      r   _modes_per_axisr   H   s    " ;D%#s$$""5),s4y8 L 
E8	$	$u:?&&uQx03c$i?E 5zSY&  "? @ @5:;UT""4(U; L EFF <s   > C-)inspectcollections.abcr   numpynp_extensions._pywtr   r   r   r   type	Exception__annotations__libNumpyVersion__version__numpy.exceptionsr	   r   r   r    r   r   <module>r,      sW     $   	? 66r~~&(2*
!H r   