Ë
    £èh„  ã                  ó´   — d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZmZmZ erd dlmZ dd	gZd
ZdZ G d„ d«      Z G d„ d	«      Zy)é    )Ú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                  óT   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zy
)r   c                ó"   — t        «       | _        y ©N)ÚdictÚdata©Úselfs    ú6lib/python3.12/site-packages/ezdxf/entities/appdata.pyÚ__init__zAppData.__init__   s   € Ü%)£Vˆ�	ó    c                ó0   — t        |«      | j                  v S )z?Returns ``True`` if application-defined data exist for `appid`.©r
   r   ©r   Úappids     r   Ú__contains__zAppData.__contains__   s   € ä˜UÓ# t§y¡yÐ0Ð0r   c                ó,   — t        | j                  «      S )zReturns the count of AppData.)Úlenr   r   s    r   Ú__len__zAppData.__len__   s   € ä�4—9‘9‹~Ðr   c                ó6   — | j                   j                  «       S r   )r   Úvaluesr   s    r   ÚtagszAppData.tags#   s   € Ø�y‰y×ÑÓ!Ð!r   c                ód   — 	 | j                   t        |«         S # t        $ r t        |«      ‚w xY w)zÃGet 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   ÚgetzAppData.get&   s5   € ð	%Ø—9‘9œ]¨5Ó1Ñ2Ð2øÜò 	%Ü˜eÓ$Ð$ð	%ús   ‚ š/c                óX   — t        |«      r|d   j                  }|| j                  |<   yy)z�Store 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   ÚsetzAppData.set1   s+   € ô
 ˆtŒ9Ø˜‘G—M‘MˆEØ#ˆD�I‰I�eÒð r   c                ó  — t        d„ |D «       «      }t        |«      }|d   t        |fk7  r |j                  dt	        t        |«      «       |d   t        dfk7  r|j                  t	        t        d«      «       | j                  |«       y)z•Add application-defined tags for `appid`.
        Adds first tag (102, "{APPID") if not exist.
        Adds last tag (102, "}" if not exist.
        c              3  ó:   K  — | ]  \  }}t        ||«      –— Œ y ­wr   )r	   )Ú.0Úcoder-   s      r   Ú	<genexpr>zAppData.add.<locals>.<genexpr>?   s   è ø€ Ð@¹4©K¨D°%”F˜4 ×'¹4ùs   ‚r   éÿÿÿÿÚ}N)r   r
   r   Úinsertr	   Úappendr.   )r   r!   r   s      r   ÚaddzAppData.add:   ss   € ô
 Ñ@¹4Ó@Ó@ˆÜ˜eÓ$ˆØ�‰7”¨Ð.Ò.Ø�K‰K˜œ6¤/°5Ó9Ô:Ø�‰8œ¨Ð-Ò-Ø�K‰Kœœ°Ó4Ô5Ø�‰��r   c                óR   — t        |«      }|| j                  v r| j                  |= yy)zpDelete application-defined data for `appid` without raising and error
        if `appid` doesn't exist.
        Nr   )r   r!   Ú_appids      r   ÚdiscardzAppData.discardG   s+   € ô ˜uÓ%ˆØ�T—Y‘YÑØ—	‘	˜&Ñ!ð r   c                ód   — | j                   j                  «       D ]  }|j                  |«       Œ y r   )r   r'   Ú
