
    'jk                        d dl mZ d dlmZmZmZ d dlmZmZ d dl	m
Z
  G d d          Z G d de          Z	 dddZdd dZdZd	d	d	efd!dZdS )"    )annotations)BinaryIOOptionalSequence)is_dxf_fileDXFStructureError)Pathc                      e Zd Zd	dZd
dZdS )	TagWriterfpr   c                    || _         d S N)r   )selfr   s     K/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/tools/strip.py__init__zTagWriter.__init__
   s        raw_code_strbytesraw_value_strc                n    | j                             |           | j                             |           d S r   )r   write)r   r   r   s      r   r   zTagWriter.write   s0    l###m$$$$$r   Nr   r   r   r   r   r   )__name__
__module____qualname__r   r    r   r   r   r   	   s<           % % % % % %r   r   c                  ,     e Zd Zd fdZd	 fdZ xZS )
ThumbnailRemoverr   r   c                    t                                          |           d| _        d| _        d | _        d | _        d| _        d S )NF)superr   _start_section
_skip_tags_section_code_section_valueremoved_thumbnail_image)r   r   	__class__s     r   r   zThumbnailRemover.__init__   sH    #.2/3',$$$r   r   r   r   c                   |                                 }|                                 }| j        rNd| _        |dk    r|dk    rd| _        d| _        n,t	                                          | j        | j                   |dk    r<|dk    rd| _        d| _        || _        || _        d S |dk    r| j        }d| _        |rd S | j        s$t	                                          ||           d S d S )NF   2s   THUMBNAILIMAGET   0s   SECTIONs   ENDSEC)stripr"   r#   r&   r!   r   r$   r%   )r   r   r   codevalueskipr'   s         r   r   zThumbnailRemover.write   s   !!####%% 	G"'Dt||): : :"&/3,, d0$2EFFF4<<
""&*#"'%1"&3#)##"' F 	7GGMM,66666	7 	7r   r   r   )r   r   r   r   r   __classcell__)r'   s   @r   r   r      s[        - - - - - -7 7 7 7 7 7 7 7 7 7r   r   Finfiler   	tagwritercodesSequence[int]returnintc           	        t          |          }d}d}	 	 |                                 }n# t          $ r d}Y nw xY w|dk    r|S 	 t          |          }nT# t          $ rG |                                                    dd          }	t          d| j         d	|	 d
|           w xY w	 |                                 }
n# t          $ r d}
Y nw xY w|
dk    rt          d| j         d          |dz  }||vr|	                    ||
           nH|rA|
                                }|                    dd          }t          d| d| d           |dz  }E)N   r   Tr   utf8ignore)encodingerrorsCANCELED: "z" - found invalid group code "z
" at line z" - premature end of file   zremoving tag: (z, "z"))setreadlineEOFErrorr5   
ValueErrorr+   decoder   namer   print)r0   r1   r2   verbosesearch_codesline_numberremoved_tagsr   r,   code_strr   r-   _values                r   
strip_tagsrK   9   s    u::LKL!	!??,,LL 	 	 	LLL	3	|$$DD 	 	 	#))++22F82TTH#Afk A A'A A3>A A  		 "OO--MM 	  	  	 MMM	  C#DfkDDD   	q|##OOL-8888 =%++--vhGG;;;;;;<<<ALC!s+   + ::A AB'+C   CCTsourcer	   targetboolc                   |                     d          }|                    d           t          |          }|                                rp|r t	          d|j         d|j         d           	 |                    |           n7# t          $ r*}t	          dt          |                      Y d }~dS d }~ww xY w|r t	          d| j         d|j         d           	 |                     |           n7# t          $ r*}t	          dt          |                      Y d }~dS d }~ww xY w|s0|rt	          d	|j         d           |                    d           dS )
Nz.bakT
missing_okz
renaming "z" to ""	IOError: Fzdeleting backup file ")	with_suffixunlinkr	   existsrD   rC   renameIOErrorstr)rL   rM   backuprE   backup_file_targetes          r   safe_renamer^   f   s   $$V,,K$'''6llG~~  	HFw|FF;3CFFFGGG	NN;'''' 	 	 	&c!ff&&'''55555	  ><6;<<fk<<<===f   "#a&&""###uuuuu  , 	@>;+;>>>???d+++4s0   2B 
B<B77B<"C8 8
D,D''D,)i  filenamerY   c           	     @   fd}rt          d|  d           	 t          |           st          d|  d           d S n7# t          $ r*}t          dt          |                      Y d }~d S d }~ww xY wt	          |           }|                    d          d}rt          d	j         d           t          d
          5 }	t          |d          5 }
|rt          |	          }nt          |	          }	 t          |
||          }nh# t          $ r+}t          dt          |                      d}Y d }~n8d }~wt          $ r(}t          t          |                     d}Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |sid}|r!|j        rt          d|j         d           d}|dk    r*|dk    rdnd}t          d|j         d| d| d           d}|rt          ||            |             d S )Nc                                                       r2rt          d j         d                                d           d S d S )Nzdeleting temp file: "rR   TrP   )rV   rD   rC   rU   )tmp_filerE   s   r   remove_tmp_filezstrip.<locals>.remove_tmp_file   s^    ?? 	- @>hm>>>???OOtO,,,,,	- 	-r   z
Processing file: "rR   r<   z7" is not a DXF file, binary DXF files are not supportedrS   z
.ezdxf.tmpFzmake a temporary copy: "wbrb)r2   rE   Tz"" - removed THUMBNAILIMAGE sectionr   r7   tagtagsz" -  z removed)rD   r   rX   rY   r	   rT   rC   openr   r   rK   r   r&   r^   )r_   rZ   	thumbnailrE   r2   rc   r]   source_fileerrorr   r0   r1   rH   rW   rg   rb   s      `           @r   r+   r+      sk   - - - - - -  20X000111	8$$ 	%h % % %   F	    "#a&&""### x..K&&|44HE ;9999:::	h		 T+t%<%<  	&(,,II!"I	%fiugVVVLL 	 	 	&c!ff&&'''EEEEEE  	 	 	#a&&MMMEEEEEE	                               @ 	: 	Jk&JJJKKKF!(A--556DIk&IILII4IIIJJJF 	@+vw???Os   "A 
A8A33A8F"F?DF
E8!E>FE8E3.F3E88F;FF	FF	FF"%F"N)F)r0   r   r1   r   r2   r3   r4   r5   )TF)rL   r	   rM   r	   r4   rN   )r_   rY   r2   r3   )
__future__r   typingr   r   r   ezdxf.lldxf.validatorr   r   pathlibr	   r   r   rK   r^   DEFAULT_CODESr+   r   r   r   <module>rr      s$   # " " " " " / / / / / / / / / / @ @ @ @ @ @ @ @      % % % % % % % %$7 $7 $7 $7 $7y $7 $7 $7V 	* * * * *Z    8 
 (; ; ; ; ; ; ;r   