
    h4                       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rS SKrS SKJr  S SKJrJrJr  S SKJr  S SKJrJrJr  S S	KJrJrJrJrJr  S S
KJ r   SSK!J"r"J#r#J$r$J%r%  SSK&J'r'  SSK(J)r)  \(       a  S SK*J+r+  S SK,J-r-  S SK.J/r/  / SQr0\Rb                  " S5      r2 " S S\"5      r3\' " S S\35      5       r4\" SS\" SS\Rj                  " S S5      \S905      r6S0S jr7\' " S S\35      5       r8\" S 0 5      r9\' " S! S"\35      5       r:\" S#S$\" S%5      05      r;\" \;5      r<\' " S& S'\35      5       r=\" S(\" S5      \" S)5      \" S*5      \" S+5      S,.5      r> " S- S.\35      r?S1S/ jr@g)2    )annotations)TYPE_CHECKINGIterableUnionAnyOptional)Self	TypeGuardN)	validator)DXF2000DXFStructureErrorSUBCLASS_MARKER)Tags)dxftagDXFTagDXFBinaryTag)DXFAttrDXFAttributesDefSubclassRETURN_DEFAULTgroup_code_mapping)take2   )	DXFEntity
base_classSubclassProcessorDXFTagStorage)register_entity)default_copy)Auditor)DXFNamespace)AbstractTagWriter)	DXFObjectPlaceholderXRecord
VBAProjectSortEntsTableFieldis_dxf_objectezdxfc                      \ rS rSrSr\rSrg)r#   )   z5Non-graphical entities stored in the OBJECTS section. N)__name__
__module____qualname____firstlineno____doc__r   MIN_DXF_VERSION_FOR_EXPORT__static_attributes__r-       G/var/www/html/env/lib/python3.13/site-packages/ezdxf/entities/dxfobj.pyr#   r#   )   s    ?!(r5   r#   c                      \ rS rSrSrSrg)r$   /   ACDBPLACEHOLDERr-   N)r.   r/   r0   r1   DXFTYPEr4   r-   r5   r6   r$   r$   /   s    Gr5   r$   AcDbXrecordcloning     )defaultr   fixerc              #  |   #    U  H2  n[        U[        5      (       a  Uv   M  [        US   US   5      v   M4     g 7f)Nr   r   )
isinstancer   r   )tagstags     r6   totagsrE   G   s6     c6""IQQ((	 s   :<c                     ^  \ rS rSrSrSr\" \\5      r	U 4S jr
\4SS jjr S   SU 4S jjjrSU 4S jjrSS jrSS	 jrSS
 jrSrU =r$ )r%   O   zDXF XRECORD entityXRECORDc                @   > [         TU ]  5         [        5       U l        g N)super__init__r   rC   self	__class__s    r6   rL   XRecord.__init__V   s    F	r5   c                f    [        U[        5      (       d   e[        U R                  5      Ul        g rJ   )rB   r%   r   rC   rN   entitycopy_strategys      r6   	copy_dataXRecord.copy_dataZ   s$    &'****499or5   c                  > [         TU ]  U5      nU(       a   UR                  S   nSn[        U5      S:  ad  U R                  b  U R                  R                  [        :  a9  US   u  pVUS:X  a	  Xbl
        SnO#[        R                  SUR
                   S35        [        X4S  5      U l        U$ ! [         a    [	        SUR
                   S35      ef = f)Nr   z*Missing subclass AcDbXrecord in XRecord (#)r=      z
XRecord (#z6): expected group code 280 as first tag in AcDbXrecord)rK   load_dxf_attribs
subclasses
IndexErrorr   handlelendoc
dxfversionr   r<   loggerinfor   rC   )rN   	processordxfrC   start_indexcodevaluerO   s          r6   rZ   XRecord.load_dxf_attribs^   s     g&y1 ++A.
 K4y1} 88#txx':':g'E"&q'KDs{&+&'( 5: ; T,/0DI
)  '@AN s   B1 1$Cc                  > [         TU ]  U5        UR                  [        [        R
                  5        UR                  SU R                  R                  5        UR                  [        [        U R                  5      5      5        g )Nr=   )rK   export_entity
write_tag2r   acdb_xrecordnamerd   r<   
write_tagsr   rE   rC   rN   	tagwriterrO   s     r6   rj   XRecord.export_entity{   s\    i(_l.?.?@S$(("2"23T&"345r5   c                    U R                   R                  5         U R                   R                  [        U5      5        g)zReset DXF tags.N)rC   clearextendrE   rN   rC   s     r6   resetXRecord.reset   s&    				&r5   c                L    U R                   R                  [        U5      5        g)zExtend DXF tags.N)rC   rt   rE   ru   s     r6   rt   XRecord.extend   s    		&r5   c                8    U R                   R                  5         g)zRemove all DXF tags.N)rC   rs   rN   s    r6   rs   XRecord.clear   s    		r5   )rC   rS   r	   returnNonerJ   rc   zOptional[SubclassProcessor]r~   r!   rp   r"   r~   r   )rC   z(Iterable[Union[DXFTag, tuple[int, Any]]]r~   r   r~   r   )r.   r/   r0   r1   r2   r:   r   r   rl   
DXFATTRIBSrL   r   rU   rZ   rj   rv   rt   rs   r4   __classcell__rO   s   @r6   r%   r%   O   s_    Gz<8J 5A &
 8<4	 :6'
' r5   r%   AcDbVbaProjectc                     ^  \ rS rSrSrSr\" \\5      r	U 4S jr
\4SS jjr S   SU 4S jjjrSS jrSU 4S jjrSS	 jrSS
 jrSrU =r$ )r&      zDXF VBA_PROJECT entityVBA_PROJECTc                0   > [         TU ]  5         SU l        g Nr5   )rK   rL   datarM   s    r6   rL   VBAProject.__init__   s    	r5   c                T    [        U[        5      (       d   eUR                  Ul        g rJ   )rB   r&   r   rR   s      r6   rU   VBAProject.copy_data   s     &*----kkr5   c                p   > [         TU ]  U5      nU(       a  U R                  UR                  S   5        U$ )Nr   )rK   rZ   load_byte_datar[   )rN   rc   rd   rO   s      r6   rZ   VBAProject.load_dxf_attribs   s5     g&y1	 4 4Q 78
r5   c                    [         R                   " S5      nS U 5        H  nUR                  U5        M     UR                  5       U l        g )NBc              3  \   #    U  H"  oR                   S :X  d  M  UR                  v   M$     g7f)6  N)rf   rg   ).0rD   s     r6   	<genexpr>,VBAProject.load_byte_data.<locals>.<genexpr>   s     Gtxx3)#))ts   ,,)arrayrt   tobytesr   )rN   rC   
byte_array	byte_datas       r6   r   VBAProject.load_byte_data   s>    [[%
GtGIi( H&&(	r5   c                   > [         TU ]  U5        UR                  [        [        R
                  5        UR                  S[        U R                  5      5        U R                  U5        g )NZ   )	rK   rj   rk   r   acdb_vba_projectrm   r^   r   export_dataro   s     r6   rj   VBAProject.export_entity   sM    i(_.>.C.CDRTYY0#r5   c                    U R                   nU(       a-  UR                  [        SUS S 5      5        USS  nU(       a  M,  g g )Nr      )r   	write_tagr   )rN   rp   r   s      r6   r   VBAProject.export_data   s;    yyS$t* =>:D dr5   c                    SU l         g r   r   r{   s    r6   rs   VBAProject.clear   s	    	r5   r   r}   rJ   r   rC   r   r~   r   r   rp   r"   r   )r.   r/   r0   r1   r2   r:   r   r   r   r   rL   r   rU   rZ   r   rj   r   rs   r4   r   r   s   @r6   r&   r&      s`     Gz+;<J 5A "
 8<4	 )$ r5   r&   AcDbSortentsTableblock_record_handleJ  c                     ^  \ rS rSrSrSr\" \\5      r	SU 4S jjr
\4SS jjr S   SU 4S jjjrSS jrSU 4S jjrSS	 jrSS
 jrSS jrSS jrS rSS jrSS jrSS jrSrU =r$ )r'      z.DXF SORTENTSTABLE entity - sort entities tableSORTENTSTABLEc                @   > [         TU ]  5         [        5       U l        g rJ   )rK   rL   dicttablerM   s    r6   rL   SortEntsTable.__init__   s    %)V
r5   c                f    [        U[        5      (       d   e[        UR                  5      Ul        g rJ   )rB   r'   r   r   rR   s      r6   rU   SortEntsTable.copy_data   s%    &-0000FLL)r5   c                   > [         TU ]  U5      nU(       a'  UR                  U[        SSS9nU R	                  U5        U$ )Nr   F)log)rK   rZ   fast_load_dxfattribs acdb_sort_ents_table_group_codes
load_table)rN   rc   rd   rC   rO   s       r6   rZ   SortEntsTable.load_dxf_attribs   sI     g&y1115qe 2 D OOD!
r5   c                   [        U5       Hz  u  p#UR                  S:w  a  [        SUR                   S35      eUR                  S:w  a  [        SUR                   S35      eUR                  U R                  UR                  '   M|     g )NK  zInvalid handle code z, expected 331   zInvalid sort handle code z, expected 5)r   rf   r   rg   r   )rN   rC   r]   sort_handles       r6   r   SortEntsTable.load_table  s    #(;F{{c!'*6;;-~F  1$'/}LI  (3'8'8DJJv||$ $/r5   c                   > [         TU ]  U5        UR                  [        [        R
                  5        UR                  SU R                  R                  5        U R                  U5        g )Nr   )	rK   rj   rk   r   acdb_sort_ents_tablerm   rd   r   export_tablero   s     r6   rj   SortEntsTable.export_entity  sO    i(_.B.G.GHS$((">">?)$r5   c                    U R                   R                  5        H)  u  p#UR                  SU5        UR                  SU5        M+     g )Nr   r   )r   itemsrk   )rN   rp   r]   r   s       r6   r   SortEntsTable.export_table  s<    #'::#3#3#5F  f-  K0 $6r5   c                ,    [        U R                  5      $ rJ   )r^   r   r{   s    r6   __len__SortEntsTable.__len__  s    4::r5   c                H    [        U R                  R                  5       5      $ )zHYields all redraw associations as (object_handle, sort_handle)
tuples.

)iterr   r   r{   s    r6   __iter__SortEntsTable.__iter__!  s    
 DJJ$$&''r5   c                     X R                   U'   g)zAppend redraw association (handle, sort_handle).

Args:
    handle: DXF entity handle (uppercase hex value without leading '0x')
    sort_handle: sort handle (uppercase hex value without leading '0x')

Nr   )rN   r]   r   s      r6   appendSortEntsTable.append(  s     )

6r5   c                "    [        5       U l        g)z+Remove all handles from redraw order table.Nr   r   r{   s    r6   rs   SortEntsTable.clear2  s    V
r5   c                $    [        U5      U l        g)zSet all redraw associations from iterable `handles`, after removing
all existing associations.

Args:
    handles: iterable yielding (object_handle, sort_handle) tuples

Nr   )rN   handless     r6   set_handlesSortEntsTable.set_handles6  s     ']
r5   c                    U R                   c  gU R                   R                  nU R                  R                  5        VVs0 s H  u  p#X!;   d  M  X#_M     snnU l        gs  snnf )z>Remove all handles which do not exist in the drawing database.N)r_   entitydbr   r   )rN   r   r]   r   s       r6   remove_invalid_handles$SortEntsTable.remove_invalid_handlesG  s_    8888$$ (,zz'7'7'9
'9#!  F'9

 
s   A!A!c                @     U R                   U	 g! [         a     gf = f)zRemove handle of DXF entity from redraw order table.

Args:
    handle: DXF entity handle (uppercase hex value without leading '0x')

N)r   KeyError)rN   r]   s     r6   remove_handleSortEntsTable.remove_handleR  s%    	

6" 		s    
r   r   r}   rJ   r   r   r   r   )r~   int)r~   r   )r]   strr   r   r~   r   )r   zIterable[tuple[str, str]]r~   r   )r]   r   r~   r   )r.   r/   r0   r1   r2   r:   r   r   r   r   rL   r   rU   rZ   r   rj   r   r   r   r   rs   r   r   r   r4   r   r   s   @r6   r'   r'      s    82 Gz+?@J, 5A *
 8<	4			 	
