
    h                       S SK Jr  S SKJrJrJrJrJrJr  S SK	J
r
  S SKrSSKJr  SSKJrJrJr  \(       a  S SKJr  \R(                  " S	5      rSS
 jr\ V s1 s H  o S-   iM	     sn r\ V s1 s H  o S-   iM	     sn r\R3                  S5        \\-  r\rSS jrSSS jjrS\
" \SS90r    SS jrSS jr SS jr!gs  sn f s  sn f )    )annotations)IterableOptionalTYPE_CHECKINGSequenceAnyIterator)partialN   )DXFTag)POINT_CODESNONE_TAGVALID_XDATA_GROUP_CODES)Tagsezdxfc              #  N  #    SnU  H  nUR                   S:X  a[  Ub1  [        US   R                  5      n[        U   " U5       Sh  vN   Sn[        UR                  5      [        ;   a	  U/n[        nOUb  UR                  U5        [        nU[        Ld  M  Uv   M     g N[7f)z{Reorder coordinates of legacy DXF Entities, for now only LINE.

Input Raw tag filter.

Args:
    tagger: low level tagger

Nr   )code_svalueCOORDINATE_FIXING_TOOLBOXr   append)tagger	collectortagentitys       D/var/www/html/env/lib/python3.13/site-packages/ezdxf/lldxf/repair.pytag_reorder_layerr      s      !%I88q=$IaL../4V<YGGG 	#))} 99 E	$  %hI% 
 Hs   AB%B#AB%
B%
      &   c           	   #    ^#    SU4S jjnSnSn/ nSmU  GH
  nUS   nUS:X  a  UmU(       a[  Xb:w  aV  [        U5      S:  a  U Sh  vN   O,[        R                  S[        US   5       3U" 5       -   5        UR	                  5         U[
        ;   a  US-   nUS	-   nUR                  U5        M  Xb:X  a!  UR                  U5        US-  nX#:  a  SnM  M  U[        ;  a  Uv   M  U[        ;   a  S
OSn[        R                  SU S[        U5       3U" 5       -   5        GM     [        U5      S:X  a-  [        R                  S[        US   5       3U" 5       -   5        g[        U5      S:  a  U Sh  vN   gg GN5 N	7f)zFilter invalid and misplaced point group codes.

- removes x-axis without following y-axis
- removes y- and z-axis without leading x-axis

Args:
    tagger: low level tagger

c                 6   > T (       a  S[        T S   5       3$ g)Nzin entity #r    )r   )
handle_tags   r   r   *filter_invalid_point_codes.<locals>.entityL   s      JqM!2 344    r   N   r   zremove misplaced x-axis tag: r   r   zy-axiszz-axiszremove misplaced z tag: returnstr)	lenloggerinfor+   clearX_CODESr   INVALID_CODESINVALID_Y_CODES)	r   r   expected_codez_codepointr   r   axisr$   s	           @r   filter_invalid_point_codesr7   A   su     MFEJ1v19JT*5zA~   3CaM?CfhN KKM7? 2IMBYFLL"LLRM% " & =(	#'?#:x'vVCH:>I; B 5zQ3CaM?CfhNO	Ua 
9 !: 	s%   AFE<D-F5E?6F?Fr      c                `  ^^
 U4S jnSU
4S jjn[        U" 5       5      n0 m
/ nS nU  HK  nUR                  U;   a'  UT
UR                  '   Uc  U R                  U5      nM8  M:  UR                  U5        MM     [	        T
5      S:X  a  U $ / nT H  n	UR                  U" U	5      5        M     XXf& U$ )Nc               3  D   >#    T H  n U v   U S-   v   U S-   v   M     g 7fNr   r    )r   codess    r   extend_codes*fix_coordinate_order.<locals>.extend_codes~   s'     DJ)O)O s    c              3     >#     TU    v    TU S-      v    TU S-      v   g ! [          a     N#f = f! [          a     N(f = f! [          a     g f = f7fr<   )KeyError)r   coordinatess    r   
get_coords(fix_coordinate_order.<locals>.get_coords   sw     	d##	dRi((	dRi((  		  		  		sV   A# 
3 
A A
0A0A
A AA  A
AAAAr   )r   int)	frozensetr   indexr   r,   extend)tagsr>   r?   rD   coordinate_codesremaining_tags
insert_posr   ordered_coordsr   rC   s    `        @r   fix_coordinate_orderrO   }   s      !0KNJ88''$'K!!!ZZ_
 " !!#&  ;1 Nj./ ,::)r&   LINE)r>   c                    S U  5       $ )Nc              3  P   #    U  H  oR                   [        ;   d  M  Uv   M     g 7f)N)r   r   ).0r   s     r   	<genexpr>3filter_invalid_xdata_group_codes.<locals>.<genexpr>   s     G4C88/F#FCC4s   &	&r=   )rJ   s    r    filter_invalid_xdata_group_codesrV      s     H4GGr&   c           
   #    #    SnSnSnU  Hn  nUS-  nUR                   S:X  a+  UR                  n[        UR                  5      S:X  a  SnO*SnO'UR                   U:X  a   [        UR                  S5        Uv   Mp     g ! [         a>    [
        R                  S	[        UR                  5       S
[        U5       SU 35         M  f = f7f)Nr'   r(   r#      r   DIMSTYLEi      zskipped invalid handle "z" in DXF entity "z" near line )r   r   r   rF   
ValueErrorr-   warning)rJ   linehandle_codestructure_tagr   s        r   filter_invalid_handlesra      s     DKM	88q=IIM#))}
*!XX$CIIr" 	#   .r#))}o >##%m#4"5\$I s+   AC	A>5	C	>ACC	CC	c                P    [        U [        5      (       a  U R                  SSS9$ U $ )Nasciiignore)encodingerrors)
isinstancebytesdecode)bs    r   r   r      s'    !Uxxx::Hr&   )r   Iterable[DXFTag]r*   Iterator[DXFTag])r   rk   r*   rk   )r8   )rJ   r   r>   zSequence[int])rJ   rk   r*   rl   r)   )"
__future__r   typingr   r   r   r   r   r	   	functoolsr
   loggingrJ   r   typesr   r   r   ezdxf.eztypesr   	getLoggerr-   r   r2   INVALID_Z_CODESremover1   r0   r7   rO   r   rV   ra   r   )r   s   0r   <module>rv      s    #     A A"			7	#B *55"95)45"95   r /1
9x.d G(9 
H
HH0s 65s   C .C