write_tags)r   Ú	tagwriterr   s      r   Ú
export_dxfzAppData.export_dxfO   s'   € Ø—I‘I×$Ñ$Ö&ˆDØ× Ñ  Õ&ñ 'r   N)ÚreturnÚNone)r!   Ústrr@   Úbool©r@   Úint)r@   zIterable[Tags])r!   rB   r@   r   )r(   r   r@   rA   )r!   rB   r   zIterable[Sequence]r@   rA   )r!   rB   ©r>   r   r@   rA   )Ú__name__Ú
__module__Ú__qualname__r   r"   r%   r(   r+   r.   r8   r;   r?   © r   r   r   r      s/   „ ó,ó1óó"ó	%ó$óó"ô'r   c                  óv   — e Zd ZdZddd„Zdd„Zdd„Zdd„Zdd„Ze	ddd„«       Z
dd	„Zdd
„Zdd„Zdd„Zdd„Zy)r   z‹Handle storage for related reactors.

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

    Nc                ó,   — t        |xs g «      | _        y r   ©r.   Úreactors©r   Úhandless     r   r   zReactors.__init__\   s   € Ü"% g¢m°Ó"4ˆ�r   c                ó,   — t        | j                  «      S )z$Returns count of registered handles.)r$   rN   r   s    r   r%   zReactors.__len___   s   € ä�4—=‘=Ó!Ð!r   c                ó   — || j                   v S )z+Returns ``True`` if `handle` is registered.)rN   ©r   Úhandles     r   r"   zReactors.__contains__c   s   € à˜Ÿ™Ð&Ð&r   c                ó4   — t        | j                  «       «      S )z/Returns an iterator for all registered handles.)Úiterr+   r   s    r   Ú__iter__zReactors.__iter__g   s   € ä�D—H‘H“JÓÐr   c                ó,   — t        | j                  «      S )zReturns a copy.)r   rN   r   s    r   ÚcopyzReactors.copyk   s   € ä˜Ÿ™Ó&Ð&r   c                ól   — |€ | d«      S t        |«      dk  rt        d«      ‚ | d„ |dd D «       «      S )zÅCreate Reactors() instance from tags.

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

        Args:
            tags: list of DXFTags()

        Né   zACAD_REACTORS errorc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr   )r-   )r1   rT   s     r   r3   z%Reactors.from_tags.<locals>.<genexpr>   s   è ø€ Ð:©z V�F—L•L©zùs   ‚é   r4   )r$   r   )Úclsr(   s     r   Ú	from_tagszReactors.from_tagso   sA   € ð ˆ<Ù�t“9Ðäˆt‹9�qŠ=Ü#Ð$9Ó:Ð:ÙÑ:¨t°A°b©zÓ:Ó;Ð;r   c                ó2   — t        | j                  d„ ¬«      S )z.Returns all registered handles as sorted list.c                ó   — t        | d¬«      S )Né   )Úbase)rE   )Úxs    r   Ú<lambda>zReactors.get.<locals>.<lambda>ƒ   s
   € ´3°q¸rµ?r   )Úkey)ÚsortedrN   r   s    r   r+   zReactors.get�   s   € ä�d—m‘mÑ)BÔCÐCr   c                ó,   — t        |xs g «      | _        y)zReset all handles.NrM   rO   s     r   r.   zReactors.set…   s   € ä˜GšM rÓ*ˆ�r   c                ó:   — | j                   j                  |«       y)zAdd a single `handle`.N)rN   r8   rS   s     r   r8   zReactors.add‰   s   € à�‰×Ñ˜&Õ!r   c                ó:   — | j                   j                  |«       y)zDiscard a single `handle`.N)rN   r;   rS   s     r   r;   zReactors.discard�   s   € à�‰×Ñ˜fÕ%r   c                óº   — |j                  t        t        «       | j                  «       D ]  }|j                  t        |«       Œ |j                  t        d«       y )Nr5   )Ú
write_tag2r   r   r+   r   )r   r>   rT   s      r   r?   zReactors.export_dxf‘   sC   € Ø×Ñœ_¬mÔ<Ø—h‘h–jˆFØ× Ñ Ô!4°fÕ=ð !à×Ñœ_¨cÕ2r   r   )rP   úOptional[Iterable[str]]rD   )rT   rB   r@   rC   )r@   zIterator[str])r@   r   )r(   zOptional[Tags]r@   r   )r@   z	list[str])rP   rm   r@   rA   )rT   rB   r@   rA   )rT   rB   rF   )rG   rH   rI   Ú__doc__r   r%   r"   rW   rY   Úclassmethodr_   r+   r.   r8   r;   r?   rJ   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   rJ   r   r   Ú<module>ry      sX   ðõ #ß HÕ Hß 3Ý !ß <÷ñ ñ Ý7à�jÐ
!€à>Ð Ø<Ð ÷:'ñ :'÷zA3ò A3r   