
    hb                         S SK Jr  S SKJrJrJr  S SKJr  S SKJ	r	  S SKJ
r
JrJr  SSKJr  \(       a  S SKJr  S S	KJr  S S
KJrJrJrJrJrJr  S/r " S S5      rg)    )annotations)TYPE_CHECKINGUnionOptional)Tags)DXFStructureError)ACAD_XDICTIONARYXDICT_HANDLE_CODEAPP_DATA_MARKER   )default_copy)Drawing)AbstractTagWriter)
Dictionary	DXFEntity	DXFObjectPlaceholderDictionaryVarXRecordExtensionDictc                  R   \ rS rSrSrSrSS jr\S S j5       r\S!S j5       r	S"S jr
S"S jrS"S	 jrS"S
 jrS rS rS rS#S$S jjrS%S jr\S&S j5       r\4S'S jjr\S 5       r\S 5       rS(S jr\S)S j5       rS*S jrS+S jrS rS,S-S jjrS.S jrS/S jr S0S jr!S1S jr"Sr#g)2r   !   a<  Stores extended data of entities in app data 'ACAD_XDICTIONARY', app
data contains just one entry to a hard-owned DICTIONARY objects, which is
not shared with other entities, each entity copy has its own extension
dictionary and the extension dictionary is destroyed when the owner entity
is deleted from database.

_xdictc                    Xl         g Nr   selfxdicts     F/var/www/html/env/lib/python3.13/site-packages/ezdxf/entities/xdict.py__init__ExtensionDict.__init__,   s	         c                r    U R                   nUc   S5       e[        U[        5      (       a   SU S35       eU$ )zBReturns the underlying :class:`~ezdxf.entities.Dictionary` object.destroyed extension dictionaryzdictionary handle #z not resolved)r   
isinstancestrr   s     r    
dictionaryExtensionDict.dictionary1   sF      B"BB eS))U-@}+UU)r#   c                B    U R                   R                  R                  $ )zQReturns the handle of the underlying :class:`~ezdxf.entities.Dictionary`
object.
)r(   dxfhandler   s    r    r,   ExtensionDict.handle9   s    
 "")))r#   c                     U R                   U   $ )zGet self[key].r(   r   keys     r    __getitem__ExtensionDict.__getitem__@   s    s##r#   c                     X R                   U'   g)zSet self[key] to value.

Only DXF objects stored in the OBJECTS section are allowed as content
of the extension dictionary. DXF entities stored in layouts are not
allowed.

Raises:
    DXFTypeError: invalid DXF type

Nr0   )r   r2   values      r    __setitem__ExtensionDict.__setitem__D   s      %r#   c                    U R                   U	 g)z-Delete self[key], destroys referenced entity.Nr0   r1   s     r    __delitem__ExtensionDict.__delitem__Q   s    OOC r#   c                    XR                   ;   $ )zReturn `key` in self.r0   r1   s     r    __contains__ExtensionDict.__contains__U   s    oo%%r#   c                ,    [        U R                  5      $ )z.Returns count of extension dictionary entries.)lenr(   r-   s    r    __len__ExtensionDict.__len__Y   s    4??##r#   c                6    U R                   R                  5       $ )z=Returns a :class:`KeysView` of all extension dictionary keys.)r(   keysr-   s    r    rD   ExtensionDict.keys]   s    ##%%r#   c                6    U R                   R                  5       $ )zReturns an :class:`ItemsView` for all extension dictionary entries as
(key, entity) pairs. An entity can be a handle string if the entity
does not exist.
)r(   itemsr-   s    r    rG   ExtensionDict.itemsa   s    
 $$&&r#   Nc                8    U R                   R                  X5      $ )z(Return extension dictionary entry `key`.)r(   get)r   r2   defaults      r    rJ   ExtensionDict.geth   s    ""300r#   c                8    U R                   R                  U5      $ )z)Discard extension dictionary entry `key`.)r(   discardr1   s     r    rN   ExtensionDict.discardl   s    &&s++r#   c                F    UR                   R                  USS9nU " U5      $ )NTowner
hard_owned)objectsadd_dictionary)clsowner_handledocr   s       r    newExtensionDict.newp   s-    ** + 

 5zr#   c                N    UR                  U R                  5      n[        U5      $ )zHDeep copy of the extension dictionary all entries are virtual
