
    ]Ogi                       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  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.J/r/J0r0J1r1  SSK2J3r3J4r4J5r5  SSK6J7r7J8r8J9r9J:r:  SSK;J<r<J=r=J>r>  SSK?J@r@JArAJBrBJCrCJDrD  / rE\" S\F\G\5      rHS-S jrIS.S jrJ\"" \C5       " S S5      5       rK\"" \,5       " S S5      5       rL\"" \15       " S S5      5       rMS/S jrN\"" \+5       " S S5      5       rO\"" \05       " S S 5      5       rP\"" \-5       " S! S"5      5       rQ\"" \'5       " S# S$\
5      5       rR\"" \&5       " S% S&5      5       rS\"" \%5       " S' S(5      5       rT\"" \(5       " S) S*5      5       rU\
R                  " \(5        \"" \)5       " S+ S,5      5       rW\
R                  " \)5        g)0a1  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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      U/Users/admin/workspace/ai/Jarvis/env/lib/python3.13/site-packages/pikepdf/_methods.py_single_page_pdfr@   :   sH    
'')CIIT
)CHHSMHHQK88:    c           
         [        SS9 nUR                  U 5        UR                  S5        UR                  5         [	        SSSUSSUR
                  /S	S	S
9nUR                  sSSS5        $ ! , (       d  f       g= f)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       r?   _mudrawrQ   D   si     
6	*fVAvtS$V[[A

 {{ 
+	*	*s   AA..
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_ObjectT   c                Z    [        U [        [        45      (       a  U R                  5       $ g N)
isinstancer0   r3   keysselfs    r?   _ipython_key_completions_'Extend_Object._ipython_key_completions_V   s#    dZ01199;rA   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rV   )rW   str).0ks     r?   	<genexpr>(Extend_Object.emplace.<locals>.<genexpr>d   s     Q0O!:a%%0O   c              3  6   >#    U  H  oT;  d  M
  Uv   M     g 7frV    )r`   ra   retains     r?   rb   rc   g   s     ;ZF?!!Zs   		)same_owner_as	TypeErrorr_   setrX   all)rZ   otherrg   ra   	self_keys
other_keysdel_keyss     `    r?   emplaceExtend_Object.emplace[   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rV   )rW   r1   r`   items     r?   rb   2Extend_Object._type_check_write.<locals>.<genexpr>x   s     >gd:dD))grd   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rV   )rW   r0   rt   s     r?   rb   rv   |   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 length   )	rW   listr/   wrap_in_arrayrk   ri   len
ValueErrorrepr)rZ   filter_decode_parmss      r?   _type_check_writeExtend_Object._type_check_writel   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$$rA   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)rZ   datar   r   r   s        r?   rI   Extend_Object.write   s/     &,#'#9#9&#O FDlCrA   rf   )rl   r2   )r   bytesr   zName | Array | Noner   zDictionary | Array | Noner   bool)__name__
__module____qualname____firstlineno__r[   r1   Parentrp   r   rI   __static_attributes__rf   rA   r?   rS   rS   T   s^    
 .2[[N ""%P '+26DD $	D
 0D D DrA   rS   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 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   r9   r:   )rZ   r>   s     r?   _quick_saveExtend_Pdf._quick_save   s$    i		#
rA   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
   FileNotFoundErrorRuntimeErrorrQ   decode)rZ   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                  $ rV   )r1   InfotrailerrW   r0   make_indirectis_indirectrY   s    r?   docinfoExtend_Pdf.docinfo   s    99DLL(
LLz1
 1
 !% 2 2:< @DLL||  ,, $ 2 24<<3D3D EDLL||   rA   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   )rZ   new_docinfos     r?   r   r      s'    &&L  (rA   c                Z    [         R                  U R                  ;   a  U R                  ?g g rV   )r1   r   r   rY   s    r?   r   r      s!    99$! %rA   TFc                $    [        U UUU(       + S9$ )N)pikepdf_marksync_docinfooverwrite_invalid_xml)r,   )rZ   set_pikepdf_as_editorupdate_docinfostricts       r?   open_metadataExtend_Pdf.open_metadata   s     .'&,*	
 	
rA   c                    [        XUS9$ )N)	max_depthr   )r*   )rZ   r   r   s      r?   open_outlineExtend_Pdf.open_outline   s    t@@rA   c                    [        XU40 UD6$ rV   )r3   )rZ   r   dkwargss       r?   make_streamExtend_Pdf.make_stream   s    d!.v..rA   )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   rx   rA   )TypeMediaBoxContents	ResourcesF)first)r|   r0   r1   r   r/   r   r   	_add_page)rZ   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~rA   c                ~    U R                  5         [        U SS 5      (       a  U R                  R                  5         g g )N_tmp_stream)_closegetattrr   closerY   s    r?   r   Extend_Pdf.close   s1    4--""$ .rA   c                    U $ rV   rf   rY   s    r?   	__enter__Extend_Pdf.__enter__   s    rA   c                $    U R                  5         g rV   )r   )rZ   exc_type	exc_value	tracebacks       r?   __exit__Extend_Pdf.__exit__   s    

rA   c                l    0 n[         R                   H  n[        U SU-   5      X'   M     [        S0 UD6$ )N_allow_rf   )r+   _fieldsr   )rZ   resultsfields      r?   allowExtend_Pdf.allow   s8     ((E$T9u+<=GN )%W%%rA   c                ,    [        U R                  5      $ rV   )r)   _encryption_datarY   s    r?   
encryptionExtend_Pdf.encryption   s    d3344rA   c                     " S S[         5      n/ nU R                  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$ )*Extend_Pdf.check.<locals>.DiscardingParseri  c                "   > [         TU ]  5         g rV   )super__init__)rZ   	__class__s    r?   r   3Extend_Pdf.check.<locals>.DiscardingParser.__init__  s     "rA   c                    g rV   rf   )rZ   _argss     r?   handle_object8Extend_Pdf.check.<locals>.DiscardingParser.handle_object      rA   c                    g rV   rf   rY   s    r?   
handle_eof5Extend_Pdf.check.<locals>.DiscardingParser.handle_eof  r   rA   rf   )	r   r   r   r   r   r   r   r   __classcell__)r   s   @r?   DiscardingParserr     s    # rA   r   z	WARNING: )r"   _decode_all_streams_and_discardr7   parse_contentsget_warningsr8   )rZ   r   problemsdiscarding_parserr<   warnings         r?   rH   Extend_Pdf.check   st    	| 	 !,,.,.JJD 12  ((*GOOK'12 + rA    )	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_idc               \   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[        [        [        4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'   rW   r_   r   r   ri   r&   enter_contextr%   _save)rZ   filename_or_streamr  r  r  r  r  r  r  r  r	  r
  r  r  r   r  r  stackstreamfilenames                       r?   r9   Extend_Pdf.save  s)   ( "gd4H$&O&O!%!8!8!3  [E)622+&'9:!"4sE46H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               t   [        U [        5      (       a!  U R                  S5      (       a  [        S5        [        U [        [
        4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)rW   r   
startswithr   intfloatri   r   r|   openr   shutilcopyfileobjr:   r_   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?   r*  Extend_Pdf.openY  s    (%005G5R5R6
 6
 + (3,77 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=,E88E= 
F&F7rf   NNreturnr0   )r   r0   )TTF)r   r   r   r   r   r   r5  r,   )   F)r   r(  r   r   r5  r*   rV   )r   r   r5  r3   )r   ztuple[Numeric, Numeric]r5  r   r5  None)r5  r+   )r5  r)   )r5  z	list[str])"r  zPath | str | BinaryIO | Noner  r   r  r   r  str | tuple[str, int]r  r9  r  r   r  r   r  zStreamDecodeLevel | Noner  r   r	  r   r
  r   r  r   r  zCallable[[int], None]r   zEncryption | bool | Noner  r   r  r   r5  r8  )r  zPath | str | BinaryIOr  zstr | bytesr  r   r  r   r  r   r  r   r   r   r!  r   r"  r   r5  r   )r   r   r   r   r   r   propertyr   setterdeleterr   r   r   r   r   r   r   r   r   rH   r   preserver9   staticmethodr   defaultr*  r   rf   rA   r?   r   r      sx    ! ! ^^( ( __" " '+#	
#
 
 	

 

A/ 7E3	"%
 & & 5 54 <@?  "-//1%)!%8</?/H/H"'*./3!&!&%?8? 	?
 ? +? -? #? ? 6? -?  ? ? ? (?  -!?" #?$ %?& 
'?B  !#"$)"&!%(,","4"4(-L1L L 	L
 "L  L L "&L  L "&L 
L LrA   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rV   KeyErrorrZ   keyr?  s      r?   getExtend_ObjectMapping.get  #    	9 	N	    c                n    [        U[        5      (       a  [        U5      n[        R                  " X5      $ rV   )rW   r1   r_   r$   _cpp__contains__rZ   rF  s     r?   __contains__!Extend_ObjectMapping.__contains__  s)    c4  c(C..t99rA   c                n    [        U[        5      (       a  [        U5      n[        R                  " X5      $ rV   )rW   r1   r_   r$   _cpp__getitem__rM  s     r?   __getitem__ Extend_ObjectMapping.__getitem__  s)    c4  c(C--d88rA   rf   rV   )r5  r2   )rF  
Name | strr5  r   )rF  rT  r5  r2   )	r   r   r   r   rG  r   rN  rR  r   rf   rA   r?   rA  rA    s/     : :
 9 9rA   rA  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_rectangler/   r.  r|   )objpdfobjes      r?   check_is_boxr[    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_mediaboxrY   s    r?   mediaboxExtend_Page.mediabox  s    !!$''rA   c                6    [        U5        XR                  S'   g )Nz	/MediaBoxr[  rX  rZ   values     r?   r`  ra        U %rA   c                &    U R                  SS5      $ NTF)_get_artboxrY   s    r?   artboxExtend_Page.artbox  s    e,,rA   c                6    [        U5        XR                  S'   g )Nz/ArtBoxrc  rd  s     r?   rj  rk    s    U#rA   c                &    U R                  SS5      $ rh  )_get_bleedboxrY   s    r?   bleedboxExtend_Page.bleedbox  s    !!$..rA   c                6    [        U5        XR                  S'   g )Nz	/BleedBoxrc  rd  s     r?   ro  rp    rf  rA   c                &    U R                  SS5      $ rh  )_get_cropboxrY   s    r?   cropboxExtend_Page.cropbox        u--rA   c                6    [        U5        XR                  S'   g )Nz/CropBoxrc  rd  s     r?   rt  ru        U$rA   c                &    U R                  SS5      $ rh  )_get_trimboxrY   s    r?   trimboxExtend_Page.trimbox  rv  rA   c                6    [        U5        XR                  S'   g )Nz/TrimBoxrc  rd  s     r?   r{  r|    rx  rA   c                    U R                   $ rV   )_imagesrY   s    r?   imagesExtend_Page.images  s    ||rA   c                    U R                   $ rV   )_form_xobjectsrY   s    r?   form_xobjectsExtend_Page.form_xobjects  s    """rA   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)r1   r   rX  r0   rW   ri   rY   s    r?   	resourcesExtend_Page.resources  sg    >>)!+DHH xx!!! DHH..
;;LMMxx!!!rA   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  r0   r|   r1   randomas_dictvaluesrW   with_same_owner_asrX  )rZ   resres_typerK   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!rA   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)rW   r   as_form_xobjectr0   rG  r1   r   r3   XObjectSubtypeFormri   r    r{  r  calc_form_xobject_placementcontents_addcontents_coalesce)
rZ   rl   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",   rA   )r  r  r  c          	     *    U R                  UUSUUUS9$ )NFr  r  r  r  r  )rZ   rl   r  r  r  r  s         r?   add_overlayExtend_Page.add_overlayR  s.     ""! # 
 	
rA   )r  r  c          	     &    U R                  XSSXCS9$ )NTFr  r  )rZ   rl   r  r  r  s        r?   add_underlayExtend_Page.add_underlayd  s%     ""tf # 
 	
rA   Fr  c                    U R                  XS9$ )Nr  )_contents_add)rZ   contentsr  s      r?   r  Extend_Page.contents_addp  s    !!(!<<rA   c                .    [        U R                  U5      $ rV   )r   rX  rZ   rK   s     r?   __getattr__Extend_Page.__getattr__s  s    txx&&rA   c                    [        U R                  U5      (       a  [        R                  XU5        g [	        U R
                  X5        g rV   )r  r   object__setattr__setattrrX  )rZ   rK   re  s      r?   r  Extend_Page.__setattr__v  s1    4>>4((t51DHHd*rA   c                    [        U R                  U5      (       a  [        R                  X5        g [	        U R
                  U5        g rV   )r  r   r  __delattr__delattrrX  r  s     r?   r  Extend_Page.__delattr__}  s/    4>>4((t*DHHd#rA   c                     U R                   U   $ rV   rX  rM  s     r?   rR  Extend_Page.__getitem__  s    xx}rA   c                     X R                   U'   g rV   r  )rZ   rF  re  s      r?   __setitem__Extend_Page.__setitem__  s    rA   c                    U R                   U	 g rV   r  rM  s     r?   __delitem__Extend_Page.__delitem__  s    HHSMrA   c                    XR                   ;   $ rV   r  rM  s     r?   rN  Extend_Page.__contains__  s    hhrA   c                0     X   $ ! [          a    Us $ f = frV   rC  rE  s      r?   rG  Extend_Page.get  rI  rJ  c                J    U R                   R                  UR                   US9$ )N)rg   )rX  rp   )rZ   rl   rg   s      r?   rp   Extend_Page.emplace  s     xx		&99rA   c                p    [        U R                  5      R                  SSS5      R                  SSS5      $ )Nr0   r   rx   z(Type="/Page")r   )r}   rX  replacerY   s    r?   __repr__Extend_Page.__repr__  s/    NW\61-W%r1-	
rA   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   )r@   r
   r   r   rQ   r   )rZ   r   r   r   bundlera   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:rf   )r5  r$   r4  rV   )r  r2   r  r1   rK   Name | Noner  r_   r  r   r5  r1   )r  Rectangle | Noner  r   r  r   r  r   r  r   r5  r1   )rl   Object | Pager  r  r  r   r  r   r  r   r5  r1   )
rl   r  r  r  r  r   r  r   r5  r1   )r  zStream | bytesr  r   )rl   r   r3  )"r   r   r   r   r:  r`  r;  rj  ro  rt  r{  r  r  r  r  r  r  r  r  r  r   r  r  rR  r  r  rN  rG  r1   r   rp   r  r   r   rf   rA   r?   r]  r]    s   ( ( __& & - - ]]$ $ / / __& & . . ^^% % . . ^^% %   # # " " !	 !%  	   
<(! (! 	(!
 (! (! (! 
(!Z "&

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

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

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

 

 

 


 IN =' + + $ $ ,0;;. :
rA   r]  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_valuerY   s    r?   r  Extend_Token.__repr__  s     

|2dnn-=Q??rA   rf   N)r   r   r   r   r  r   rf   rA   r?   r  r    s    @rA   r  c                       \ rS rSrS rS 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uryrY   s    r?   r  Extend_Rectangle.__repr__  s4    #DHH:RzDHH:RzQRSSrA   c                p    [        U R                  U R                  U R                  U R                  45      $ rV   )hashr  r  r  r  rY   s    r?   __hash__Extend_Rectangle.__hash__  s&    TXXtxx488<==rA   rf   N)r   r   r   r   r  r  r   rf   rA   r?   r  r    s    T>rA   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$ rV   )_get_filespecrD  )rZ   ra   filespecs      r?   rR  Extend_Attachments.__getitem__  s'    %%a(1+rA   c                    [        U[        5      (       a  U R                  X5      $ UR                  (       d  Xl        U R	                  X5      $ rV   )rW   r   _attach_datar  _add_replace_filespec)rZ   ra   vs      r?   r  Extend_Attachments.__setitem__  s=    a$$Q**zzJ))!//rA   c                $    U R                  U5      $ rV   )_remove_filespec)rZ   ra   s     r?   r  Extend_Attachments.__delitem__  s    $$Q''rA   c                4    [        U R                  5       5      $ rV   )r{   _get_all_filespecsrY   s    r?   __len__Extend_Attachments.__len__  s    4**,--rA   c              #  @   #    U R                  5        S h  vN   g  N7frV   )r  rY   s    r?   __iter__Extend_Attachments.__iter__  s     **,,,s   c                     S[        U 5       S3$ )Nz<pikepdf._core.Attachments: >)ry   rY   s    r?   r  Extend_Attachments.__repr__  s    -d4j\;;rA   rf   N)ra   r_   r5  r   )ra   r_   r  zAttachedFileSpec | bytesr5  r8  )ra   r_   r5  r8  )r5  zIterator[str])r   r   r   r   rR  r  r  r  r  r  r   rf   rA   r?   r  r    s     0(.-<rA   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_typer_   rW   r   statr   
read_bytesrK   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%
 	
rA   c                T    U R                   R                  [        R                  5      $ rV   )rX  rG  r1   AFRelationshiprY   s    r?   r  $Extend_AttachedFileSpec.relationship  s    xx||D//00rA   c                z    Uc  U R                   [        R                  	 g XR                   [        R                  '   g rV   )rX  r1   r  rd  s     r?   r  r     s+    =,,-,1HHT(()rA   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%  rY   s    r?   r   Extend_AttachedFileSpec.__repr__  sL    ==6t}}6G H#//2!5 >d>N>N=QQRSSrA   rf   N)r=   r   r  z
Path | strr%  r_   r  r  )r5  r  )re  r  )r   r   r   r   r>  r1   Unspecifiedr  r:  r  r;  r  r   rf   rA   r?   r  r    sz    
 $($4$4


 	

 "
 
6 1 1 2 2TrA   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      $ rV   )_creation_dater-   rY   s    r?   r  !Extend_AttachedFile.creation_date  s    ""t2233rA   c                $    [        U5      U l        g rV   )r.   r(  rd  s     r?   r  r)    s    -e4rA   c                P    U R                   (       d  g [        U R                   5      $ rV   )	_mod_dater-   rY   s    r?   r  Extend_AttachedFile.mod_date  s    ~~t~~..rA   c                $    [        U5      U l        g rV   )r.   r,  rd  s     r?   r  r-    s    (/rA   c                6    U R                   R                  5       $ rV   )rX  r  rY   s    r?   r  Extend_AttachedFile.read_bytes#  s    xx""$$rA   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  )rX  objgensizer  r  r  rY   s    r?   r  Extend_AttachedFile.__repr__&  sT    00A		{ S(8J8J7K La)	
rA   )r(  r,  N)r5  zdatetime.datetime | None)re  zdatetime.datetimer5  r   )r   r   r   r   r:  r  r;  r  r  r  r   rf   rA   r?   r&  r&    sd    4 4
 5 5 / /
 __0 0%
rA   r&  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_NameTreei.  c                4    [        U R                  5       5      $ rV   r   _as_maprY   s    r?   rX   Extend_NameTree.keys0      ''rA   c                4    [        U R                  5       5      $ rV   r   r:  rY   s    r?   r  Extend_NameTree.values3      $,,.))rA   c                4    [        U R                  5       5      $ rV   r   r:  rY   s    r?   itemsExtend_NameTree.items6      ((rA   rf   Nr   r   r   r   rX   r  rC  r   rG  poppopitemclearupdate
setdefaultr   rf   rA   r?   r7  r7  .  U    (*) 

C


C$$G  E""F**JrA   r7  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_NumberTreeiD  c                4    [        U R                  5       5      $ rV   r9  rY   s    r?   rX   Extend_NumberTree.keysF  r<  rA   c                4    [        U R                  5       5      $ rV   r>  rY   s    r?   r  Extend_NumberTree.valuesI  r@  rA   c                4    [        U R                  5       5      $ rV   rB  rY   s    r?   rC  Extend_NumberTree.itemsL  rE  rA   rf   NrF  rf   rA   r?   rN  rN  D  rL  rA   rN  )r<   r   r5  r   r5  r7  )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   r@   rQ   rS   r   rA  r[  r]  r  r  r  r  r&  r7  registerrN  rf   rA   r?   <module>rh     s   #    U U *  !   ' . .  <     X W K K Q Q C C
 
)S%
1  
&FD FD FDR 
#G G GT 
.9 9 9(
2 
$a a aH 
%@ @ @
 
)> > > 
+< < <6 

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