
    Ngh                    t   d Z ddlmZ ddlZddlZddl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 dd	lmZ dd
lmZ ddlmZ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&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZD g ZE edeFeGe          ZHd2dZId3dZJ e"eC           G d d                      ZK e"e,           G d d                      ZL e"e1           G d d                      ZMd4d!ZN e"e+           G d" d#                      ZO e"e0           G d$ d%                      ZP e"e-           G d& d'                      ZQ e"e'           G d( d)e
                      ZR e"e&           G d* d+                      ZS e"e%           G d, d-                      ZT e"e(           G d. d/                      ZU e
jV        e(            e"e)           G d0 d1                      ZW e
jV        e)           dS )5a1  Implement some features in Python and monkey-patch them onto C++ classes.

In several cases the implementation of some higher levels features might as
well be in Python. Fortunately we can attach Python methods to C++ class
bindings after the fact.

We can also move the implementation to C++ if desired.
    )annotationsN)	ItemsViewIteratorKeysViewMutableMapping
ValuesView)	ExitStacksuppress)Decimal)BytesIO	RawIOBase)Path)run)NamedTemporaryFile)BinaryIOCallableTypeVar)warn)augment_override_cppaugments)
AccessModeAttachedFileAttachedFileSpecAttachmentsNameTree
NumberTreeObjectStreamModePagePdf	RectangleStreamDecodeLevelStreamParserToken_ObjectMapping)atomic_overwritecheck_different_filescheck_stream_is_usable)
EncryptionEncryptionInfoOutlinePermissions)PdfMetadatadecode_pdf_dateencode_pdf_date)Array
DictionaryNameObjectStreamNumericpager   returnbytesc                    t          j                    }|j                            |            t	                      }|                    |           |                    d           |                                S )z=Construct a single page PDF from the provided page in memory.r   )r   newpagesappendr   saveseekread)r5   pdfbios      L/var/www/html/ai-engine/env/lib/python3.11/site-packages/pikepdf/_methods.py_single_page_pdfrB   :   sX    
'))CIT
))CHHSMMMHHQKKK88::    c           
        t          d          5 }|                    |            |                    d           |                                 t	          ddd|dd|j        gd	d	
          }|j        cddd           S # 1 swxY w Y   dS )z9Use mupdf draw to rasterize the PDF in the memory buffer.z.pdf)suffixr   mutooldrawz-Fz-o-T)capture_outputcheckN)r   writer=   flushr   namestdout)bufferfmttmp_inprocs       rA   _mudrawrS   D   s     