9%1
()#"	

 
r5   r'   	AcDbFieldrY      r   )evaluator_id
field_codefield_code_overflown_child_fieldsc                  .    \ rS rSrSrSr\" \\5      r	Sr
g)r(   i  zDXF FIELD entityFIELDr-   N)r.   r/   r0   r1   r2   r:   r   r   
acdb_fieldr   r4   r-   r5   r6   r(   r(     s    Gz:6Jr5   r(   c                ~    [        U [        5      (       a  g[        U [        5      (       a  U R                  (       d  gg)zReturns ``True`` if the `entity` is a DXF object from the OBJECTS section,
otherwise the entity is a table or class entry or a graphic entity which can
not reside in the OBJECTS section.
TF)rB   r#   r   is_graphic_entity)rS   s    r6   r)   r)     s/    
 &)$$&-((1I1Ir5   )rC   r   r~   zIterable[DXFTag])rS   r   r~   zTypeGuard[DXFObject])A
__future__r   typingr   r   r   r   r   typing_extensionsr	   r
   loggingr   ezdxf.lldxfr   ezdxf.lldxf.constr   r   r   ezdxf.lldxf.tagsr   ezdxf.lldxf.typesr   r   r   ezdxf.lldxf.attributesr   r   r   r   r   ezdxf.toolsr   	dxfentityr   r   r   r   factoryr   copyr   ezdxf.auditr    ezdxf.entitiesr!   ezdxf.lldxf.tagwriterr"   __all__	getLoggerra   r#   r$   is_in_integer_rangerl   rE   r%   r   r&   r   r   r'   r   r(   r)   r-   r5   r6   <module>r     s   # @ @ -   ! I I ! : :   N N $ #+7 
		7	#)	 )  )      	733Aq9 	
&) <i < <~   * * *Z #
 	ws|	
  $66J#K   EI E EP 
aj&qz!"+
B7I 7	r5   