
    OAin                       S r SSKJr  SSKrSSKrSSKrSSKJrJrJ	r	J
r
JrJr  SSKJrJr  SSKJr  SSKJrJr  SSK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   SSK!J"r"J#r#  SSK$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2  SSK3J4r4J5r5J6r6  SSK7J8r8J9r9J:r:J;r;  SSK<J=r=J>r>J?r?  SSK@JArAJBrBJCrCJDrDJErE  / rF\" S\G\H\5      rIS.S jrJS/S jrKS0S jrL\#" \D5       " S S5      5       rM\#" \-5       " S S5      5       rN\#" \25       " S S5      5       rOS1S jrP\#" \,5       " S S5      5       rQ\#" \15       " S  S!5      5       rR\#" \.5       " S" S#5      5       rS\#" \(5       " S$ S%\5      5       rT\#" \'5       " S& S'5      5       rU\#" \&5       " S( S)5      5       rV\#" \)5       " S* S+5      5       rW\R                  " \)5        \#" \*5       " S, S-5      5       rY\R                  " \*5        g)2a1  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)Callable	ItemsViewIteratorKeysViewMutableMapping
ValuesView)	ExitStacksuppress)Decimal)BytesIO	RawIOBase)Path)run)TemporaryDirectory)BinaryIOLiteral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Numericc                    [         R                  " 5       nUR                  R                  U 5        [	        5       nUR                  U5        UR                  S5        UR                  5       $ )z=Construct a single page PDF from the provided page in memory.r   )r    newpagesappendr   saveseekread)pagepdfbios      L/var/www/html/land-ocr/venv/lib/python3.13/site-packages/pikepdf/_methods.py_single_page_pdfrA   A   sH    
'')CIIT
)CHHSMHHQK88:    c           	         [        SSS[        U5      [        U 5      /SS9  UR                  UR                  R	                  S5      5      nUR                  5       (       d  [        U5      eU$ )Nmutooldrawz-oT)check   )r   str	with_namenameformatexistsFileNotFoundError)in_pathout_patternout_paths      r@   _run_mudrawrQ   K   sd    	64[!13w<@ $$[%5%5%<%<Q%?@H??))OrB   c                   [        5        n[        U5      S-  n[        U5      SU 3-  n[        U5      SU 3-  nUR                  U 5        [        X45      nUR	                  5       sSSS5        $ ! , (       d  f       g= f)z9Use mupdf draw to rasterize the PDF in the memory buffer.z	input.pdfz	output%d.zoutput1.N)r   r   write_bytesrQ   
read_bytes)bufferfmttmp_dirrN   rO   rP   s         r@   _mudrawrX   V   st     
	w-+-7m	#&77=XcU#33F#w4""$ 
		s   AA11
A?c                  j    \ rS rSrS r\R                  44S
S jjrS rSSSS.       SS jjr	S	r
g)Extend_Objecte   c                \    [        U [        [        -  5      (       a  U R                  5       $ g N)
isinstancer1   r4   keysselfs    r@   _ipython_key_completions_'Extend_Object._ipython_key_completions_g   s#    dJ/0099;rB   c                  ^ U R                  U5      (       d  [        S5      eT Vs1 s H  n[        U5      iM     snm[        U R	                  5       5      n[        UR	                  5       5      n[        S TU-  U-   5       5      (       d   eXE-
  T-
  nU4S jU 5        H	  nX   X'   M     U H  nX	 M     g s  snf )Nz.Objects must have the same owner for emplace()c              3  B   #    U  H  n[        U[        5      v   M     g 7fr]   )r^   rH   ).0ks     r@   	<genexpr>(Extend_Object.emplace.<locals>.<genexpr>u   s     Q0O!:a%%0O   c              3  6   >#    U  H  oT;  d  M
  Uv   M     g 7fr]    )rf   rg   retains     r@   rh   ri   x   s     ;ZF?!!Zs   		)same_owner_as	TypeErrorrH   setr_   all)ra   otherrm   rg   	self_keys
other_keysdel_keyss     `    r@   emplaceExtend_Object.emplacel   s    !!%((LMM #))&Q#a&&)		$	&
Q0BZ0OQQQQQ)F2;Z;AhDG <A  *s   B<c                ~   [        U[        5      (       a  [        U5      nUR                  5       n[        U[        5      (       a  [        U5      nOUc  [        / 5      nOUR                  5       n[	        S U 5       5      (       d  [        S5      e[	        S U 5       5      (       d  [        S5      e[        U5      S:w  a<  [        U5      [        U5      :w  a$  [        S[        U5       S[        U5       S35      e[        U5      S	:X  a  US   n[        U5      S:X  a  S nX4$ [        U5      S	:X  a  US   nX4$ )
Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr]   )r^   r2   rf   items     r@   rh   2Extend_Object._type_check_write.<locals>.<genexpr>   s     >gd:dD))grj   z=filter must be: pikepdf.Name or pikepdf.Array([pikepdf.Name])c              3  X   #    U  H   n[        U[        5      =(       d    US L v   M"     g 7fr]   )r^   r1   rz   s     r@   rh   r|      s&      
GStZj)9TT\9|s   (*zOdecode_parms must be: pikepdf.Dictionary or pikepdf.Array([pikepdf.Dictionary])r   zfilter (z) and decode_parms (z) must be arrays of same lengthrG   )	r^   listr0   wrap_in_arrayrq   ro   len
ValueErrorrepr)ra   filter_decode_parmss      r@   _type_check_writeExtend_Object._type_check_write}   sP   gt$$GnG'')lD)) .L! 9L'557L>g>>>O   
GS
 
 
 6  |!c'lc,6G&G4=/ *&''FH  w<1ajG|!L $$ !#'?L$$rB   NT)filterr   
type_checkc               ^    U(       a  Ub  U R                  X#5      u  p#U R                  XUS9  g )N)r   r   )r   _write)ra   datar   r   r   s        r@   writeExtend_Object.write   s/     &,#'#9#9&#O FDlCrB   rl   )rr   r3   )r   bytesr   zName | Array | Noner   zDictionary | Array | Noner   bool)__name__
__module____qualname____firstlineno__rb   r2   Parentrv   r   r   __static_attributes__rl   rB   r@   rZ   rZ   e   s^    
 .2[[N ""%P '+26DD $	D
 0D D DrB   rZ   c                     \ rS rSrS rSS jr\SS j5       r\R                  SS j5       r\R                  S 5       r   S       S S
 jjr
S!S"S jjrS#S$S jjrSS.   S%S jjrS&S jrS rS r\S'S j5       r\S(S j5       r S#   S)S jjr S#S	SSSSSS\R*                  S	S	S	SSS	S	S.                                 S*S jjjr\SS	S	SSS\R2                  S	S.                   S+S jj5       rSrg),
Extend_Pdf   c                ^    [        5       nU R                  U5        UR                  S5        U$ )Nr   )r   r:   r;   )ra   r?   s     r@   _quick_saveExtend_Pdf._quick_save   s$    i		#
rB   Nc                    U R                  5       R                  5       nSU0n[        [        [        5         [        US5      R                  S5      US'   S S S 5        U$ ! , (       d  f       U$ = f)Napplication/pdfsvgutf-8image/svg+xml)r   r<   r   rM   RuntimeErrorrX   decode)ra   includeexcludepdf_datar   s        r@   _repr_mimebundle_Extend_Pdf._repr_mimebundle_   sf    ##%**,x
 '6$+He$<$C$CG$LD! 7 76s   A  
A/c                   [         R                  U R                  ;  d)  [        U R                  R                  [        5      (       d(  U R                  [	        5       5      U R                  l        U R                  R                  R                  (       d4  U R                  U R                  R                  5      U R                  l        U R                  R                  $ r]   )r2   Infotrailerr^   r1   make_indirectis_indirectr`   s    r@   docinfoExtend_Pdf.docinfo   s    99DLL(
LLz1
 1
 !% 2 2:< @DLL||  ,, $ 2 24<<3D3D EDLL||   rB   c                \    UR                   (       d  [        S5      eXR                  l        g )Nz:docinfo must be an indirect object - use Pdf.make_indirect)r   r   r   r   )ra   new_docinfos     r@   r   r      s'    &&L  (rB   c                Z    [         R                  U R                  ;   a  U R                  ?g g r]   )r2   r   r   r`   s    r@   r   r      s!    99$! %rB   TFc                $    [        U UUU(       + S9$ )N)pikepdf_marksync_docinfooverwrite_invalid_xml)r-   )ra   set_pikepdf_as_editorupdate_docinfostricts       r@   open_metadataExtend_Pdf.open_metadata   s     .'&,*	
 	
rB   c                    [        XUS9$ )N)	max_depthr   )r+   )ra   r   r   s      r@   open_outlineExtend_Pdf.open_outline   s    t@@rB   c                    [        XU40 UD6$ r]   )r4   )ra   r   dkwargss       r@   make_streamExtend_Pdf.make_stream   s    d!.v..rB   )g      @g     @)	page_sizec          
     (   U H  nSUs=::  a  S::  a  M  O  [        S5      e   [        [        R                  [	        SSUS   US   /5      U R                  S5      [        5       S9nU R                  U5      nU R                  USS	9  [        U5      $ )
N   i@8  z/Page size must be between 3 and 14400 PDF unitsr   rG   rB   )TypeMediaBoxContents	ResourcesF)first)r   r1   r2   r   r0   r   r   	_add_page)ra   r   dim	page_dictpage_objs        r@   add_blank_pageExtend_Pdf.add_blank_page   s     C%% !RSS  Aq)A,	!=>%%c* l	
	 %%i0xu-H~rB   c                ~    U R                  5         [        U SS 5      (       a  U R                  R                  5         g g )N_tmp_stream)_closegetattrr   closer`   s    r@   r   Extend_Pdf.close   s1    4--""$ .rB   c                    U $ r]   rl   r`   s    r@   	__enter__Extend_Pdf.__enter__   s    rB   c                $    U R                  5         g r]   )r   )ra   exc_type	exc_value	tracebacks       r@   __exit__Extend_Pdf.__exit__  s    

