
    h5j                        U d 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
 ddlmZ erddlmZ dd	lmZ dd
ZddZddZeed ed dZded<   ddZy)zSupport functions called by the C++ library binding layer.

Not intended to be called from Python, and subject to change at any time.
    )annotations)Callable)TYPE_CHECKING)warn)PdfError)Name)Pdf)
Dictionaryc                    t         j                  | j                  vry	 | j                  dd      5 }d|v r||d<   ddd       y# 1 sw Y   yxY w# t        $ r}t        d      |d}~ww xY w)z-Update XMP metadata to specified PDF version.NF)set_pikepdf_as_editorupdate_docinfozpdf:PDFVersionz6While trying to update XMP metadata, an error occurred)r   MetadataRootopen_metadata	Exceptionr   )pdfversionmetaes       I/var/www/html/qr/venv/lib/python3.12/site-packages/pikepdf/_cpphelpers.pyupdate_xmp_pdfversionr      s    }}CHH$X"'  
 	14')0%&		1 	1 	1
  XOPVWWXs3   A 
AA A
A A 	A+A&&A+c                   | dk  rt        d|  d      g }| dkD  r)t        | dz
  d      \  } }|j                  |       | dkD  r)t        d      }t	        |      D cg c]  }||z   	 }}dj                  d |D              S c c}w )	z9Excel-style column numbering A..Z, AA..AZ..BA..ZZ.., AAA.   Can't represent z in alphabetic numberingr      A c              3  2   K   | ]  }t        |        y wN)chr).0os     r   	<genexpr>z_alpha.<locals>.<genexpr>0   s     (a3q6(s   )
ValueErrordivmodappendordreversedjoin)nprbasevordss         r   _alphar0   &   s    1u+A3.FGHH
A
a%a!eR 1	 a% s8D (,1TAX,D,77(4((( -s   Bc                    d| cxk  rdk  sn t        d|  d      d}d}|D ]  \  }}| |k\  s||z  }| |z  } | |k\  r |S )z>Convert integer n to Roman numeral representation as a string.r   i  r   z in Roman numerals))i  M)i  CM)i  D)i  CD)d   C)Z   XC)2   L)(   XL)
   X)	   IX)   V)   IV)r   Ir   )r$   )r*   roman_numeralsromanvaluenumerals        r   _romanrK   3   sn    NdN+A3.@ABBN E( w5jWEJA 5j L    c                4    t        |       j                         S r   )r0   lowerxs    r   <lambda>rQ   Q       6!9??$ rL   c                4    t        |       j                         S r   )rK   rN   rO   s    r   rQ   rQ   S   rR   rL   )r4   r   aRr,   zdict[str, Callable[[int], str]]LABEL_STYLE_MAPc                
   t        | t              rt        |       S d}t        j                  | v r!| t        j                     }|t        |      z  }t        j
                  | v rt        j                  | v r| t        j                     nd}t        |t              st        dt               d}| t        j
                     }t        |t              r$t        t        |      dd    } ||      }||z  }|S t        dt               |S )z?Convert a label dictionary returned by qpdf into a text string.r   r   z9Page label dictionary has invalid non-integer start valueNz2Page label dictionary has invalid page label style)

isinstanceintstrr   PSStr   UserWarningrV   )
label_dictlabelprefixnumeric_valuestylestyle_fnrI   s          r   label_from_label_dictre   W   s    *c":EvvDFF#V vv/3ww*/D
477+!--K[ M466"eT"&s5z!"~6H]+EUNE L E{SLrL   N)r   r	   r   rZ   returnNone)r*   rY   rf   rZ   )r_   zint | Dictionaryrf   rZ   )__doc__
__future__r   collections.abcr   typingr   warningsr   pikepdf.exceptionsr   pikepdf.objectsr   pikepdf._corer	   r
   r   r0   rK   rZ   rV   __annotations__re    rL   r   <module>rr      s\   
 # $    '  !*X
)8 
		$		$40 rL   