
    W|h;                     >    S r SSKrSSKJrJr  SSKJr   " S S\S9rg)z2Defines the base class for all effects in MoviePy.    N)ABCMetaabstractmethod)Clipc                   :    \ rS rSrSrS r\S\S\4S j5       rSr	g)	Effect	   z_Base abstract class for all effects in MoviePy.
Any new effect have to extend this base class.
c                 .    [         R                  " U 5      $ )aG  Return a shallow copy of an Effect.

You must *always* copy an ``Effect`` before applying,
because some of them will modify their own attributes when applied.
For example, setting a previously unset property by using target clip property.

If we was to use the original effect, calling the same effect multiple times
could lead to different properties, and different results for equivalent clips.

By using copy, we ensure we can use the same effect object multiple times while
maintaining the same behavior/result.

In a way, copy makes the effect himself being kind of idempotent.
)_copycopy)selfs    H/home/james-whalen/.local/lib/python3.13/site-packages/moviepy/Effect.pyr   Effect.copy   s     zz$    clipreturnc                     g)zApply the current effect on a clip

Parameters
----------
clip
    The target clip to apply the effect on.
    (Internally, MoviePy will always pass a copy of the original clip)

N )r   r   s     r   applyEffect.apply   s     	r   r   N)
__name__
__module____qualname____firstlineno____doc__r   r   r   r   __static_attributes__r   r   r   r   r   	   s.     " 
$ 
4 
 
r   r   )	metaclass)	r   r   r
   abcr   r   moviepy.Clipr   r   r   r   r   <module>r      s    8  ' !w !r   