
    Sh                        U d dl mZ d dlmZmZmZmZmZmZ d dl	m
Z
 d dlmc mZ d dlmZ  ed           G d d	                      Z G d
 de
          ZdZeedf         ed<   dZeeef         Zdej        deeej        ef                  fdZdej        deeej        ef                  ddfdZeded         fd            ZdS )    )	dataclass)TupleUnionOptionalDictIterableIterator)IntEnumN)contextmanagerF)initc            	       Z    e Zd ZU dZeed<   eed<   eed<   dZeed<   d	dedededefdZdS )
ColorzU
    8-bit RGB color with alpha channel.

    All values are ints from 0 to 255.
    rgbr   ac                     ||||fD ]"}|t          d          vrt          d          #|| _        || _        || _        || _        d S )N   z%Color channels must have values 0-255)range
ValueErrorr   r   r   r   )selfr   r   r   r   values         T/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/pysubs2/common.py__init__zColor.__init__   sb    1aZ 	J 	JEE#JJ&& !HIII '     N)r   )__name__
__module____qualname____doc__int__annotations__r   r    r   r   r   r      s          
 FFF
FFF
FFFAsJJJ # # # #      r   r   c                   b    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zededd fd            ZdefdZdS )	Alignmentz
    An integer enum specifying text alignment

    The integer values correspond to Advanced SubStation Alpha definition (like on numpad).
    Note that the older SubStation Alpha (SSA) specification used different numbering schema.

                            	   	alignmentreturnc                 V    t          t                              |          dz             S )z&Convert SSA alignment to ASS alignmentr%   )r$   SSA_ALIGNMENTindex)clsr.   s     r   from_ssa_alignmentzAlignment.from_ssa_alignment1   s%     ,,Y77!;<<<r   c                 ,    t           | j        dz
           S )z&Convert ASS alignment to SSA alignmentr%   )r1   r   )r   s    r   to_ssa_alignmentzAlignment.to_ssa_alignment6   s    TZ!^,,r   N)r   r   r   r   BOTTOM_LEFTBOTTOM_CENTERBOTTOM_RIGHTMIDDLE_LEFTMIDDLE_CENTERMIDDLE_RIGHTTOP_LEFT
TOP_CENTER	TOP_RIGHTclassmethodr    r4   r6   r"   r   r   r$   r$      s          KMLKMLHJI=3 =; = = = [=-# - - - - - -r   r$   )	r%   r&   r'   r-   
      r)   r*   r+   .r1   z1.8.0elemr/   c              #   \   K   | j         r	| j         V  | D ]}|V  |j        r	|j        V  dS )z
    Yield child text nodes (as str) and subelements for given XML element

    Workaround for awkward ``xml.etree.ElementTree`` API.

    See also:
        `etree_append_child_nodes()`

    N)texttail)rC   
child_elems     r   etree_iter_child_nodesrH   E   s[       y i " "
? 	"/!!!" "r   nodesc                 &   t          |           dk    r| d         nd}|D ]p}t          |t                    rB| | j        || _        (| xj        |z  c_        9|j        ||_        H|xj        |z  c_        Y|                     |           |}qdS )zv
    Add child text nodes and subelements to given XML element

    See also:
        `etree_iter_child_nodes()`

    r   N)len
isinstancestrrE   rF   append)rC   rI   
last_childnodes       r   etree_append_child_nodesrR   W   s     !YY]]bJ  dC   	!9$ $DIIII%III?*&*JOOOOt+OOOKKJJ r   c               #     K   d} i }	 t          t          j        dd          } | |                                 }n# t          $ r Y nw xY wdV  	 | +|                                  |                     |           dS dS # t          $ r Y dS w xY w)z
    Context manager that reverts global changes from ``xml.etree.ElementTree.register_namespace()``

    Workaround for poor namespace handling in ``xml.etree.ElementTree``.

    N_namespace_map)getattrETregister_namespacecopy	Exceptionclearupdate)namespace_mapnamespace_map_original_contents     r   !etree_register_namespace_overrider^   q   s       /3M%'" 57GNN$-:-?-?-A-A*    
EEE$!!!  !?@@@@@ %$    s!   1: 
AA+A> >
BB)dataclassesr   typingr   r   r   r   r   r	   enumr
   xml.etree.ElementTreeetreeElementTreerV   
contextlibr   r   r$   r1   r    r!   VERSIONfloat
IntOrFloatElementrN   rH   rR   r^   r"   r   r   <module>rj      s   ! ! ! ! ! ! ! C C C C C C C C C C C C C C C C       " " " " " " " " " % % % % % %        ,- - - - - - - -8 "?uS#X > > >  3:
" "rz39O0P " " " "$2: huRZQT_?U6V [_    4 8D>      r   