6	*	*	* 
fVAvtS$V[A
 
 

 {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   A#BBBc                  D    e Zd Zd Zej        ffddZd ZddddddZdS )Extend_Objectc                f    t          | t          t          f          r|                                 S d S N)
isinstancer0   r3   keysselfs    rA   _ipython_key_completions_z'Extend_Object._ipython_key_completions_V   s,    dZ011 	99;;trC   otherr2   c                   |                      |          st          d          d D             t          |                                           }t          |                                          }t	          d |z  |z  D                       sJ ||z
  z
  }fd|D             D ]}||         | |<   |D ]}| |= d S )Nz.Objects must have the same owner for emplace()c                ,    h | ]}t          |          S  )str.0ks     rA   	<setcomp>z(Extend_Object.emplace.<locals>.<setcomp>`   s    )))Q#a&&)))rC   c              3  @   K   | ]}t          |t                    V  d S rW   )rX   ra   rb   s     rA   	<genexpr>z(Extend_Object.emplace.<locals>.<genexpr>d   s,      QQ!:a%%QQQQQQrC   c              3  $   K   | ]
}|v|V  d S rW   r`   )rc   rd   retains     rA   rg   z(Extend_Object.emplace.<locals>.<genexpr>g   s'      ;;1F??!????;;rC   )same_owner_as	TypeErrorsetrY   all)r[   r]   ri   	self_keys
other_keysdel_keysrd   s     `    rA   emplacezExtend_Object.emplace[   s    !!%(( 	NLMMM *)&)))		$$	&&
QQ0BZ0OQQQQQQQQz)F2;;;;Z;;; 	 	AAhDGG 	 	AQ	 	rC   c                   t          |t                    rt          |          }|                                }t          |t                    rt          |          }n&|t          g           }n|                                }t	          d |D                       st          d          t	          d |D                       st          d          t          |          dk    rPt          |          t          |          k    r0t          dt          |           dt          |           d          t          |          d	k    r|d         }t          |          dk    rd }nt          |          d	k    r|d         }||fS )
Nc              3  @   K   | ]}t          |t                    V  d S rW   )rX   r1   rc   items     rA   rg   z2Extend_Object._type_check_write.<locals>.<genexpr>x   s,      >>d:dD))>>>>>>rC   z=filter must be: pikepdf.Name or pikepdf.Array([pikepdf.Name])c              3  H   K   | ]}t          |t                    p|d u V  d S rW   )rX   r0   rt   s     rA   rg   z2Extend_Object._type_check_write.<locals>.<genexpr>|   sF       
 
?CZj))9TT\
 
 
 
 
 
rC   zOdecode_parms must be: pikepdf.Dictionary or pikepdf.Array([pikepdf.Dictionary])r   zfilter (z) and decode_parms (z) must be arrays of same length   )	rX   listr/   wrap_in_arrayrm   rk   len
ValueErrorrepr)r[   filter_decode_parmss      rA   _type_check_writezExtend_Object._type_check_writel   s   gt$$ 	%GnnG''))lD)) 	8 ..LL! 99LL'5577L>>g>>>>> 	O    
 
GS
 
 
 
 
 	 6   |!!c'llc,6G6G&G&GH4== H H&&H H H   w<<1ajG|!!LL!##'?L$$rC   NT)filterr~   
type_checkdatar7   r   Name | Array | Noner~   Dictionary | Array | Noner   boolc               p    |r||                      ||          \  }}|                     |||           d S )N)r   r~   )r   _write)r[   r   r   r~   r   s        rA   rK   zExtend_Object.write   sJ      	P&,#'#9#9&,#O#O FLDlCCCCCrC   )r]   r2   )r   r7   r   r   r~   r   r   r   )	__name__
__module____qualname__r\   r1   Parentrq   r   rK   r`   rC   rA   rU   rU   T   s          
 .2[N     ""% "% "%P '+26D D D D D D D DrC   rU   c                  b   e Zd Zd ZdRdZedSd            Zej        dTd            Zej        d	             Z	 	 	 dUdVdZ	dWdXdZ
dYdZdZddd[d Zd\d"Zd# Zd$ Zed]d&            Zed^d(            Zd_d*Z	 dYdd
d+d+d
d
dej        dddddddd,d`dCZed+ddd
d
d
ej        ddDdadQ            ZdS )b
Extend_Pdfc                v    t                      }|                     |           |                    d           |S )Nr   )r   r<   r=   )r[   r@   s     rA   _quick_savezExtend_Pdf._quick_save   s.    ii		#
rC   Nc                
   |                                                                  }d|i}t          t          t                    5  t          |d                              d          |d<   d d d            n# 1 swxY w Y   |S )Napplication/pdfsvgutf-8image/svg+xml)r   r>   r
   FileNotFoundErrorRuntimeErrorrS   decode)r[   includeexcludepdf_datar   s        rA   _repr_mimebundle_zExtend_Pdf._repr_mimebundle_   s    ##%%**,,x
 '66 	M 	M$+He$<$<$C$CG$L$LD!	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms   'A88A<?A<r6   r0   c                    t           j        | j        vr+|                     t	                                | j        _        | j        j        S rW   )r1   Infotrailermake_indirectr0   rZ   s    rA   docinfozExtend_Pdf.docinfo   s8    9DL(( $ 2 2:<< @ @DL|  rC   new_docinfoc                J    |j         st          d          || j        _        d S )Nz:docinfo must be an indirect object - use Pdf.make_indirect)is_indirectr{   r   r   )r[   r   s     rA   r   zExtend_Pdf.docinfo   s4    & 	L   (rC   c                >    t           j        | j        v r	| j        `d S d S rW   )r1   r   r   rZ   s    rA   r   zExtend_Pdf.docinfo   s'    9$$!!! %$rC   TFset_pikepdf_as_editorr   update_docinfostrictr,   c                *    t          | |||           S )N)pikepdf_marksync_docinfooverwrite_invalid_xml)r,   )r[   r   r   r   s       rA   open_metadatazExtend_Pdf.open_metadata   s)     .'&,*	
 
 
 	
rC      	max_depthintr*   c                &    t          | ||          S )N)r   r   )r*   )r[   r   r   s      rA   open_outlinezExtend_Pdf.open_outline   s    ty@@@@rC   r   r7   r3   c                     t          | ||fi |S rW   )r3   )r[   r   dkwargss       rA   make_streamzExtend_Pdf.make_stream   s    dD!..v...rC   )g      @g     @)	page_sizer   tuple[Numeric, Numeric]r   c          
     p   |D ] }d|cxk    rdk    sn t          d          !t          t          j        t	          dd|d         |d         g          |                     d          t                                }|                     |          }|                     |d	           t          |          S )