rB   c                l    0 n[         R                   H  n[        U SU-   5      X'   M     [        S0 UD6$ )N_allow_rl   )r,   _fieldsr   )ra   resultsfields      r@   allowExtend_Pdf.allow  s8     ((E$T9u+<=GN )%W%%rB   c                ,    [        U R                  5      $ r]   )r*   _encryption_datar`   s    r@   
encryptionExtend_Pdf.encryption  s    d3344rB   c                     " S S[         5      n/ nU R                  U5        U" 5       nU R                   H  nUR                  U5        M     U R	                  5        H  nUR                  SU-   5        M     U$ )Nc                  4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )5Extend_Pdf.check_pdf_syntax.<locals>.DiscardingParseri  c                "   > [         TU ]  5         g r]   )super__init__)ra   	__class__s    r@   r   >Extend_Pdf.check_pdf_syntax.<locals>.DiscardingParser.__init__  s     "rB   c                    g r]   rl   )ra   _argss     r@   handle_objectCExtend_Pdf.check_pdf_syntax.<locals>.DiscardingParser.handle_object      rB   c                    g r]   rl   r`   s    r@   
handle_eof@Extend_Pdf.check_pdf_syntax.<locals>.DiscardingParser.handle_eof  r   rB   rl   )	r   r   r   r   r   r   r   r   __classcell__)r   s   @r@   DiscardingParserr     s    # rB   r   z	WARNING: )r#   _decode_all_streams_and_discardr8   parse_contentsget_warningsr9   )ra   progressr   problemsdiscarding_parserr=   warnings          r@   check_pdf_syntaxExtend_Pdf.check_pdf_syntax  sv    	| 	 !,,X6,.JJD 12  ((*GOOK'12 + rB    )	static_idpreserve_pdfamin_versionforce_versionfix_metadata_versioncompress_streamsstream_decode_levelobject_stream_modenormalize_content	linearizeqdfr  r   recompress_flatedeterministic_idc               b   U(       d  [        U SS 5      (       a  U R                  nU(       d  [        S5      e[        5        n[	        US5      (       a  Un[        U5        O[        U[        [        -  [        -  5      (       d  [        S5      e[        U5      n[        U SS 5      (       d$  [        U SS 5      b  [        U R                  U5        UR                  [        U5      5      nU R                  UUUUUUUUU	U
UUUU[        U SS 5      S L UUS9  S S S 5        g ! , (       d  f       g = f)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(   r^   rH   r   r   ro   r'   enter_contextr&   _save)ra   filename_or_streamr  r	  r
  r  r  r  r  r  r  r  r  r  r   r  r  stackstreamfilenames                       r@   r:   Extend_Pdf.save+  s+   ( "gd4H$&O&O!%!8!8!3  [E)622+&'9:!"4cEkD6HII#$OPP 23mT::&:DAM)$*A*A8L,,-=h-GHJJ#+'+%9!1$7#5"3#!%&t]DATI!1!1#   [[s   CD  
D.)passwordhex_passwordignore_xref_streamssuppress_warningsattempt_recoveryinherit_page_attributesaccess_modeallow_overwriting_inputc               v   [        U [        5      (       a!  U R                  S5      (       a  [        S5        [        U [        [
        -  5      (       a  [        S5      eS n	Sn
S nU(       ai   [        U 5        [        U 5      n[        US5       n[        5       n	[        R                  " X5        U	R                  S5        S S S 5        [        U5      nON[        U S5      (       a  [        U S	5      (       a  U n	S
U	 3nO$[        U S5      n	[        U 5      n[        U 5      nSn
 [!        U	5        ["        R$                  " U	UUUUUUUUU
S9
nU(       a  U	OS Ul        Xl        U$ ! [         a  n[        S5      UeS nAff = f! , (       d  f       N= f! [&         a    U	b  U
(       a  U	R)                  5         e f = f)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)r^   r   
startswithr   intfloatro   r   r   openr   shutilcopyfileobjr;   rH   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                   r@   r0  Extend_Pdf.openl  s    (%005G5R5R6
 6
 + (#+66 GHH#'$)-"'( !%%7 8'.( ""84A /
 /0K'00W6
 6
 (F#F8,K,d3F $%7 801K!N	"6*))!)$7"3!1(?''-C  %<&!2
W   (  /.>  	!n	s0   ,E# 2F#(F #
E>-E99E>
F&F8rl   NNreturnr1   )r   r1   )TTF)r   r   r   r   r   r   r;  r-   )   F)r   r.  r   r   r;  r+   r]   )r   r   r;  r4   )r   ztuple[Numeric, Numeric]r;  r   r;  None)r;  r,   )r;  r*   )r  Callable[[int], None] | Noner;  z	list[str])"r  zPath | str | BinaryIO | Noner  r   r	  r   r
  str | tuple[str, int]r  r@  r  r   r  r   r  zStreamDecodeLevel | Noner  r   r  r   r  r   r  r   r  r?  r   zEncryption | bool | Noner  r   r  r   r;  r>  )r  zPath | str | BinaryIOr!  zstr | bytesr"  r   r#  r   r$  r   r%  r   r&  r   r'  r   r(  r   r;  r    )r   r   r   r   r   r   propertyr   setterdeleterr   r   r   r   r   r   r   r   r   r  r   preserver:   staticmethodr   defaultr0  r   rl   rB   r@   r   r      s    ! ! ^^( ( __" " '+#	
#
 
 	

 

A/ 7E3	"%
 & & 5 5 8<4	8 <@?  "-//1%)!%8</?/H/H"'15/3!&!&%?8? 	?
 ? +? -? #? ? 6? -?  ? ? ? /?  -!?" #?$ %?& 
'?B  !#"$)"&!%(,","4"4(-L1L L 	L
 "L  L L "&L  L "&L 
L LrB   r   c                  J    \ rS rSrSSS jjr\S	S j5       r\S
S j5       rSrg)Extend_ObjectMappingi  Nc                0     X   $ ! [          a    Us $ f = fr]   KeyErrorra   keyrF  s      r@   getExtend_ObjectMapping.get  #    	9 	N	    c                n    [        U[        5      (       a  [        U5      n[        R                  " X5      $ r]   )r^   r2   rH   r%   _cpp__contains__ra   rM  s     r@   __contains__!Extend_ObjectMapping.__contains__  s)    c4  c(C..t99rB   c                n    [        U[        5      (       a  [        U5      n[        R                  " X5      $ r]   )r^   r2   rH   r%   _cpp__getitem__rT  s     r@   __getitem__ Extend_ObjectMapping.__getitem__  s)    c4  c(C--d88rB   rl   r]   )r;  r3   )rM  
Name | strr;  r   )rM  r[  r;  r3   )	r   r   r   r   rN  r   rU  rY  r   rl   rB   r@   rH  rH    s/     : :
 9 9rB   rH  c                   [        [        5         U R                  (       a
   S S S 5        g  S S S 5         [        U 5      nUR                  (       a  g  [        S5      e! , (       d  f       N8= f! [         a  n[        S5      UeS nAff = f)Nzobject is not a rectangle)r   AttributeErroris_rectangler0   r4  r   )objpdfobjes      r@   check_is_boxrb    s{    	.	! 
"	! 
"=s  0
11 
"	!  =451<=s"   AA0 
A-0
B:BBc                     \ rS rSr\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r	\	R                  S	 5       r	\S
 5       r
\
R                  S 5       r
\S(S j5       r\S(S j5       r\S)S j5       r S*SSS.           S+S jjjr            S,S jr S*SSSS.           S-S jjjr S*SSS.         S.S jjjrSS.S/S jjrS r\S 5       r\S 5       rS rS  rS! rS" rS*S# jr\R:                  44S0S$ jjrS% rS1S& jr S'r!g)2Extend_Pagei  c                $    U R                  S5      $ )NT)_get_mediaboxr`   s    r@   mediaboxExtend_Page.mediabox  s    !!$''rB   c                6    [        U5        XR                  S'   g )Nz	/MediaBoxrb  r_  ra   values     r@   rg  rh        U %rB   c                &    U R                  SS5      $ NTF)_get_artboxr`   s    r@   artboxExtend_Page.artbox  s    e,,rB   c                6    [        U5        XR                  S'   g )Nz/ArtBoxrj  rk  s     r@   rq  rr    s    U#rB   c                &    U R                  SS5      $ ro  )_get_bleedboxr`   s    r@   bleedboxExtend_Page.bleedbox  s    !!$..rB   c                6    [        U5        XR                  S'   g )Nz	/BleedBoxrj  rk  s     r@   rv  rw    rm  rB   c                &    U R                  SS5      $ ro  )_get_cropboxr`   s    r@   cropboxExtend_Page.cropbox        u--rB   c                6    [        U5        XR                  S'   g )Nz/CropBoxrj  rk  s     r@   r{  r|        U$rB   c                &    U R                  SS5      $ ro  )_get_trimboxr`   s    r@   trimboxExtend_Page.trimbox  r}  rB   c                6    [        U5        XR                  S'   g )Nz/TrimBoxrj  rk  s     r@   r  r    r  rB   c                    U R                   $ r]   )_imagesr`   s    r@   imagesExtend_Page.images  s    ||rB   c                    U R                   $ r]   )_form_xobjectsr`   s    r@   form_xobjectsExtend_Page.form_xobjects  s    """rB   c                0   [         R                  U R                  ;  a/  [        5       U R                  l        U R                  R                  $ [	        U R                  R                  [        5      (       d  [        S5      eU R                  R                  $ )Nz.Page /Resources exists but is not a dictionary)r2   r   r_  r1   r^   ro   r`   s    r@   	resourcesExtend_Page.resources  sg    >>)!+DHH xx!!! DHH..
;;LMMxx!!!rB   Nr  T)prefixreplace_existingc                  U R                   nX&;  a  [        5       Xb'   Ub  U(       a  [        S5      eUc  [        R                  " US9nUR                  5       R                  5        H9  n[        U[        5      (       d  M  X7;   d  M!  U(       a  Xs	 M,  [        SU S35      e   UR                  U R                  5      Xb   U'   U$ )Nz$Must specify one of name= or prefix=)r  zName z" already exists in page /Resources)
r  r1   r   r2   randomas_dictvaluesr^   with_same_owner_asr_  )ra   resres_typerJ   r  r  r  res_dicts           r@   add_resourceExtend_Page.add_resource  s     NN	$",,ICDD<;;f-D!))+224Hh
33# $uTF2T%UVV 5 %($:$:488$D	D!rB   c                B   S n[        U[        5      (       a  UR                  5       nO[        U[        5      (       aK  UR	                  [
        R                  5      [
        R                  :X  a  [        U5      R                  5       nOy[        U[        5      (       ad  UR	                  [
        R                  5      [
        R                  :X  a3  UR	                  [
        R                  5      [
        R                  :X  a  UnUc  [        S5      eUc  [        U R                  5      nU R                  U[
        R                  5      nU R                  XxX%US9n	U(       a   U R!                  SSS9  U R!                  SSS9  U R!                  XS9  U R#                  5         U$ )Nz<other object is not something we can convert to Form XObject)allow_shrinkallow_expands   q
Tprepends   Q
F)r^   r   as_form_xobjectr1   rN  r2   r   r4   XObjectSubtypeFormro   r!   r  r  calc_form_xobject_placementcontents_addcontents_coalesce)
ra   rr   rectunder
push_stackshrinkexpandformxformx_placed_namecss
             r@   _over_underlayExtend_Page._over_underlay;  sJ    eT""))+Ez**uyy/Ctyy/PK//1Euf%%		$))$4		$,,'4994E=N  <T\\*D --eT\\B--df . 
 fd3fe4",   rB   )r  r  r  c          	     *    U R                  UUSUUUS9$ )NFr  r  r  r  r  )ra   rr   r  r  r  r  s         r@   add_overlayExtend_Page.add_overlaye  s.     ""! # 
 	
rB   )r  r  c          	     &    U R                  XSSXCS9$ )NTFr  r  )ra   rr   r  r  r  s        r@   add_underlayExtend_Page.add_underlayw  s%     ""tf # 
 	
rB   Fr  c                    U R                  XS9$ )Nr  )_contents_add)ra   contentsr  s      r@   r  Extend_Page.contents_add  s    !!(!<<rB   c                .    [        U R                  U5      $ r]   )r   r_  ra   rJ   s     r@   __getattr__Extend_Page.__getattr__  s    txx&&rB   c                    [        U R                  U5      (       a  [        R                  XU5        g [	        U R
                  X5        g r]   )r  r   object__setattr__setattrr_  )ra   rJ   rl  s      r@   r  Extend_Page.__setattr__  s1    4>>4((t51DHHd*rB   c                    [        U R                  U5      (       a  [        R                  X5        g [	        U R
                  U5        g r]   )r  r   r  __delattr__delattrr_  r  s     r@   r  Extend_Page.__delattr__  s/    4>>4((t*DHHd#rB   c                     U R                   U   $ r]   r_  rT  s     r@   rY  Extend_Page.__getitem__  s    xx}rB   c                     X R                   U'   g r]   r  )ra   rM  rl  s      r@   __setitem__Extend_Page.__setitem__  s    rB   c                    U R                   U	 g r]   r  rT  s     r@   __delitem__Extend_Page.__delitem__  s    HHSMrB   c                    XR                   ;   $ r]   r  rT  s     r@   rU  Extend_Page.__contains__  s    hhrB   c                0     X   $ ! [          a    Us $ f = fr]   rJ  rL  s      r@   rN  Extend_Page.get  rP  rQ  c                J    U R                   R                  UR                   US9$ )N)rm   )r_  rv   )ra   rr   rm   s      r@   rv   Extend_Page.emplace  s     xx		&99rB   c                p    [        U R                  5      R                  SSS5      R                  SSS5      $ )Nr1   r   rG   z(Type="/Page")r  )r   r_  replacer`   s    r@   __repr__Extend_Page.__repr__  s/    NW\61-W%r1-	
rB   c                z   0 nSS1nU(       a  U Vs1 s H  oUU;   d  M
  UiM     nnU(       a  U Vs1 s H  oUU;  d  M
  UiM     nn[        U 5      nSU;   a  XcS'   SU;   a=  [        [        [        5         [	        US5      R                  S5      US'   S S S 5        U$ U$ s  snf s  snf ! , (       d  f       U$ = f)Nr   r   r   r   )rA   r   rM   r   rX   r   )ra   r   r   r   bundlerg   pagedatas          r@   r   Extend_Page._repr_mimebundle_  s    #_5!'8A<aF8!'<AG+;aF<#D)&&."#f$+\:(/%(@(G(G(P_% ;t 9<
 ;:s    	B!B!	B&B&6B++
B:rl   )r;  r%   r:  r]   )r  r3   r  r2   rJ   Name | Noner  rH   r  r   r;  r2   )r  Rectangle | Noner  r   r  r   r  r   r  r   r;  r2   )rr   Object | Pager  r  r  r   r  r   r  r   r;  r2   )
rr   r  r  r  r  r   r  r   r;  r2   )r  zStream | bytesr  r   )rr   r   r9  )"r   r   r   r   rA  rg  rB  rq  rv  r{  r  r  r  r  r  r  r  r  r  r  r   r  r  rY  r  r  rU  rN  r2   r   rv   r  r   r   rl   rB   r@   rd  rd    s   ( ( __& & - - ]]$ $ / / __& & . . ^^% % . . ^^% %   # # " " !	 !%  	   
<(! (! 	(!
 (! (! (! 
(!Z "&

  

 

 
 
 
 

* "&


 



 


 

 

 


 IN =' + + $ $ ,0;;. :
rB   rd  c                      \ rS rSrS rSrg)Extend_Tokeni  c                <    SU R                    SU R                   S3$ )Nzpikepdf.Token(, ))type_	raw_valuer`   s    r@   r  Extend_Token.__repr__  s     

|2dnn-=Q??rB   rl   N)r   r   r   r   r  r   rl   rB   r@   r  r    s    @rB   r  c                  *    \ rS rSrS rS rSS jrSrg)Extend_Rectanglei  c           	     p    SU R                    SU R                   SU R                   SU R                   S3	$ )Nzpikepdf.Rectangle(r  r  )llxllyurxuryr`   s    r@   r  Extend_Rectangle.__repr__  s4    #DHH:RzDHH:RzQRSSrB   c                p    [        U R                  U R                  U R                  U R                  45      $ r]   )hashr  r  r  r  r`   s    r@   __hash__Extend_Rectangle.__hash__  s&    TXXtxx488<==rB   c                F    [        SSU R                  U R                  5      $ )a  Returns the origin-centred bounding box that encloses this rectangle.

Create a new rectangle with the same width and height as this one, but located
at the origin (0, 0).

Bounding boxes represent independent coordinate systems, such as for Form
XObjects.
r   )r!   widthheightr`   s    r@   to_bboxExtend_Rectangle.to_bbox  s     Atzz4;;77rB   rl   N)r;  r!   )r   r   r   r   r  r  r  r   rl   rB   r@   r  r    s    T>	8rB   r  c                  H    \ rS rSrS
S jrSS jrSS jrS rSS jrS r	Sr
g	)Extend_Attachmentsi  c                D    U R                  U5      nUc  [        U5      eU$ r]   )_get_filespecrK  )ra   rg   filespecs      r@   rY  Extend_Attachments.__getitem__  s'    %%a(1+rB   c                    [        U[        5      (       a  U R                  X5      $ UR                  (       d  Xl        U R	                  X5      $ r]   )r^   r   _attach_datar  _add_replace_filespec)ra   rg   vs      r@   r  Extend_Attachments.__setitem__  s=    a$$Q**zzJ))!//rB   c                $    U R                  U5      $ r]   )_remove_filespec)ra   rg   s     r@   r  Extend_Attachments.__delitem__  s    $$Q''rB   c                4    [        U R                  5       5      $ r]   )r   _get_all_filespecsr`   s    r@   __len__Extend_Attachments.__len__  s    4**,--rB   c              #  @   #    U R                  5        S h  vN   g  N7fr]   )r  r`   s    r@   __iter__Extend_Attachments.__iter__  s     **,,,s   c                     S[        U 5       S3$ )Nz<pikepdf._core.Attachments: >)r~   r`   s    r@   r  Extend_Attachments.__repr__  s    -d4j\;;rB   rl   N)rg   rH   r;  r   )rg   rH   r  zAttachedFileSpec | bytesr;  r>  )rg   rH   r;  r>  )r;  zIterator[str])r   r   r   r   rY  r  r  r  r  r  r   rl   rB   r@   r  r    s     0(.-<rB   r  c                      \ rS rSr\S\R                  S.       S
S jj5       r\SS j5       r	\	R                  SS j5       r	S rSrg	)Extend_AttachedFileSpeci  r  )r+  relationshipc                  [         R                  " [        U5      5      u  pEUc  Sn[        U[        5      (       d  [	        U5      nUR                  5       n[        U UR                  5       U[        UR                  5      U[        [        R                  R                  UR                  5      5      [        [        R                  R                  UR                  5      5      US9$ )Nr  )r+  r  	mime_typecreation_datemod_dater  )	mimetypes
guess_typerH   r^   r   statr   rT   rJ   r/   datetimefromtimestampst_ctimest_mtime)r>   pathr+  r  mime_r  s          r@   from_filepath%Extend_AttachedFileSpec.from_filepath  s     &&s4y1<D$%%:Dyy{OO#^)!!//> %X%6%6%D%DT]]%ST%
 	
rB   c                T    U R                   R                  [        R                  5      $ r]   )r_  rN  r2   AFRelationshipr`   s    r@   r  $Extend_AttachedFileSpec.relationship  s    xx||D//00rB   c                z    Uc  U R                   [        R                  	 g XR                   [        R                  '   g r]   )r_  r2   r*  rk  s     r@   r  r+    s+    =,,-,1HHT(()rB   c                    U R                   (       a  SU R                   < SU R                  < S3$ SU R                  < S3$ )Nz$<pikepdf._core.AttachedFileSpec for z, description r  z,<pikepdf._core.AttachedFileSpec description )r  r+  r`   s    r@   r   Extend_AttachedFileSpec.__repr__"  sL    ==6t}}6G H#//2!5 >d>N>N=QQRSSrB   rl   N)r>   r    r$  z
Path | strr+  rH   r  r  )r;  r  )rl  r  )r   r   r   r   rE  r2   Unspecifiedr'  rA  r  rB  r  r   rl   rB   r@   r  r    sz    
 $($4$4


 	

 "
 
6 1 1 2 2TrB   r  c                      \ rS rSr\S
S j5       r\R                  SS j5       r\S
S j5       r\R                  SS j5       rSS jrS r	Sr
g	)Extend_AttachedFilei+  c                P    U R                   (       d  g [        U R                   5      $ r]   )_creation_dater.   r`   s    r@   r  !Extend_AttachedFile.creation_date-  s    ""t2233rB   c                $    [        U5      U l        g r]   )r/   r3  rk  s     r@   r  r4  3  s    -e4rB   c                P    U R                   (       d  g [        U R                   5      $ r]   )	_mod_dater.   r`   s    r@   r  Extend_AttachedFile.mod_date7  s    ~~t~~..rB   c                $    [        U5      U l        g r]   )r/   r7  rk  s     r@   r  r8  =  s    (/rB   c                6    U R                   R                  5       $ r]   )r_  rT   r`   s    r@   rT   Extend_AttachedFile.read_bytesA  s    xx""$$rB   c                    SU R                   R                   SU R                   SU R                   SU R                   SU R
                   S3$ )Nz"<pikepdf._core.AttachedFile objid=z size=z mime_type=z creation_date=z
 mod_date=r  )r_  objgensizer  r  r  r`   s    r@   r  Extend_AttachedFile.__repr__D  sT    00A		{ S(8J8J7K La)	
rB   )r3  r7  N)r;  zdatetime.datetime | None)rl  zdatetime.datetime)r;  r   )r   r   r   r   rA  r  rB  r  rT   r  r   rl   rB   r@   r1  r1  +  sd    4 4
 5 5 / /
 __0 0%
