
    ,hG                     .   d 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	m
Z
mZmZmZ ddl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ZdZdZ dZ!dZ"dZ# ejH                  dejJ                        Z& ed      Z'de'de'fdZ(de)dej                  fdZ*de)de)dedge
e	e)      f   fdZ+e(fde)de)deegef   dedge
e	e      f   fdZ,de)de)dedge
eeef      f   fdZ-e(fde)de)dee)gef   dedge
e   f   fdZ. G d  de      Z/y)!zc
Anything related to XMP metadata.

See https://en.wikipedia.org/wiki/Extensible_Metadata_Platform
    N)	AnyCallableDictIteratorListOptionalTypeVarUnioncast)Document)Element)parseString)
ExpatError   )
StreamTypedeprecate_with_replacementdeprecation_with_replacement)PdfReadError)ContentStream	PdfObjectz+http://www.w3.org/1999/02/22-rdf-syntax-ns#z http://purl.org/dc/elements/1.1/zhttp://ns.adobe.com/xap/1.0/zhttp://ns.adobe.com/pdf/1.3/zhttp://ns.adobe.com/xap/1.0/mm/zhttp://ns.adobe.com/pdfx/1.3/a{  
        (?P<year>[0-9]{4})
        (-
            (?P<month>[0-9]{2})
            (-
                (?P<day>[0-9]+)
                (T
                    (?P<hour>[0-9]{2}):
                    (?P<minute>[0-9]{2})
                    (:(?P<second>[0-9]{2}(.[0-9]+)?))?
                    (?P<tzd>Z|[-+][0-9]{2}:[0-9]{2})
                )?
            )?
        )?
        Kvaluereturnc                     | S N )r   s    L/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/PyPDF2/xmp.py	_identityr   U   s    L    c           	      0   t         j                  |       }|t        d|        t        |j	                  d            }t        |j	                  d      xs d      }t        |j	                  d      xs d      }t        |j	                  d      xs d      }t        |j	                  d      xs d      }t        j                  |j	                  d	      xs d      }|j                  t
        j                        }||z
  d
z  }	t        |      }
t        |	      }|j	                  d      xs d}t        j                  ||||||
|      }|dk7  rDd |j                  d      D        \  }}|dz  }|dk  r|dz  }|t        j                  ||      z   }|S )NzInvalid date format: yearmonth1dayhour0minutesecondi@B tzdZc              3   2   K   | ]  }t        |        y wr   )int).0xs     r   	<genexpr>z"_converter_date.<locals>.<genexpr>l   s     !AQ#a&!As   :r   )hoursminutes)iso8601match
ValueErrorr,   groupdecimalDecimalto_integralROUND_FLOORdatetimesplit	timedelta)r   matchesr!   r"   r$   r%   r'   r(   seconds_decmilliseconds_decsecondsmillisecondsr)   dt	tzd_hourstzd_minutess                   r   _converter_daterG   Y   su   mmE"G0899w}}V$%Dg&-#.E
gmmE")c
*Cw}}V$+,Dx(/C0F__W]]84;<F$$W%8%89K,7+G'(L
--

%#C			4T67L	QB
cz!A#))C.!A	;R	q=2K($$9kJJIr   	namespacenameXmpInformationc                 D     dddt         t        t              f fd}|S )NselfrJ   r   c                    | j                   j                  
i       j                  	      }|r|S g }| j                  d
	      D ]h  }|j                  t        d      }t        |      s%|D ]?  }|j                  t        d      D ]$  }| j                  |      }|j                  |       & A j | j                   j                  
i       }||	<   |S )N Bagli	cachegetget_elementgetElementsByTagNameNSRDF_NAMESPACElen	_get_textappend
setdefault)rL   cachedretvalelementbagsbagitemr   ns_cacherI   rH   s            r   rS   z_getter_bag.<locals>.getw   s    	2.2248M''It< 	-G11-GD4y -C # : :=$ O - $t 4e,--	- ::((B7r   )r   r   strrH   rI   rS   s   `` r   _getter_bagrd   t   s'    " xS	':   Jr   	converterc                 H     dddt         t        t              f fd}|S )NrL   rJ   r   c                    | j                   j                  i       j                  
      }|r|S g }| j                  d
      D ]  }|j                  t        d      }t        |      rM|D ]G  }|j                  t        d      D ],  }| j                  |      } 	|      }|j                  |       . I q 	| j                  |            }|j                  |        | j                   j                  i       }||