N   i@8  z/Page size must be between 3 and 14400 PDF unitsr   rw   rC   )TypeMediaBoxContents	ResourcesF)first)r{   r0   r1   r   r/   r   r   	_add_page)r[   r   dim	page_dictpage_objs        rA   add_blank_pagezExtend_Pdf.add_blank_page   s      	T 	TC%%%%%%%% !RSSS & Aq)A,	!=>>%%c** ll	
 
 
	 %%i00xu---H~~rC   Nonec                    |                                   t          | dd           r| j                                         d S d S )N_tmp_stream)_closegetattrr   closerZ   s    rA   r   zExtend_Pdf.close   sH    4-- 	%""$$$$$	% 	%rC   c                    | S rW   r`   rZ   s    rA   	__enter__zExtend_Pdf.__enter__   s    rC   c                .    |                                   d S rW   )r   )r[   exc_type	exc_value	tracebacks       rA   __exit__zExtend_Pdf.__exit__   s    

rC   r+   c                h    i }t           j        D ]}t          | d|z             ||<   t          di |S )N_allow_r`   )r+   _fieldsr   )r[   resultsfields      rA   allowzExtend_Pdf.allow   sG     ( 	> 	>E$T9u+<==GENN%%W%%%rC   r)   c                *    t          | j                  S rW   )r)   _encryption_datarZ   s    rA   
encryptionzExtend_Pdf.encryption   s    d3444rC   	list[str]c                    G d dt                     }g }|                                   |            }| j        D ]}|                    |           |                                 D ]}|                    d|z              |S )Nc                  *     e Zd Z fdZd Zd Z xZS )*Extend_Pdf.check.<locals>.DiscardingParserc                H    t                                                       d S rW   )super__init__)r[   	__class__s    rA   r   z3Extend_Pdf.check.<locals>.DiscardingParser.__init__   s      """""rC   c                    d S rW   r`   )r[   _argss     rA   handle_objectz8Extend_Pdf.check.<locals>.DiscardingParser.handle_object      rC   c                    d S rW   r`   rZ   s    rA   
handle_eofz5Extend_Pdf.check.<locals>.DiscardingParser.handle_eof  r   rC   )r   r   r   r   r   r   __classcell__)r   s   @rA   DiscardingParserr      sV        # # # # #        rC   r   z	WARNING: )r"   _decode_all_streams_and_discardr:   parse_contentsget_warningsr;   )r[   r   problemsdiscarding_parserr5   warnings         rA   rJ   zExtend_Pdf.check   s    	 	 	 	 	| 	 	 	 !,,...,,..J 	3 	3D 12222((** 	3 	3GOOK'12222rC    )	static_idpreserve_pdfamin_versionforce_versionfix_metadata_versioncompress_streamsstream_decode_levelobject_stream_modenormalize_content	linearizeqdfprogressr   recompress_flatedeterministic_idfilename_or_streamPath | str | BinaryIO | Noner   r   r   str | tuple[str, int]r   r   r   r   StreamDecodeLevel | Noner   r   r   r   r   r   Callable[[int], None]r   Encryption | bool | Noner   r   c                  |st          | dd           r| j        }|st          d          t                      5 }t	          |d          r|}t          |           nt          |t          t          t          f          st          d          t          |          }t          | dd           s&t          | dd           t          | j        |           |                    t          |                    }|                     |||||||||	|
||||t          | dd           d u ||           d d d            d S # 1 swxY w Y   d S )N_original_filenamea]  Cannot save to original filename because the original file was not opening using Pdf.open(..., allow_overwriting_input=True). Either specify a new destination filename/file stream or open with allow_overwriting_input=True. If this Pdf was created using Pdf.new(), you must specify a destination object since there is no original filename to save to.r=   )expected str, bytes or os.PathLike objectr   )r   r   r   r   r   r   r   r   r   r   r   r   r   samefile_checkr   r   )r   r  r{   r	   hasattrr'   rX   ra   r7   r   rk   r&   enter_contextr%   _save)r[   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   stackstreamfilenames                       rA   r<   zExtend_Pdf.save  s   ( " 	9gd4H$&O&O 	9!%!8! 	3   [[  	E)622 I+&'9::::!"4sE46HII Q#$OPPP 233mT::M&:DAAM)$*A8LLL,,-=h-G-GHHJJ#+'+%9!1$7#5"3#!%&t]DAATI!1!1#     	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	s   C3D::D>D>)passwordhex_passwordignore_xref_streamssuppress_warningsattempt_recoveryinherit_page_attributesaccess_modeallow_overwriting_inputPath | str | BinaryIOr  str | bytesr  r  r  r  r  r  r   r  r   c                  t          | t                    r$|                     d          rt          d           t          | t          t
          f          rt          d          d }	d}
d }|r	 t          |            n"# t          $ r}t          d          |d }~ww xY wt          |           }t          |d          5 }t                      }	t          j        ||	           |	                    d           d d d            n# 1 swxY w Y   t          |          }nXt          | d          rt          | d	          r| }	d
|	 }n0t          | d          }	t          |           }t          |           }d}
	 t!          |	           t#          j        |	|||||||||

  
        }n'# t&          $ r |	|
r|	                                  w xY w|r|	nd |_        ||_        |S )Ns   %PDF-zIt looks like you called with Pdf.open(data) with a bytes-like object containing a PDF. This will probably fail because this function expects a filename or opened file-like object. Instead, please use Pdf.open(BytesIO(data)).r  FzO"allow_overwriting_input=True" requires "open" first argument to be a file pathrbr   r>   r=   zstream T)	r  r  r  r  r  r  r  descriptionclosing_stream)rX   r7   
startswithr   r   floatrk   r   r{   openr   shutilcopyfileobjr=   ra   r	  r'   r   _open	Exceptionr   r   r  )r   r  r  r  r  r  r  r  r  r  r  original_filenameerrorpdf_filer  r?   s                   rA   r  zExtend_Pdf.openU  s    (%00 	5G5R5R6
 6
 	 +   (3,77 	I GHHH#'$)-" 	"'((((    (  
 !%%7 8 8'.. ( "8V444A              
 /00KK'00 		"W6
 6
 		" (F,F,,KK,d33F $%7 8 8011K!N	"6***)!)$7"3!1(?''-  CC  	 	 	!n!	 %<E&&!2
s6   .A> >
BBB?9DDD8-F& &$G
NNr6   r0   )r   r0   )TTF)r   r   r   r   r   r   r6   r,   )r   F)r   r   r   r   r6   r*   rW   )r   r7   r6   r3   )r   r   r6   r   r6   r   )r6   r+   )r6   r)   )r6   r   )"r   r   r   r   r   r   r   r  r   r  r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r  r   r  r   r   r   r   r6   r   )r   r  r  r  r  r   r  r   r  r   r  r   r  r   r  r   r  r   r6   r   )r   r   r   r   r   propertyr   setterdeleterr   r   r   r   r   r   r   r   r   rJ   r   preserver<   staticmethodr   defaultr  r`   rC   rA   r   r      sF             ! ! ! X!
 ^( ( ( ^( _" " _" '+#	
 
 
 
 
A A A A A/ / / / / 7E     "% % % %
     & & & X& 5 5 5 X5   4 <@?  "-//1%)!%8</?/H"'*./3!&!&%? ? ? ? ? ?B  !#"$)"&!%(,","4(-L L L L L \L L LrC   r   c                  H    e Zd Zd
ddZedd            Zedd	            ZdS )Extend_ObjectMappingNr6   r2   c                8    	 | |         S # t           $ r |cY S w xY wrW   KeyErrorr[   keyr/  s      rA   getzExtend_ObjectMapping.get  5    	9 	 	 	NNN	   
 r6  
Name | strr   c                t    t          |t                    rt          |          }t          j        | |          S rW   )rX   r1   ra   r$   _cpp__contains__r[   r6  s     rA   __contains__z!Extend_ObjectMapping.__contains__  s2    c4   	c((C.tS999rC   c                t    t          |t                    rt          |          }t          j        | |          S rW   )rX   r1   ra   r$   _cpp__getitem__r=  s     rA   __getitem__z Extend_ObjectMapping.__getitem__  s2    c4   	c((C-dC888rC   rW   )r6   r2   )r6  r:  r6   r   )r6  r:  r6   r2   )r   r   r   r7  r   r>  rA  r`   rC   rA   r1  r1    so             : : : :
 9 9 9 9 9 9rC   r1  r   c                   t          t                    5  | j        r	 d d d            d S 	 d d d            n# 1 swxY w Y   	 t          |           }|j        rd S n"# t          $ r}t          d          |d }~ww xY wt          d          )Nzobject is not a rectangle)r
   AttributeErroris_rectangler/   r#  r{   )objpdfobjes      rA   check_is_boxrH    s   	.	!	!   	       	              =s 	F	 = = =4551<=
0
1
11s$   	8<<A 
A<'A77A<c                  0   e Zd Zed             Zej        d             Zed             Zej        d             Zed             Zej        d             Zed             Zej        d             Zed	             Z	e	j        d
             Z	ed?d            Z
ed?d            Zed@d            Z	 dAddddBdZdCd&Z	 dAdddd'dDd*Z	 dAddd+dEd,Zd-d.dFd2Zd3 Zed4             Zed5             Zd6 Zd7 Zd8 Zd9 ZdAd:Zej        ffdGd<Zd= ZdHd>ZdS )IExtend_Pagec                ,    |                      d          S )NT)_get_mediaboxrZ   s    rA   mediaboxzExtend_Page.mediabox  s    !!$'''rC   c                8    t          |           || j        d<   d S )Nz	/MediaBoxrH  rE  r[   values     rA   rM  zExtend_Page.mediabox  "    U %rC   c                .    |                      dd          S NTF)_get_artboxrZ   s    rA   artboxzExtend_Page.artbox  s    e,,,rC   c                8    t          |           || j        d<   d S )Nz/ArtBoxrO  rP  s     rA   rV  zExtend_Page.artbox  s"    U#rC   c                .    |                      dd          S rT  )_get_bleedboxrZ   s    rA   bleedboxzExtend_Page.bleedbox  s    !!$...rC   c                8    t          |           || j        d<   d S )Nz	/BleedBoxrO  rP  s     rA   rZ  zExtend_Page.bleedbox  rR  rC   c                .    |                      dd          S rT  )_get_cropboxrZ   s    rA   cropboxzExtend_Page.cropbox        u---rC   c                8    t          |           || j        d<   d S )Nz/CropBoxrO  rP  s     rA   r^  zExtend_Page.cropbox  "    U$rC   c                .    |                      dd          S rT  )_get_trimboxrZ   s    rA   trimboxzExtend_Page.trimbox  r_  rC   c                8    t          |           || j        d<   d S )Nz/TrimBoxrO  rP  s     rA   rd  zExtend_Page.trimbox  ra  rC   r6   r$   c                    | j         S rW   )_imagesrZ   s    rA   imageszExtend_Page.images  s
    |rC   c                    | j         S rW   )_form_xobjectsrZ   s    rA   form_xobjectszExtend_Page.form_xobjects  s    ""rC   r0   c                    t           j        | j        vrt                      | j        _        n.t	          | j        j        t                    st          d          | j        j        S )Nz.Page /Resources exists but is not a dictionary)r1   r   rE  r0   rX   rk   rZ   s    rA   	resourceszExtend_Page.resources  sT    >))!+DHDH.
;; 	NLMMMx!!rC   Nr   T)prefixreplace_existingresr2   res_typer1   rM   Name | Nonern  ra   ro  r   c                  | j         }||vrt                      ||<   ||rt          d          |t          j        |          }|                                                                D ]5}t          |t                    s||v r|r||= "t          d| d          6|                    | j	                  ||         |<   |S )Nz$Must specify one of name= or prefix=)rn  zName z" already exists in page /Resources)
rm  r0   r{   r1   randomas_dictvaluesrX   with_same_owner_asrE  )r[   rp  rq  rM   rn  ro  rm  res_dicts           rA   add_resourcezExtend_Page.add_resource  s     N	9$$",,,IhCDDD<;f---D!))++2244 	W 	WHh
33 x# W $%UT%U%U%UVVV	   %($:$:48$D$D	(D!rC   rectRectangle | Noneunder
push_stackshrinkexpandc                   d }t          |t                    r|                                }nt          |t                    rO|                    t
          j                  t
          j        k    r"t          |                                          }nqt          |t                    r\|                    t
          j                  t
          j        k    r/|                    t
          j	                  t
          j
        k    r|}|t          d          |t          | j                  }|                     |t
          j                  }|                     |||||          }	|r.|                     dd           |                     dd           |                     |	|           |                                  |S )Nz<other object is not something we can convert to Form XObject)allow_shrinkallow_expands   q
Tprepends   Q
F)rX   r   as_form_xobjectr0   r7  r1   r   r3   XObjectSubtypeFormrk   r    rd  ry  calc_form_xobject_placementcontents_addcontents_coalesce)
r[   r]   rz  r|  r}  r~  r  formxformx_placed_namecss
             rA   _over_underlayzExtend_Page._over_underlay$  s    eT"" 		))++EEz** 	uyy/C/Cty/P/PKK//11EEuf%%			$)$$44		$,''4944E=N   <T\**D --eT\BB--$df . 
 
  	5fd333fe444"e,,,     rC   )r}  r~  r  r]   Object | Pagec               8    |                      ||d|||          S )NFr|  r}  r  r~  r  )r[   r]   rz  r}  r~  r  s         rA   add_overlayzExtend_Page.add_overlayN  s3     ""! # 
 
 	
rC   )r~  r  c               8    |                      ||dd||          S )NTFr  r  )r[   r]   rz  r~  r  s        rA   add_underlayzExtend_Page.add_underlay`  s.     ""4tfV # 
 
 	
rC   Fr  contentsStream | bytesr  c               0    |                      ||          S )Nr  )_contents_add)r[   r  r  s      rA   r  zExtend_Page.contents_addl  s    !!(G!<<<rC   c                ,    t          | j        |          S rW   )r   rE  r[   rM   s     rA   __getattr__zExtend_Page.__getattr__o  s    tx&&&rC   c                    t          | j        |          rt                              | ||           d S t	          | j        ||           d S rW   )r	  r   object__setattr__setattrrE  )r[   rM   rQ  s      rA   r  zExtend_Page.__setattr__r  sN    4>4(( 	+tT511111DHdE*****rC   c                    t          | j        |          rt                              | |           d S t	          | j        |           d S rW   )r	  r   r  __delattr__delattrrE  r  s     rA   r  zExtend_Page.__delattr__y  sJ    4>4(( 	$tT*****DHd#####rC   c                    | j         |         S rW   rE  r=  s     rA   rA  zExtend_Page.__getitem__  s    x}rC   c                    || j         |<   d S rW   r  )r[   r6  rQ  s      rA   __setitem__zExtend_Page.__setitem__  s    rC   c                    | j         |= d S rW   r  r=  s     rA   __delitem__zExtend_Page.__delitem__  s    HSMMMrC   c                    || j         v S rW   r  r=  s     rA   r>  zExtend_Page.__contains__  s    dhrC   c                8    	 | |         S # t           $ r |cY S w xY wrW   r3  r5  s      rA   r7  zExtend_Page.get  r8  r9  r   c                D    | j                             |j         |          S )N)ri   )rE  rq   )r[   r]   ri   s      rA   rq   zExtend_Page.emplace  s    x	&999rC   c                ~    t          | j                                      ddd                              ddd          S )Nr0   r   rw   z(Type="/Page")r   )r|   rE  replacerZ   s    rA   __repr__zExtend_Page.__repr__  s5    NNW\61--W%r1--	
rC   c                >   i }ddh}rfd|D             }rfd|D             }t          |           }d|v r||d<   d|v rXt          t          t                    5  t	          |d                              d          |d<   d d d            n# 1 swxY w Y   |S )Nr   r   c                    h | ]}|v |	S r`   r`   )rc   rd   r   s     rA   re   z0Extend_Page._repr_mimebundle_.<locals>.<setcomp>  s    888A1<<a<<<rC   c                    h | ]}|v|	S r`   r`   )rc   rd   r   s     rA   re   z0Extend_Page._repr_mimebundle_.<locals>.<setcomp>  s#    <<<A1G+;+;a+;+;+;rC   r   r   )rB   r
   r   r   rS   r   )r[   r   r   r   bundlepagedatas    ``   rA   r   zExtend_Page._repr_mimebundle_  s!   #_5 	98888888F 	=<<<<<<<F#D))&&&.D"#f$$+\:: Q Q(/%(@(@(G(G(P(P_%Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs   'BBB)r6   r$   r(  rW   )rp  r2   rq  r1   rM   rr  rn  ra   ro  r   r6   r1   )rz  r{  r|  r   r}  r   r~  r   r  r   r6   r1   )r]   r  rz  r{  r}  r   r~  r   r  r   r6   r1   )
r]   r  rz  r{  r~  r   r  r   r6   r1   )r  r  r  r   )r]   r   r'  ) r   r   r   r*  rM  r+  rV  rZ  r^  rd  rh  rk  rm  ry  r  r  r  r  r  r   r  r  rA  r  r  r>  r7  r1   r   rq   r  r   r`   rC   rA   rJ  rJ    s3       ( ( X( _& & _& - - X- ]$ $ ]$ / / X/ _& & _& . . X. ^% % ^% . . X. ^% % ^%    X # # # X# " " " X" !	 !%     <(! (! (! (!Z "&

  
 
 
 
 
 
* "&


 

 

 

 

 

 

 IN = = = = = =' ' ' + + + $ $ $            ,0;. : : : : :
 
 
     rC   rJ  c                      e Zd Zd ZdS )Extend_Tokenc                (    d| j          d| j         dS )Nzpikepdf.Token(, ))type_	raw_valuerZ   s    rA   r  zExtend_Token.__repr__  s    ?
??dn????rC   N)r   r   r   r  r`   rC   rA   r  r    s(        @ @ @ @ @rC   r  c                      e Zd Zd Zd ZdS )Extend_Rectanglec           	     H    d| j          d| j         d| j         d| j         d	S )Nzpikepdf.Rectangle(r  r  )llxllyurxuryrZ   s    rA   r  zExtend_Rectangle.__repr__  s3    SDHSSSSDHSSSSSSrC   c                P    t          | j        | j        | j        | j        f          S rW   )hashr  r  r  r  rZ   s    rA   __hash__zExtend_Rectangle.__hash__  s!    TXtx48<===rC   N)r   r   r   r  r  r`   rC   rA   r  r    s5        T T T> > > > >rC   r  c                  :    e Zd ZddZdd	Zdd
Zd ZddZd ZdS )Extend_Attachmentsrd   ra   r6   r   c                R    |                      |          }|t          |          |S rW   )_get_filespecr4  )r[   rd   filespecs      rA   rA  zExtend_Attachments.__getitem__  s,    %%a((1++rC   vAttachedFileSpec | bytesr   c                    t          |t                    r|                     ||          S |j        s||_        |                     ||          S rW   )rX   r7   _attach_datar  _add_replace_filespec)r[   rd   r  s      rA   r  zExtend_Attachments.__setitem__  sQ    a 	+$$Q***z 	AJ))!Q///rC   c                ,    |                      |          S rW   )_remove_filespec)r[   rd   s     rA   r  zExtend_Attachments.__delitem__  s    $$Q'''rC   c                D    t          |                                           S rW   )rz   _get_all_filespecsrZ   s    rA   __len__zExtend_Attachments.__len__  s    4**,,---rC   Iterator[str]c              #  >   K   |                                  E d {V  d S rW   )r  rZ   s    rA   __iter__zExtend_Attachments.__iter__  s0      **,,,,,,,,,,,rC   c                (    dt          |            dS )Nz<pikepdf._core.Attachments: >)rx   rZ   s    rA   r  zExtend_Attachments.__repr__  s    ;d4jj;;;;rC   N)rd   ra   r6   r   )rd   ra   r  r  r6   r   )rd   ra   r6   r   )r6   r  )	r   r   r   rA  r  r  r  r  r  r`   rC   rA   r  r    s           0 0 0 0( ( ( (. . .- - - -< < < < <rC   r  c                  x    e Zd Zedej        ddd            Zedd            Zej	        dd            Zd Z
dS )Extend_AttachedFileSpecr   )r  relationshipr?   r   path
Path | strr  ra   r  rr  c                  t          j        t          |                    \  }}|d}t          |t                    st	          |          }|                                }t          | |                                |t          |j                  |t          t          j
                            |j                            t          t          j
                            |j                            |          S )Nr   )r  r  	mime_typecreation_datemod_dater  )	mimetypes
guess_typera   rX   r   statr   
read_bytesrM   r.   datetimefromtimestampst_ctimest_mtime)r?   r  r  r  mime_r  s          rA   from_filepathz%Extend_AttachedFileSpec.from_filepath  s     &s4yy11a<D$%% 	::Dyy{{OO#^^)!//>>  %X%6%D%DT]%S%STT%
 
 
 	
rC   r6   c                J    | j                             t          j                  S rW   )rE  r7  r1   AFRelationshiprZ   s    rA   r  z$Extend_AttachedFileSpec.relationship  s    x||D/000rC   rQ  c                Z    || j         t          j        = d S || j         t          j        <   d S rW   )rE  r1   r  rP  s     rA   r  z$Extend_AttachedFileSpec.relationship  s/    =,---,1DHT()))rC   c                L    | j         rd| j         d| j        dS d| j        dS )Nz$<pikepdf._core.AttachedFileSpec for z, description r  z,<pikepdf._core.AttachedFileSpec description )r  r  rZ   s    rA   r  z Extend_AttachedFileSpec.__repr__   sP    = 	5t} 5 5#/5 5 5 Td>NSSSSrC   N)r?   r   r  r  r  ra   r  rr  )r6   rr  )rQ  rr  )r   r   r   r.  r1   Unspecifiedr  r*  r  r+  r  r`   rC   rA   r  r    s        
 $($4
 
 
 
 
 \
6 1 1 1 X1 2 2 2 2T T T T TrC   r  c                      e Zd Zedd            Zej        dd            Zedd            Zej        dd            Zdd
Zd ZdS )Extend_AttachedFiler6   datetime.datetime | Nonec                <    | j         sd S t          | j                   S rW   )_creation_dater-   rZ   s    rA   r  z!Extend_AttachedFile.creation_date  s#    " 	4t2333rC   rQ  datetime.datetimec                .    t          |          | _        d S rW   )r.   r  rP  s     rA   r  z!Extend_AttachedFile.creation_date  s    -e44rC   c                <    | j         sd S t          | j                   S rW   )	_mod_dater-   rZ   s    rA   r  zExtend_AttachedFile.mod_date  s!    ~ 	4t~...rC   c                .    t          |          | _        d S rW   )r.   r  rP  s     rA   r  zExtend_AttachedFile.mod_date  s    (//rC   r7   c                4    | j                                         S rW   )rE  r  rZ   s    rA   r  zExtend_AttachedFile.read_bytes  s    x""$$$rC   c                b    d| j         j         d| j         d| j         d| j         d| j         dS )Nz"<pikepdf._core.AttachedFile objid=z size=z mime_type=z creation_date=z
 mod_date=r  )rE  objgensizer  r  r  rZ   s    rA   r  zExtend_AttachedFile.__repr__"  s]    ) ) )	 ) )) )8<8J) )) ) )	
rC   N)r6   r  )rQ  r  r6   r7   )	r   r   r   r*  r  r+  r  r  r  r`   rC   rA   r  r  	  s        4 4 4 X4
 5 5 5 5 / / / X/
 _0 0 0 _0% % % %
 
 
 
 
rC   r  c                  t    e Zd Zd Zd Zd Zej        Zej        Zej	        Z	ej
        Z
ej        Zej        ZdS )Extend_NameTreec                D    t          |                                           S rW   r   _as_maprZ   s    rA   rY   zExtend_NameTree.keys,      '''rC   c                D    t          |                                           S rW   r   r  rZ   s    rA   rv  zExtend_NameTree.values/      $,,..)))rC   c                D    t          |                                           S rW   r   r  rZ   s    rA   itemszExtend_NameTree.items2      (((rC   Nr   r   r   rY   rv  r  r   r7  poppopitemclearupdate
setdefaultr`   rC   rA   r  r  *  m        ( ( (* * *) ) ) 
C

C$G E"F*JJJrC   r  c                  t    e Zd Zd Zd Zd Zej        Zej        Zej	        Z	ej
        Z
ej        Zej        ZdS )Extend_NumberTreec                D    t          |                                           S rW   r  rZ   s    rA   rY   zExtend_NumberTree.keysB  r  rC   c                D    t          |                                           S rW   r
  rZ   s    rA   rv  zExtend_NumberTree.valuesE  r  rC   c                D    t          |                                           S rW   r  rZ   s    rA   r  zExtend_NumberTree.itemsH  r  rC   Nr  r`   rC   rA   r  r  @  r  rC   r  )r5   r   r6   r7   r  r)  )X__doc__
__future__r   r  r  r   collections.abcr   r   r   r   r   
contextlibr	   r
   decimalr   ior   r   pathlibr   
subprocessr   tempfiler   typingr   r   r   warningsr   pikepdf._augmentsr   r   pikepdf._corer   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   pikepdf._ior%   r&   r'   pikepdf.modelsr(   r)   r*   r+   pikepdf.models.metadatar,   r-   r.   pikepdf.objectsr/   r0   r1   r2   r3   __all__r   r  r4   rB   rS   rU   r   r1  rH  rJ  r  r  r  r  r  r  registerr  r`   rC   rA   <module>r/     s    # " " " " "       U U U U U U U U U U U U U U * * * * * * * *       ! ! ! ! ! ! ! !             ' ' ' ' ' ' . . . . . . . . . .       < < < < < < < <                                 X W W W W W W W W W K K K K K K K K K K K K Q Q Q Q Q Q Q Q Q Q C C C C C C C C C C C C C C
 
')S%
1
1        
&FD FD FD FD FD FD FD FDR 
#C C C C C C C CL 
.9 9 9 9 9 9 9 9(
2 
2 
2 
2 
$a a a a a a a aH 
%@ @ @ @ @ @ @ @
 
)> > > > > > > > 
+< < < < < < < <6 

.T .T .T .T .T .T .T .Tb 
,
 
 
 
 
 
 
 
@ 
(+ + + + + + + +$   ! ! ! 
*+ + + + + + + +$  
 # # # # #rC   