entities.
)copyr(   r   )r   copy_strategy	new_xdicts      r    r\   ExtensionDict.copyy   s#     "&&t7	Y''r#   c                    U R                   SL$ )z^Returns ``True`` if the underlying :class:`~ezdxf.entities.Dictionary`
object is not deleted.
Nr   r-   s    r    is_aliveExtensionDict.is_alive   s     {{$&&r#   c                d    U R                   nUb  [        U[        5      (       a  gUR                  $ )zbReturns ``True`` if the underlying :class:`~ezdxf.entities.Dictionary`
really exist and is valid.
F)r   r&   r'   ra   r   s     r    has_valid_dictionary"ExtensionDict.has_valid_dictionary   s+    
 =Juc22~~r#   c                h    U R                   (       d   S5       eXR                  R                  l        g)zZUpdate owner tag of underlying :class:`~ezdxf.entities.Dictionary`
object.

Internal API.
r%   N)ra   r(   r+   rR   )r   r,   s     r    update_ownerExtensionDict.update_owner   s&     }}>>>}$*!r#   c                    Uc   e[        U5      S:w  d  US   R                  [        :w  a  [        S5      eU " US   R                  5      $ )N   r   zACAD_XDICTIONARY error.)r@   coder
   r   r6   )rV   tagss     r    	from_tagsExtensionDict.from_tags   sJ     t9>T!W\\->>#$=>>47==!!r#   c                    U R                   n[        U[        5      (       d   eUR                  R	                  U5      U l         g r   )r   r&   r'   entitydbrJ   )r   rX   r,   s      r    load_resourcesExtensionDict.load_resources   s4    &#&&&&ll&&v.r#   c                    U R                   c   eU R                   n[        U[        5      (       a  UOUR                  R                  nUR                  [        [        5        UR                  [        U5        UR                  [        S5        g )N})	r   r&   r'   r+   r,   
write_tag2r   r	   r
   )r   	tagwriterr   r,   s       r    
export_dxfExtensionDict.export_dxf   sj    {{&&&$UC00eii6F6F_.>?.7_c2r#   c                h    U R                   (       a  U R                  R                  5         SU l        g)zBDestroy the underlying :class:`~ezdxf.entities.Dictionary` object.N)rd   r   destroyr-   s    r    rz   ExtensionDict.destroy   s"    $$KK!r#   c                    U R                   nUR                  nUc   S5       eUR                  R                  UR                  R
                  US9nXSU'   U$ )z^Create a new :class:`~ezdxf.entities.Dictionary` object as
extension dictionary entry `name`.
valid DXF document requiredrQ   )r(   rX   rT   rU   r+   r,   )r   namerS   r(   rX   new_dicts         r    rU   ExtensionDict.add_dictionary   s^     __
nn= ==;;--..''! . 
 $4r#   c                    U R                   nUR                  nUc   S5       eUR                  R                  UR                  R
                  5      nXBU'   U$ )z[Create a new :class:`~ezdxf.entities.XRecord` object as
extension dictionary entry `name`.
r}   )r(   rX   rT   add_xrecordr+   r,   )r   r~   r(   rX   xrecords        r    r   ExtensionDict.add_xrecord   sQ     __
nn= ==++))*..*?*?@"4r#   c                    U R                   nUR                  nUc   S5       eUR                  R                  UR                  R
                  U5      nXSU'   U$ )zaCreate a new :class:`~ezdxf.entities.DictionaryVar` object as
extension dictionary entry `name`.
r}   )r(   rX   rT   add_dictionary_varr+   r,   )r   r~   r6   r(   rX   dict_vars         r    r    ExtensionDict.add_dictionary_var   sS     __
nn= ==;;11*..2G2GO#4r#   c                    U R                   nUR                  nUc   S5       eUR                  R                  UR                  R
                  5      nXBU'   U$ )z_Create a new :class:`~ezdxf.entities.Placeholder` object as
extension dictionary entry `name`.
r}   )r(   rX   rT   add_placeholderr+   r,   )r   r~   r(   rX   placeholders        r    r   ExtensionDict.add_placeholder   sR     __
nn= ==kk11*..2G2GH&4r#   c                :    U R                   R                  X5        g)a  Link `obj` to the extension dictionary as entry `name`.

Linked objects are owned by the extensions dictionary and therefore
cannot be a graphical entity, which have to be owned by a
:class:`~ezdxf.layouts.BaseLayout`.

Raises:
    DXFTypeError: `obj` has invalid DXF type

N)r(   link_dxf_object)r   r~   objs      r    r   ExtensionDict.link_dxf_object   s     	''2r#   )r   zUnion[str, Dictionary])returnr   )r   r'   )r2   r'   r   )r2   r'   r   zOptional[DXFEntity])r2   r'   r   None)rW   r'   rX   r   )r   r   )r,   r'   r   r   )rl   r   )rX   r   r   r   )rv   r   r   r   )T)r~   r'   rS   boolr   r   )r~   r'   r   r   )r~   r'   r6   r'   r   r   )r~   r'   r   r   )r~   r'   r   r   r   r   )$__name__
__module____qualname____firstlineno____doc__	__slots__r!   propertyr(   r,   r3   r7   r:   r=   rA   rD   rG   rJ   rN   classmethodrY   r   r\   ra   rd   rg   rm   rq   rw   rz   rU   r   r   r   r   __static_attributes__ r#   r    r   r   !   s     I
   * *$%!&$&'1,   ". ( ' '  + " "/
3			3r#   N)
__future__r   typingr   r   r   ezdxf.lldxf.tagsr   ezdxf.lldxf.constr   r	   r
   r   r\   r   ezdxf.documentr   ezdxf.lldxf.tagwriterr   ezdxf.entitiesr   r   r   r   r   r   __all__r   r   r#   r    <module>r      sN    # 1 1 ! / 
 &7  
P3 P3r#   