
    h                        S SK Jr  S SKJrJrJrJrJr  S SKJ	r	J
r
  S SKJr  S SKJrJr  S SKJrJrJr  \(       a  S SKJr  SS	/rS
rSr " S S5      r " S S	5      rg)    )annotations)TYPE_CHECKINGIterableSequenceOptionalIterator)dxftaguniform_appid)Tags)DXFKeyErrorDXFStructureError)ACAD_REACTORSREACTOR_HANDLE_CODEAPP_DATA_MARKER)AbstractTagWriterAppDataReactorsz#Invalid DXF attribute for entity {}zDXF attribute {} does not existc                  n    \ rS rSrSS jrSS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSrg)r      c                "    [        5       U l        g N)dictdataselfs    H/var/www/html/env/lib/python3.13/site-packages/ezdxf/entities/appdata.py__init__AppData.__init__   s    %)V	    c                2    [        U5      U R                  ;   $ )z?Returns ``True`` if application-defined data exist for `appid`.r
   r   r   appids     r   __contains__AppData.__contains__   s    U#tyy00r   c                ,    [        U R                  5      $ )zReturns the count of AppData.)lenr   r   s    r   __len__AppData.__len__   s    499~r   c                6    U R                   R                  5       $ r   )r   valuesr   s    r   tagsAppData.tags#   s    yy!!r   c                f     U R                   [        U5         $ ! [         a    [        U5      ef = f)zGet application-defined data for `appid` as
:class:`~ezdxf.lldxf.tags.Tags` container.
The first tag is always (102, "{APPID").
The last tag is always (102, "}").
)r   r
   KeyErrorr   r"   s     r   getAppData.get&   s5    	%99]5122 	%e$$	%s    0c                `    [        U5      (       a  US   R                  nXR                  U'   gg)zuStore raw application-defined data tags.
The first tag has to be (102, "{APPID").
The last tag has to be (102, "}").
r   N)r'   valuer   )r   r,   r#   s      r   setAppData.set1   s+    
 t99GMME#IIe r   c                   [        S U 5       5      n[        U5      nUS   [        U4:w  a   UR                  S[	        [        U5      5        US   [        S4:w  a  UR                  [	        [        S5      5        U R                  U5        g)z}Add application-defined tags for `appid`.
Adds first tag (102, "{APPID") if not exist.
Adds last tag (102, "}" if not exist.
c              3  <   #    U  H  u  p[        X5      v   M     g 7fr   )r	   ).0coder3   s      r   	<genexpr>AppData.add.<locals>.<genexpr>?   s     @4KDF4''4s   r   }N)r   r
   r   insertr	   appendr4   )r   r#   r   s      r   addAppData.add:   ss    
 @4@@e$7..KK6/59:8--KK45r   c                T    [        U5      nX R                  ;   a  U R                  U	 gg)z`Delete application-defined data for `appid` without raising and error
if `appid` doesn't exist.
Nr!   )r   r#   _appids      r   discardAppData.discardG   s)     u%YY		&! r   c                h    U R                   R                  5        H  nUR                  U5        M     g r   )r   r+   
write_tags)r   	tagwriterr   s      r   
export_dxfAppData.export_dxfO   s'    II$$&D  & 'r   )r   N)returnNone)r#   strrK   boolrK   int)rK   zIterable[Tags])r#   rM   rK   r   )r,   r   rK   rL   )r#   rM   r   zIterable[Sequence]rK   rL   )r#   rM   rH   r   rK   rL   )__name__
__module____qualname____firstlineno__r   r$   r(   r,   r0   r4   r@   rD   rI   __static_attributes__ r   r   r   r      s/    ,1"	%$"'r   c                      \ rS rSrSrSSS jjrSS jrSS jrSS jrSS jr	\
SSS	 jj5       rSS
 jrSS jrSS jrSS jrSS jrSrg)r   T   zHandle storage for related reactors.

Reactors are other objects related to the object that contains this
Reactor() instance.

Nc                6    [        U=(       d    / 5      U l        g r   r4   reactorsr   handless     r   r   Reactors.__init__\   s    "%gm"4r   c                ,    [        U R                  5      $ )z$Returns count of registered handles.)r'   r\   r   s    r   r(   Reactors.__len___   s    4==!!r   c                    XR                   ;   $ )z+Returns ``True`` if `handle` is registered.r\   r   handles     r   r$   Reactors.__contains__c   s    &&r   c                4    [        U R                  5       5      $ )z/Returns an iterator for all registered handles.)iterr0   r   s    r   __iter__Reactors.__iter__g   s    DHHJr   c                ,    [        U R                  5      $ )zReturns a copy.)r   r\   r   s    r   copyReactors.copyk   s    &&r   c                p    Uc  U " S5      $ [        U5      S:  a  [        S5      eU " S USS  5       5      $ )zCreate Reactors() instance from tags.

Expected DXF structure:
[(102, '{ACAD_REACTORS'), (330, handle), ..., (102, '}')]

Args:
    tags: list of DXFTags()

N   zACAD_REACTORS errorc              3  8   #    U  H  oR                   v   M     g 7fr   )r3   )r8   re   s     r   r:   %Reactors.from_tags.<locals>.<genexpr>   s     :zVLLzs      r<   )r'   r   )clsr,   s     r   	from_tagsReactors.from_tagso   sA     <t9t9q=#$9:::tAbz:;;r   c                ,    [        U R                  S S9$ )z.Returns all registered handles as sorted list.c                    [        U SS9$ )N   )base)rP   )xs    r   <lambda>Reactors.get.<locals>.<lambda>   s
    3qr?r   )key)sortedr\   r   s    r   r0   Reactors.get   s    dmm)BCCr   c                6    [        U=(       d    / 5      U l        g)zReset all handles.Nr[   r]   s     r   r4   Reactors.set   s    GMr*r   c                :    U R                   R                  U5        g)zAdd a single `handle`.N)r\   r@   rd   s     r   r@   Reactors.add   s    &!r   c                :    U R                   R                  U5        g)zDiscard a single `handle`.N)r\   rD   rd   s     r   rD   Reactors.discard   s    f%r   c                    UR                  [        [        5        U R                  5        H  nUR                  [        U5        M     UR                  [        S5        g )Nr=   )
write_tag2r   r   r0   r   )r   rH   re   s      r   rI   Reactors.export_dxf   sC    _m<hhjF  !4f= !_c2r   rc   r   )r^   Optional[Iterable[str]]rO   )re   rM   rK   rN   )rK   zIterator[str])rK   r   )r,   zOptional[Tags]rK   r   )rK   z	list[str])r^   r   rK   rL   )re   rM   rK   rL   )re   rM   rQ   )rR   rS   rT   rU   __doc__r   r(   r$   ri   rl   classmethodrt   r0   r4   r@   rD   rI   rV   rW   r   r   r   r   T   sN    5"' ' < <"D+"&3r   N)
__future__r   typingr   r   r   r   r   ezdxf.lldxf.typesr	   r
   ezdxf.lldxf.tagsr   ezdxf.lldxf.constr   r   r   r   r   ezdxf.lldxf.tagwriterr   __all__ERR_INVALID_DXF_ATTRIBERR_DXF_ATTRIB_NOT_EXITSr   r   rW   r   r   <module>r      sX    # H H 3 ! <  7j
!> < :' :'zA3 A3r   