<   |S )NrN   SeqrP   rQ   )rL   r[   r\   r]   seqsseqr`   r   ra   re   rI   rH   s            r   rS   z_getter_seq.<locals>.get   s    	2.2248M''It< 
	%G11-GD4y -C # : :=$ O - $t 4 )% 0e,-- "$.."9:e$
	% ::((B7r   )r   r   r   rH   rI   re   rS   s   ``` r   _getter_seqrl      s'    " xS	': ( Jr   c                 P     dddt         t        t        t        f      f fd}|S )NrL   rJ   r   c                    | j                   j                  
i       j                  	      }|r|S i }| j                  d
	      D ]  }|j                  t        d      }t        |      rH|D ]B  }|j                  t        d      D ]'  }| j                  |      }|||j                  d      <   ) D l| j                  |      |d<    | j                   j                  
i       }||	<   |S )NrN   AltrP   zxml:langz	x-default)	rR   rS   rT   rU   rV   rW   rX   getAttributerZ   )rL   r[   r\   r]   altsaltr`   r   ra   rI   rH   s            r   rS   z_getter_langalt.<locals>.get   s    	2.2248M''It< 	>G11-GD4y FC # : :=$ O F $t 4@Et00<=FF
 '+nnW&={#	> ::((B7r   )r   r   r   rc   s   `` r   _getter_langaltrs      s+    " xS#X'? $ Jr   c                 :     dddt         t           f fd}|S )NrL   rJ   r   c                 `   | j                   j                  i       j                        }|r|S d }| j                  d      D ]:  }|j                  |j                  k(  r|j
                  }n| j                  |      } n | |      }| j                   j                  i       }||<   |S NrN   )rR   rS   rT   nodeTypeATTRIBUTE_NODE	nodeValuerX   rZ   )rL   r[   r   r]   ra   re   rI   rH   s        r   rS   z_getter_single.<locals>.get   s    	2.2248M''It< 	G7#9#99))w/	 e$E::((B7r   )r   r   rk   s   ``` r   _getter_singlerz      s"    " x} " Jr   c            	       .   e Zd ZdZdeddfdZedefd       Zde	de
deef   ddfdZde	de
deef   ddfd	Zd
edededee   fdZdedededee   fdZd
ededee   fdZdededee   fdZdedefdZ e eed            Z	  e eed            Z	  e eed            Z	  e eede            Z	  e eed            Z 	  e eed            Z!	  e eed            Z"	  e eed            Z#	  e eed            Z$	  e eed            Z%	  e eed            Z&	  e eed            Z'	  e eed             Z(	  e eed!            Z)	  e eed"            Z*	  e ee+d#            Z,	  e ee+d$            Z-	  e ee+d%            Z.	  e ee/d&e            Z0	 ede1jb                  fd'       Z2e2jf                  d(e1jb                  ddfd)       Z2 e ee/d*e            Z4	 ede1jb                  fd+       Z5e5jf                  d(e1jb                  ddfd,       Z5 e ee/d-e            Z6	 ede1jb                  fd.       Z7e7jf                  d(e1jb                  ddfd/       Z7 e ee/d0            Z8	 edefd1       Z9e9jf                  d(eddfd2       Z9 e ee:d3            Z;	 edefd4       Z<e<jf                  d(eddfd5       Z< e ee:d6            Z=	 edefd7       Z>e>jf                  d(eddfd8       Z>ede?eef   fd9       Z@y):rJ   z
    An object that represents Adobe XMP metadata.
    Usually accessed by :py:attr:`xmp_metadata()<PyPDF2.PdfReader.xmp_metadata>`

    :raises PdfReadError: if XML is invalid
    streamr   Nc                     || _         	 | j                   j                         }t        |      }|j                  t        d      d   | _        i | _        y # t        $ r}t	        d|       d }~ww xY w)Nz#XML in XmpInformation was invalid: RDFr   )	r|   get_datar   r   r   rU   rV   rdf_rootrR   )rL   r|   datadoc_rootes        r   __init__zXmpInformation.__init__   s|    	J;;'')D!,T!2H %-$C$C5%