rB   r1  c                      \ rS rSrS rS rS r\R                  r\R                  r	\R                  r
\R                  r\R                  r\R                  rSrg)Extend_NameTreeiL  c                4    [        U R                  5       5      $ r]   r   _as_mapr`   s    r@   r_   Extend_NameTree.keysN      ''rB   c                4    [        U R                  5       5      $ r]   r	   rD  r`   s    r@   r  Extend_NameTree.valuesQ      $,,.))rB   c                4    [        U R                  5       5      $ r]   r   rD  r`   s    r@   itemsExtend_NameTree.itemsT      ((rB   rl   Nr   r   r   r   r_   r  rM  r   rN  poppopitemclearupdate
setdefaultr   rl   rB   r@   rA  rA  L  U    (*) 

C


C$$G  E""F**JrB   rA  c                      \ rS rSrS rS rS r\R                  r\R                  r	\R                  r
\R                  r\R                  r\R                  rSrg)Extend_NumberTreeib  c                4    [        U R                  5       5      $ r]   rC  r`   s    r@   r_   Extend_NumberTree.keysd  rF  rB   c                4    [        U R                  5       5      $ r]   rH  r`   s    r@   r  Extend_NumberTree.valuesg  rJ  rB   c                4    [        U R                  5       5      $ r]   rL  r`   s    r@   rM  Extend_NumberTree.itemsj  rO  rB   rl   NrP  rl   rB   r@   rX  rX  b  rV  rB   rX  )r=   r   r;  r   )rN   r   rO   r   r;  r   )rU   zbytes | memoryviewrV   zLiteral['svg']r;  r   r=  )Z__doc__
__future__r   r   r  r1  collections.abcr   r   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.objectsr0   r1   r2   r3   r4   __all__r.  r/  r5   rA   rQ   rX   rZ   r   rH  rb  rd  r  r  r  r  r1  rA  registerrX  rl   rB   r@   <module>rr     s   #     +  !   ' - -  <     X W K K Q Q C C
 
)S%
1% 
&FD FD FDR 
#I I IX 
.9 9 9(
2 
$a a aH 
%@ @ @
 
)8 8 8& 
+< < <6 

.T .T .Tb 
,
 
 
@ 
(+ + +$    ! 
*+ + +$   
 #rB   