
    @wg7                        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 ddlmZmZ ddlmZ ddlmZ ddl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jD                  dejF                        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) z~
Anything related to Extensible Metadata Platform (XMP) metadata.

https://en.wikipedia.org/wiki/Extensible_Metadata_Platform
    N)AnyCallableDictIteratorListOptionalTypeVarUnion)DocumentparseString)Element)
ExpatError   )
StreamTypedeprecate_no_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    @/var/www/horilla/myenv/lib/python3.12/site-packages/pypdf/xmp.py	_identityr   M   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>d   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_daterE   Q   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,	9+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selfrH   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)rJ   cachedretvalelementbagsbagitemr   ns_cacherG   rF   s            r   rQ   z_getter_bag.<locals>.geto   s    	2.2248M''It< 	-G11-GD4y -C # : :=$ O - $t 4e,--	- ::((B7r   )r   r   strrF   rG   rQ   s   `` r   _getter_bagrb   l   s'    " xS	':   Jr   	converterc                 H     dddt         t        t              f fd}|S )NrJ   rH   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 )NrL   SeqrN   rO   )rJ   rY   rZ   r[   seqsseqr^   r   r_   rc   rG   rF   s            r   rQ   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   rF   rG   rc   rQ   s   ``` r   _getter_seqrj      s'    " xS	': ( Jr   c                 P     dddt         t        t        t        f      f fd}|S )NrJ   rH   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 )NrL   AltrN   zxml:langz	x-default)	rP   rQ   rR   rS   rT   rU   rV   getAttributerX   )rJ   rY   rZ   r[   altsaltr^   r   r_   rG   rF   s            r   rQ   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   ra   s   `` r   _getter_langaltrq      s+    " xS#X'? $ Jr   c                 :     dddt         t           f fd}|S )NrJ   rH   r   c                 `   | j                   j                  i       j                        }|r|S d }| j                  d      D ]:  }|j                  |j                  k(  r|j
                  }n| j                  |      } n | |      }| j                   j                  i       }||<   |S NrL   )rP   rQ   rR   nodeTypeATTRIBUTE_NODE	nodeValuerV   rX   )rJ   rY   r   r[   r_   rc   rG   rF   s        r   rQ   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   ri   s   ``` r   _getter_singlerx      s"    " x} " Jr   c            	          e Zd ZdZdeddfdZ	 d(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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            Z,	  e ee+d"e            Z-	  e ee+d#e            Z.	  e ee+d$            Z/	  e ee0d%            Z1	  e ee0d&            Z2	 ede3eef   fd'       Z4y))rH   z
    An object that represents Extensible Metadata Platform (XMP) metadata.
    Usually accessed by :py:attr:`xmp_metadata()<pypdf.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   )	rz   get_datar   r   r   rS   rT   rdf_rootrP   )rJ   rz   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encryption_keyc                 V    |t        dd       | j                  j                  |       y )Nz/the encryption_key parameter of write_to_streamz5.0.0)r   rz   write_to_stream)rJ   rz   r   s      r   r   zXmpInformation.write_to_stream   s+     %$A7 	##F+r   	about_urirF   rG   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~   rS   rT   getAttributeNSgetAttributeNodeNS)rJ   r   rF   rG   descattrs         r   rR   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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~   rS   rT   r   range
attributeslengthr^   namespaceURI
childNodes)rJ   r   rF   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;r[   c                 ~    d}|j                   D ]+  }|j                  |j                  k(  s||j                  z  }- |S rt   )r   ru   	TEXT_NODEr   )rJ   r[   textr   s       r   rV   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
CreateDate
ModifyDateMetadataDateCreatorTool
DocumentID
InstanceIDc           
         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.

        Returns:
            A dictionary of key/value items for custom metadata properties.

        _custom_propertiesrL   u   ↂr/   Nr         )base)hasattrr   r   PDFX_NAMESPACE	localNamefindchrr*   ru   rv   rw   rV   )rJ   nodekeyidxr   s        r   custom_propertiesz XmpInformation.custom_propertiesm  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   r   )5__name__
__module____qualname____doc__r   r   r   r
   r`   bytesr   r   r   rR   r   
XmlElementrV   propertyrb   DC_NAMESPACEdc_contributorrx   dc_coveragerj   
dc_creatorrE   dc_daterq   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_NAMESPACExmp_create_datexmp_modify_datexmp_metadata_datexmp_creator_toolXMPMM_NAMESPACExmpmm_document_idxmpmm_instance_idr   r   r   r   r   rH   rH      s   
(} 
( 
( MQ, ,27c58H2I,	,HS HS H HQT H	$ 	$ 	$QT 	$   k,FGN >,
CDK>+lI>?J {<IJG olMJKN h?@I(^L,GHM,;|Z@AKKKkBCL0;|Z@AK x@AI" h?@IM+lI>?J- g>?HC{<89GJN=*EFLDn]LIJN7N=*EFL=}lODO }lODO !}noF  }m LMG !NOQ !NO '4S> ' 'r   ).r   r:   r6   retypingr   r   r   r   r   r   r	   r
   xml.dom.minidomr   r   r   r   xml.parsers.expatr   _utilsr   r   errorsr   genericr   r   rT   r   r   r   r   r   compileVERBOSEr2   r   r   r`   rE   rb   rj   rq   rx   rH   r   r   r   <module>r      s     		 	 	 2 1 ( 8   -=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.'Y 'r   