% &(
  	J!DQCHII	Js   %A 	A0A++A0c                 4    t        ddd       | j                  S )NrdfRootr   4.0.0)r   r   rL   s    r   r   zXmpInformation.rdfRoot   s    "9j'B}}r   encryption_keyc                 <    | j                   j                  ||       y r   )r|   write_to_streamrL   r|   r   s      r   r   zXmpInformation.write_to_stream   s     	##FN;r   c                 B    t        ddd       | j                  ||       y)zZ
        .. deprecated:: 1.28.0

            Use :meth:`write_to_stream` instead.
        writeToStreamr   3.0.0N)r   r   r   s      r   r   zXmpInformation.writeToStream   s!     	%_6GQV^4r   	about_urirH   rI   c              #      K   | j                   j                  t        d      D ]N  }|j                  t        d      |k(  s|j	                  ||      }|| |j                  ||      E d {    P y 7 wNDescriptionabout)r   rU   rV   getAttributeNSgetAttributeNodeNS)rL   r   rH   rI   descattrs         r   rT   zXmpInformation.get_element   sv     MM88V 	HD""=':iG..y$?#J66y$GGG	H
 Hs   =A7 -A7-A5.A7aboutUric                 B    t        ddd       | j                  |||      S )zV
        .. deprecated:: 1.28.0

            Use :meth:`get_element` instead.
        
getElementrT   r   )r   rT   )rL   r   rH   rI   s       r   r   zXmpInformation.getElement  s%     	%\='J)T::r   c              #   z  K   | j                   j                  t        d      D ]  }|j                  t        d      |k(  st	        |j
                  j                        D ]1  }|j
                  j                  |      }|j                  |k(  s.| 3 |j                  D ]  }|j                  |k(  s|   y wr   )
r   rU   rV   r   range
attributeslengthr`   namespaceURI
childNodes)rL   r   rH   r   ir   childs          r   get_nodes_in_namespacez%XmpInformation.get_nodes_in_namespace  s     MM88V 	$D""=':iGt556 #A??//2D((I5"
# "__ $E))Y6#$	$s   =B; AB;$B;2	B;c                 @    t        ddd       | j                  ||      S )za
        .. deprecated:: 1.28.0

            Use :meth:`get_nodes_in_namespace` instead.
        getNodesInNamespacer   r   )r   r   )rL   r   rH   s      r   r   z"XmpInformation.getNodesInNamespace  s)     	%!#;W	
 **8Y??r   r]   c                 ~    d}|j                   D ]+  }|j                  |j                  k(  s||j                  z  }- |S rv   )r   rw   	TEXT_NODEr   )rL   r]   textr   s       r   rX   zXmpInformation._get_text'  sA    '' 	#E~~0

"	# r   contributorcoveragecreatordatedescriptionformat
identifierlanguage	publisherrelationrightssourcesubjecttitletypeKeywords
PDFVersionProducer
CreateDatec                 4    t        ddd       | j                  S Nxmp_createDatexmp_create_dater   r   r   r   s    r   r   zXmpInformation.xmp_createDate      "#35FP###r   r   c                 ,    t        ddd       || _        y r   r   rL   r   s     r   r   zXmpInformation.xmp_createDate      "#35FP$r   
ModifyDatec                 4    t        ddd       | j                  S Nxmp_modifyDatexmp_modify_dater   r   r   r   s    r   r   zXmpInformation.xmp_modifyDate  r   r   c                 ,    t        ddd       || _        y r   r   r   s     r   r   zXmpInformation.xmp_modifyDate  r   r   MetadataDatec                 4    t        ddd       | j                  S Nxmp_metadataDatexmp_metadata_dater   r   r   r   s    r   r   zXmpInformation.xmp_metadataDate  s    "#57JGT%%%r   c                 ,    t        ddd       || _        y r   r   r   s     r   r   zXmpInformation.xmp_metadataDate  s    "#57JGT!&r   CreatorToolc                 4    t        ddd       | j                  S Nxmp_creatorToolxmp_creator_toolr   r   r   r   s    r   r   zXmpInformation.xmp_creatorTool  s    $%68JGT$$$r   c                 ,    t        ddd       || _        y r   r   r   s     r   r   zXmpInformation.xmp_creatorTool  s    $%68JGT %r   
DocumentIDc                 4    t        ddd       | j                  S Nxmpmm_documentIdxmpmm_document_idr   r   r   r   s    r   r   zXmpInformation.xmpmm_documentId  s    $%79LgV%%%r   c                 ,    t        ddd       || _        y r   r   r   s     r   r   zXmpInformation.xmpmm_documentId      $%79LgV!&r   
InstanceIDc                 P    t        ddd       t        t        | j                        S Nxmpmm_instanceIdxmpmm_instance_idr   )r   r   rb   r   r   s    r   r   zXmpInformation.xmpmm_instanceId  s#    $%79LgVC//00r   c                 ,    t        ddd       || _        y r   )r   r   r   s     r   r   zXmpInformation.xmpmm_instanceId  r   r   c           
         t        | d      si | _        | j                  dt              D ]  }|j                  }	 |j                  d      }|dk(  rn/|d| t        t        ||dz   |dz    d	            z   ||dz   d z   }F|j                  |j                  k(  r|j                  }n| j                  |      }|| j                  |<    | j                  S )
z
        Retrieve custom metadata properties defined in the undocumented pdfx
        metadata schema.

        :return: a dictionary of key/value items for custom metadata properties.
        _custom_propertiesrN   u   ↂr1   Nr         )base)hasattrr   r   PDFX_NAMESPACE	localNamefindchrr,   rw   rx   ry   rX   )rL   nodekeyidxr   s        r   custom_propertiesz XmpInformation.custom_properties  s     t12&(D#33BG 5nn((8,CbyDS	c#cAga"8rBCDcAgi.)   ==D$7$77 NNE NN40E/4'',!5" &&&r   )A__name__
__module____qualname____doc__r   r   property
XmlElementr   r   r
   rb   bytesr   r   r   r   rT   r   r   r   rX   rd   DC_NAMESPACEdc_contributorrz   dc_coveragerl   
dc_creatorrG   dc_daters   dc_description	dc_formatdc_identifierdc_languagedc_publisherdc_relation	dc_rights	dc_source
dc_subjectdc_titledc_typePDF_NAMESPACEpdf_keywordspdf_pdfversionpdf_producerXMP_NAMESPACEr   r<   r   setterr   r   r   r   r   r   XMPMM_NAMESPACEr   r   r   r   r   r   r   r   r   rJ   rJ      s\   
(} 
( 
(   < <27c58H2I<	<
	5 	527c58H2I	5		5HS HS H HQT H	;	;(+	;36	;	#	;	$ 	$ 	$QT 	$@@(+@	#@   k,FGN
 >,
CDK +lI>?J
 {<IJG
 olMJKN
 h?@I ^L,GHM ;|Z@AK KkBCL ;|Z@AK
 x@AI
 h?@I +lI>?J
 g>?H {<89G N=*EFL n]LIJN N=*EFL }lODO
 $ 1 1 $ $ %H$5$5 %$ % % }lODO
 $ 1 1 $ $ %H$5$5 %$ % % !}noF &("3"3 & & 'h&7&7 'D ' '  }m LMG% % % &S &T & & !!NO &# & & 'c 'd ' ' !!NO
 1# 1 1 'c 'd ' ' '4S> ' 'r   )0r   r<   r8   retypingr   r   r   r   r   r   r	   r
   r   xml.dom.minidomr   r   r   r   xml.parsers.expatr   _utilsr   r   r   errorsr   genericr   r   rV   r   r  r  r  r   compileVERBOSEr4   r   r   rb   rG   rd   rl   rs   rz   rJ   r   r   r   <module>r     s     	
 
 
 % 1 ' ( 
 ! -=1..3, 1
"** JJ!( CLQ 1 3 8#4#4 6 (49"556. BK*2C5#:*> (49"5564 (4S>"::;2 BK*2C5#:*> (3-/0.z'Y z'r   