U
    =gC                     @  sN  d dl mZ d dlZd dlZd dl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 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 zd dlmZ W n  ek
r   d dlmZ Y nX d dl m!Z!m"Z"m#Z# d dl$m%Z%m&Z& d dl'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@ erd dlAmBZB d dl;mCZC d e_DeEeFZGdZHdZIdZJdZKddddZLeLe!_LddddZMd dd!d"ZNG d#d$ d$e:jOZPG d%d& d&e:jQZRG d'd( d(ZSG d)d* d*ZTd d d+d,d-ZUG d.d/ d/ZVdS )0    )annotationsN)Path)TYPE_CHECKINGCallable)rl_settings)TA_LEFT)
addMapping)A4)ParagraphStyle)
pdfmetrics)TTFont)Frame)ShowBoundaryValue)ParaFragps2tttt2ps)defaultparser)B64InlineURIgetFilepisaFileObject)	TableData)arabic_format
copy_attrsfrag_text_language_checkget_default_asian_fontgetColor	getCoordsgetFloatgetFrameDimensionsgetSizeset_asian_fonts	set_value)css)PmlPageCountPmlPageTemplatePmlParagraphPmlParagraphAndImagePmlTableOfContents)Flowable)PmlImage   g?    r   returnc                 K  s8   t f | j}|r.|j}|| d|kr.|d= d |_|S )NZcbDefn)r   __dict__update
bulletText)selfkwargsnd r6   5/tmp/pip-unpacked-wheel-d1lgvatt/xhtml2pdf/context.pycloneP   s    
r8   c                 C  s   t  }t|dd t|dd  t|dd d|_d|_t| j\|_|_|_| j|_| j|_d|_	d	|_
t|_d
|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_d|_d|_d|_|S )N)subsuperriseZ	underlinestrikegreekleadingleadingSpacespaceBefore
spaceAfter
leftIndentrightIndentfirstLineIndentborderPaddingpaddingLeftpaddingRight
paddingToppaddingBottombulletIndentZinsideStaticFrameoutlineLevelr   )	backColorZvAlignlinkborderStyleborderColorZlistStyleTypeZlistStyleImagewordWrapheightwidthr1   )
pageNumber	pageCountoutlineoutlineOpenkeepWithNextrtlF zTimes-Romannormalz150%   	Helveticag      ?)r   r"   textfontNamer   bolditalicfontSize	textColorletterSpacingleadingSourcer   	alignmentZborderWidthborderLeftWidthrO   borderLeftColorrN   borderLeftStyleborderRightWidthborderRightColorborderRightStyleborderTopWidthborderTopColorborderTopStyleborderBottomWidthborderBottomColorborderBottomStyle
whiteSpacebulletFontNameZzoom)stylefragr6   r6   r7   getParaFrag_   sR    rv   strc                 C  s&   t  | }|jr| S tt| j S N)urlparseschemerw   r   parentresolve)pathpartsr6   r6   r7   
getDirName   s    
r   c                   @  s   e Zd ZU ded< ddddZddd	d
ddddddddZed!ddddZedddddZddddddddZ	ddddd Z
dS )"pisaCSSBuilderpisaContextcztuple[dict, dict]r-   c                 C  s  |  | dg|}tt|d  }d|kr8i i fS |d }t|dd }|dk}|s||dkr|t	| j
	d| t|d	d
 dk}t|d trdd |d D }n
|d g}|D ]:}	| j
j|	| j
jjd}
|
r|
 s| j
j||
||d qi i fS )zEmbed fonts.*r   srczfont-familyzfont-weightrZ   >   500bolder700r_   600800900z)@fontface, unknown value font-weight '%s'z
font-stylerY   >   r`   obliquec                 S  s   g | ]}t |tr|qS r6   )
isinstancerw   ).0partr6   r6   r7   
<listcomp>   s     
 z-pisaCSSBuilder.atFontFace.<locals>.<listcomp>relative)r_   r`   )rulesetselectornextitervaluesrw   getlowerlogwarningr   r   listr   	cssParserrootPathZnotFoundloadFont)r2   declarationsresultdatanamesZfweightr_   r`   Zfontsfontr   r6   r6   r7   
atFontFace   s(    
zpisaCSSBuilder.atFontFaceFN)r   r   firstbordersizerw   dictboolztuple[float, float]zDtuple[str, str | None, str | None, float, float, float, float, dict])namer   r   r   r.   c                C  s   | j }|sd|  }|ddr2|d |d f}t||d |d \}}}	}
|rn|d |d||||	|
|fS ||dd |d||||	|
|fS )Nz-pdf-frame-%dZis_landscapeFr[   r   z-pdf-frame-borderz-pdf-frame-content)r   UIDr   r   )r2   r   r   r   r   r   r   xywhr6   r6   r7   _pisaAddFrame   s"    	

zpisaCSSBuilder._pisaAddFramezCallable | None)funcc                 C  sZ   |sdd }t |ttfrB|D ]}|| kr6|| | n|  S d S || krV|| | S |S )Nc                 S  s   | S rx   r6   )r   r6   r6   r7   r     s    z)pisaCSSBuilder._getFromData.<locals>.func)r   r   tuple)r   attrr   r   ar6   r6   r7   _getFromData   s    zpisaCSSBuilder._getFromData)r   r.   c                 C  s   |  d}|  d}|  d}|  d}dt|  ddi}|r\t|d t|d g|d	< |rlt||d
< |r|t||d< |rt||d< |S )Nzbackground-object-positionzbackground-heightzbackground-widthzbackground-opacitystepzbackground-page-stepr[   r   object_positionrQ   rR   opacity)r   r   r    )r   r   rQ   rR   r   devr6   r6   r7   get_background_context  s     





z%pisaCSSBuilder.get_background_contextz
str | None)r   
pseudopager   isLandscaper.   c          #      C  sv  | j }|pd}||jkr,t| j d| | |ddt}| |ddt}| |ddt}	| |ddt}
| |dd t}| |d	dt}d
D ].}||kr|j| j	||d||j
d  qqg }g }|jD ]Z\}}}}}}}}| |d|t}| |d|t}| |d|	t}| |d|
t}| |d|t}| |d	|t}|sP|r`tt|d}nt||d}|rt||j
d |j
d \}}}}t|||||j
\}}}}|dks|dkrt| j d t||||||||||d
}|r g |_|f|j|g |j|< || q|| q|dd } | |}!| r^| j j| | j jjd} |st|d | j	||d||j
d\}}}}}}}}t|||||j
\}}}}|dks|dkrt|d |s|rt }nt||d}|t|||||||	|
||d
 t|||j
d}"||"_| |"_|j|"_|!|"_|rR|"j|"_|"|j|< d |_g |_g |_i i fS )Nbodyz&template '%s' has already been definedzpadding-topr   zpadding-leftzpadding-rightzpadding-bottom)zborder-top-colorzborder-bottom-colorzborder-left-colorzborder-right-color)zborder-top-widthzborder-bottom-widthzborder-left-widthzborder-right-width)

margin-topmargin-leftmargin-rightmargin-bottomtopleftrightZbottomrR   rQ   Tr   )rR   )colorrR   r[   z<Negative width or height of frame. Check @frame definitions.)idZleftPaddingZrightPaddingZbottomPaddingZ
topPaddingZshowBoundaryzbackground-imager   zCmissing explicit frame definition for content or just static framesz;Negative width or height of frame. Check @page definitions.)r   framespagesize) r   templateListr   r   r   r    r   	frameListappendr   pageSizer   intr   r   r   ZpisaStaticStoryframeStaticr   r   r   r   r   r%   ZpisaStaticListZpisaBackgroundpisaBackgroundListZbackgroundContextZ	LANDSCAPEZpageorientationtemplateframeStaticList)#r2   r   r   r   r   Z
pageBorderr   Zpadding_topZpadding_leftZpadding_rightZpadding_bottomZborder_colorZborder_widthpropr   Z
staticListfnameZstaticr   r   r   r   r   fdataZfpadding_topZfpadding_leftZfpadding_rightZfpadding_bottomZfborder_colorZfborder_widthZframe_borderframeZ
backgroundZbackground_contextptr6   r6   r7   atPage!  s2   	
               
    
zpisaCSSBuilder.atPage)r   r.   c                 C  s|   |rt|  | dg|}|d }|rtz| d }W n  tk
rT   | d }Y nX | jj| j||| jj	d i i fS )Nr   r   r[   )r   )
r   r   r   	Exceptionpopitemr   r   r   r   r   )r2   r   r   r   r   r6   r6   r7   atFrame  s    zpisaCSSBuilder.atFrame)NN)__name__
__module____qualname____annotations__r   r   staticmethodr   r   r   r   r6   r6   r6   r7   r      s   
&  Ir   c                   @  s   e Zd Zdd ZdS )pisaCSSParserc                 C  s   d }| j }| jj|| j d}|s$d S | j rJt| j jrJt| j || _ nt|j| _ z| |	 }|| _ W n t
k
r   td Y nX |S )Nr   zError while parsing CSS file)r   r   r   ry   rz   urljoinr   uriparseZgetDatar   r   	exception)r2   ZcssResourceNamer   ZoldRootPathZcssFiler6   r6   r7   parseExternal  s    
zpisaCSSParser.parseExternalN)r   r   r   r   r6   r6   r6   r7   r     s   r   c                   @  sf   e Zd ZddddZddddZdd	d
ddZdddddZdddddZddddZdS )PageNumberTextNoner-   c                 O  s
   d| _ d S NrY   r   r2   argsr3   r6   r6   r7   __init__  s    zPageNumberText.__init__r   c                 C  s   | j jd k	rt| j j| _dS NF)flowablepagerw   r   r2   keyr6   r6   r7   __contains__  s    zPageNumberText.__contains__rw   	list[str]r]   r.   c                 C  s   | j gS rx   r   r2   r]   r6   r6   r7   split  s    zPageNumberText.splitr   indexr.   c                 C  s   | j r| j | S | j S rx   r   r2   r   r6   r6   r7   __getitem__  s    zPageNumberText.__getitem__r)   r   r.   c                 C  s
   || _ d S rx   r   r2   r   r6   r6   r7   setFlowable  s    zPageNumberText.setFlowablec                 C  s   | j S rx   r   r2   r6   r6   r7   __str__   s    zPageNumberText.__str__N)	r   r   r   r   r   r   r   r   r  r6   r6   r6   r7   r     s   r   c                   @  sf   e Zd ZddddZddddZddd	d
ZdddddZdddddZdddddZdS )PageCountTextr   r-   c                 O  s
   d| _ d S r   r   r   r6   r6   r7   r   %  s    zPageCountText.__init__rw   c                 C  s   | j S rx   r   r   r6   r6   r7   r  (  s    zPageCountText.__str__r   c                 C  s   | j jd k	rt| j j| _dS r   )r   Z	pagecountrw   r   r   r6   r6   r7   r   +  s    zPageCountText.__contains__r   r   c                 C  s   | j gS rx   r   r   r6   r6   r7   r   0  s    zPageCountText.splitr   r   c                 C  s   | j s| j S | j | S rx   r   r   r6   r6   r7   r   3  s    zPageCountText.__getitem__r)   r   c                 C  s
   || _ d S rx   r   r   r6   r6   r7   r   6  s    zPageCountText.setFlowableN)	r   r   r   r   r  r   r   r   r   r6   r6   r6   r7   r  $  s   r  )sentencer.   c                 C  s&   |  d}dt|}|d d d S )N )r   joinreversed)r  wordsreverse_sentencer6   r6   r7   r	  :  s    
r	  c                   @  s  e Zd ZdZdVdddddd	d
Zdd Zdd Zdd Zdd Zdd Z	dd Z
dWddZddddZddddZddd d!Zed"d#d$d%d&Zed'd( Zed)d* Zd+d,d-dd.d/d0Zddd1d2Zd3d4 Zd5d6 Zddd7d8ZdXd9d:Zddd;d<Zddd=d>ZdYd@dAZedddBdCZdddDdEdFZdGdH ZdIdJ ZdZdKddLdMZ d[dOdPZ!d\dQdRZ"d]dTdUZ#dS )^r   zZ
    Helper class for creation of reportlab story and container for
    various data.
    rY   r   r  rw   r   r   )r}   debugcapacityr.   c                 C  s  t  tj| _t  t | _g | _g | _g | _g | _	g | _
g | _g | _g | _g | _g | _g | _g | _g | _d | _d | _d | _d | _d | _t | _d| _d| _d| _d| _d| _d| _d| _ d| _!d| _"i | _#i | _$i | _%|| _&t' | _(d| _)t*| _+t,d| _-t.t/d| 0  | _1| j1| _2d| _3d| _4d| _5d | _6|p<d	| _7t88| j7}|j9slt:t;| j7< = | _7t>| j7| _?ddddt*d
| _@d S )Nr   g        rY   FZ12ptr   TZltr	__dummy__)authortitlesubjectkeywordsr   )Acopyr   ZDEFAULT_FONTfontListr   asianFontList
anchorFragZ
anchorName
fragAnchorfragList	fragStackr   r   ZframeStatioundListr   r}   r   Zselect_optionsstoryimageindexing_storyZkeepInFrameIndexnoder   r   Z	tableDataerrra   ZlistCounteruidctrwarncssDefaultTextcssTextlanguager]   r   	imageDatar   r  r(   toc
multiBuildr	   r   r    ZbaseFontSizerv   r
   r   ru   	fragBlock	fragStripforcedirpathCallbackZpathDocumentry   rz   rw   r   absoluter|   r   pathDirectorymeta)r2   r}   r
  r  r~   r6   r6   r7   r   F  sn    
zpisaContext.__init__c                 C  s   |dkrd| j _|| _d S )NrX   T)ru   rX   r(  )r2   	directionr6   r6   r7   setDir  s    zpisaContext.setDirc                 C  s   |  j d7  _ | j S )Nr[   )r  r   r6   r6   r7   r     s    zpisaContext.UIDc                 C  sN   |  }|dr|dd }|dr4|dd }|  j|  d 7  _d S Nz	<![CDATA[	   z<!--   
)strip
startswithr   r2   valuer6   r6   r7   addCSS  s    

zpisaContext.addCSSc                 C  sN   |  }|dr|dd }|dr4|dd }|  j|  d 7  _d S r/  )r4  r5  r  r6  r6   r6   r7   addDefaultCSS  s    

zpisaContext.addDefaultCSSc                 C  s   dd l }tdddgd| _|| | j_tdd t_t| j| _| j	| j_
|| | j_tdd t_| j| j| _| j| j| _tj| j| jd	| _| j| j_d S )
Nr   allprintZpdf)Z	mediumSetc                 S  s   |   S rx   _cr   r6   r6   r7   <lambda>      z&pisaContext.parseCSS.<locals>.<lambda>c                 S  s   |   S rx   r<  r   r6   r6   r7   r>    r?  )Z	userAgentuser)weakrefr   Z
cssBuilderrefr=  propertyr   r   r   r+  r   r   r   r#   r  Z
cssDefaultZCSSCascadeStrategyZ
cssCascader   )r2   rA  r6   r6   r7   parseCSS  s    
 zpisaContext.parseCSSc                 C  s   | j | d S rx   )r  r   )r2   r   r6   r6   r7   addStory  s    zpisaContext.addStoryNc                 C  s.   |d k	r|ng }t  |t  | j | _}|S rx   )r  r  )r2   r  r6   r6   r7   	swapStory  s    zpisaContext.swapStoryr
   r-   c                 C  s   t d|   |jd}t||d t|j|j |jd |_|jpF|j	|_|j|_
|jd krj|jrj|j|_|jd kr|jr|j|_|jd kr|jr|j|_|jd kr|jr|j|_t|j	|j|j|_	|S )Nz	default%d)rW   )r^   ra   rc   rL   r@   rA   rB   rC   rD   rb   re   rJ   rP   rn   rl   rm   rq   ro   rp   rh   rf   rg   rk   ri   rj   rH   rI   rF   rG   rE   g      ?)r
   r   rW   r   maxr>   r?   ra   rs   r^   ZbulletFontSizerm   rl   rb   rp   ro   rg   rf   rj   ri   r   r_   r`   )r2   r   rt   r6   r6   r7   toParagraphStyle  s,    
 %	zpisaContext.toParagraphStylec                 C  s   | j s
d S g }tdD ]T}d| | j jd< t| j | | _tj| ddddddd | | j}|	| q|| j
_| | j
 d | _d S )N   zpdftoclevel%dclassr   )r   r   r   r   T)ZisBlock)r  range
attributesr   Z
CSSCollectZcssAttrZCSS2FragrH  ru   r   r#  ZlevelStylesrE  r  )r2   ZstylesiZpstyler6   r6   r7   addTOC  s(    
zpisaContext.addTOCc                 C  s   | j st | _d| _ d S )NT)r$  r$   r  r   r6   r6   r7   addPageCount  s    zpisaContext.addPageCountr)   r  )flowr.   c                 C  s   t  }||  |S rx   )r  r   )rP  Zpcr6   r6   r7   getPageCount"  s    
zpisaContext.getPageCountc                 C  s   t  }||  |S rx   )r   r   )rP  Zpgnumberr6   r6   r7   addPageNumber(  s    
zpisaContext.addPageNumberc                 C  s   d S rx   r6   )Z_frags_styler6   r6   r7   dumpPara.  s    zpisaContext.dumpParaF)r'  r   )r'  r.   c                C  s  |p| j }d| _ t| j d}| jD ]2}t|j|j|j }t||j|j |}||_q$|sp| j	
 r| jr| j}| |}|jr||_nt|j|j|j |_t|j}d |_|st| j| j dkr| jr| j| jd jdddd n"| j }d|_d|_	| j| | | j| j | t| dr^| d}	t| j	|	}
|
d k	r^|
| _	t| j	|| j| j || jd}|j|_|j|_|j|_|j|_d	|_| j rt!|| j | j"#d
dd}| $| g | _d |_d | _ i | _"| %  d S )NFr   r  rY   )r]   rS   rT   r\   r!  )Zfragsr1   r(  rG  Zalignr   )Zside)&r'  r  r  r    rd   ra   r?   rG  r>   r]   r4  r%  rH  r  r1   lenr  r   r8   ru   r^   rT  hasattr__getattribute__r   r&   r(  rU   rK   rV   rW   ZautoLeadingr  r'   r"  r   rE  	clearFrag)r2   r'  Z
maxLeadingru   r>   r   rt   r1   Zblankr!  Zdetect_language_resultparar6   r6   r7   addPara2  sx    




  



  
zpisaContext.addParac                 C  s   g | _ d| _d| _d S )NTrY   )r  r&  r]   r   r6   r6   r7   rX    s    zpisaContext.clearFragc                 K  s   | j jf |S rx   ru   r8   r2   kwr6   r6   r7   copyFrag  s    zpisaContext.copyFragc                 K  s   | j jf || _ | j S rx   r[  r\  r6   r6   r7   newFrag  s    zpisaContext.newFragc                 C  s<   |j r,|j dr,| j||j dd  f | j| d S )N#r[   )rM   r5  r  r   r  )r2   ru   r6   r6   r7   _appendFrag  s    zpisaContext._appendFragc                 C  sF  | j   }}|jdkr.|jdkr.d|_d|_|jrV|j t |_t|jt d|_n$|jrz|jt	 |_t|jt d|_t
|j|j|j |_|_t|ttfr||_| | d S |dddtdt}|jdkrztd	|D ]}|  j|7  _d
|ksd|kr0| }d|_d|_| | q|dd}td|D ],}| }|dkrbt}||_| | qHqntdt d |D ]}| }|tkrd| _t|_|  j|7  _| | ntdd| d  dd |_t| |j}|r||_| jr$|j |_|jr$d| _|  j|j7  _| | qd S )Nr[   r         ­rY   u   Â r,   prez(\r\n|\n|\r)r3  	z        z(\ )r  ()Tr   r  F)ru   r8   r9   r:   ra   subFractionr;   rG  	sizeDeltasuperFractionr   r^   r_   r`   rs   r   r   r  r]   ra  replaceNBSPrr   rer   Z	lineBreakr'  r  r   r&  lstrip)r2   r]   ru   ZbaseFragZlanguage_checkr6   r6   r7   addFrag  sh      


 zpisaContext.addFragc                 C  s   | j | j |   d S rx   )r  r   ru   r_  r   r6   r6   r7   pushFrag  s    zpisaContext.pushFragc                 C  s   | j  | _d S rx   )r  popru   r   r6   r6   r7   pullFrag  s    zpisaContext.pullFragrI  c                 C  s>   z"t d| j  d | W S  tk
r8   Y dS X d S )Nr  rY   )reprr  r  Ztoxmlr   r   )r2   liner6   r6   r7   _getFragment  s    "zpisaContext._getFragmentc                   C  s   dS )Nr   r6   r6   r6   r6   r7   _getLineNumber  s    zpisaContext._getLineNumber)msgr.   c                 C  s   |d|  d S )Nr3  2   )rv  )r2   rx  r6   r6   r7   context  s    zpisaContext.contextc                 G  sf   |  j d7  _ | jtj|  t|| df z| || W S  t	k
r`   | | Y S X d S Nr[   ry  )
r  r   r   r   ZPML_WARNINGrw  rw   rv  rz  r   r2   rx  r   r6   r6   r7   r     s    zpisaContext.warningc                 G  sf   |  j d7  _ | jtj|  t|| df z| || W S  t	k
r`   | | Y S X d S r{  )
r  r   r   r   Z	PML_ERRORrw  rw   rv  rz  r   r|  r6   r6   r7   error  s    zpisaContext.errorzpisaFileObject | Nonec                 C  s"   |dkrdS t ||p| j| jdS )zReturns a file name or None.N)callback)r   r+  r)  )r2   r   r   r6   r6   r7   r     s    zpisaContext.getFile	helveticac                 C  s   t |ts t|}| d}|D ]X}t|}|  }|| jkr^| j|d}t| n| j	|d}|dk	r$|  S q$| j	|dS )zName of a font.,N)
r   r   rw   r4  r   r   r  r   r!   r  )r2   r   r   r   r   r6   r6   r7   getFontName  s    



zpisaContext.getFontNamec                 C  sF   |d k	r|ng }t || jt | < |D ]}t || jt |< q*d S rx   )rw   r  r   )r2   Zfontnamealiasr   r6   r6   r7   registerFont(  s    zpisaContext.registerFontWinAnsiEncodingc                 C  s  |r|r|}|j }td| t|tr@|dr@|d}t|trP|}ndd |dD }dd |D }|d }d }	t|j	t
r| d	krd
}	nH|d}
d|
d d |
d  }}| }|dkrd
}	n|dkr|}	|	d
krd|||f }|| jkrt| d| nj| }t||}t| dD ]6}dD ]*}d|||f | jkrDt|||| qDq<| |||f n|	dkr|	dkr| }t|d |jd}| }n"| }t|d |jd}| }d|||f }|| jkrt| d| nt||}|j}t| t|||}t| dD ]6}dD ]*}d|||f | jkrRt|||| qRqJ| ||||f nt| d d S )NzLoad font %rr`  c                 s  s   | ]}|r|   V  qd S rx   )r   r4  r   r   r6   r6   r7   	<genexpr>;  s      z'pisaContext.loadFont.<locals>.<genexpr>r  c                 S  s   g | ]}t |qS r6   )rw   r  r6   r6   r7   r   >  s     z(pisaContext.loadFont.<locals>.<listcomp>r   zfont/ttfttf.r  )r  Zttc)afmpfbz%s_%d%dz+Repeated font embed for %s, skip new embed )r   r[   )r  rY   r  z.pfb)basepathz.afmz*Repeated font embed for %s, skip new embedzwrong attributes for <pdf:font>)r   r   r
  r   rw   r5  r4  r   r   instancer   ZgetMimeTyper  r   r  r   ZgetNamedFiler   r   r  r   r   r  ZEmbeddedType1Facer   ZregisterTypeFaceZFont)r2   r   r   encodingr_   r`   fileZ	fontAliasr^   Z	font_typer~   baseNamesuffixZfullFontNamefilenamer  Ztfiler  faceZfontNameOriginalZjustFontr6   r6   r7   r   /  s    



 




 

 
zpisaContext.loadFont)rY   r   r  )N)rY   N)rI  )N)r  )N)r  r   r   )$r   r   r   __doc__r   r.  r   r8  r9  rD  rE  rF  rH  rN  rO  r   rQ  rR  rT  rZ  rX  r^  r_  ra  rp  rq  rs  rv  rw  rz  r   r}  r   r  r  r   r6   r6   r6   r7   r   @  sH   ?	
B

V
H



r   )W
__future__r   r  loggingrn  urllib.parser   ry   pathlibr   typingr   r   Z	reportlabr   Zreportlab.lib.enumsr   Zreportlab.lib.fontsr   Zreportlab.lib.pagesizesr	   Zreportlab.lib.stylesr
   Zreportlab.pdfbaser   Zreportlab.pdfbase.ttfontsr   Zreportlab.platypus.framesr   Zreportlab.pdfgen.canvasr   ImportErrorZreportlab.platypus.paraparserr   r   r   Z	xhtml2pdfr   r   Zxhtml2pdf.filesr   r   r   Zxhtml2pdf.tablesr   Zxhtml2pdf.utilr   r   r   r   r   r   r   r   r    r!   r"   Zxhtml2pdf.w3cr#   Zxhtml2pdf.xhtml2pdf_reportlabr$   r%   r&   r'   r(   Zreportlab.platypus.flowablesr)   r*   ZwarnOnMissingFontGlyphs	getLoggerr   r   rj  ri  rk  rm  r8   rv   r   Z
CSSBuilderr   Z	CSSParserr   r   r  r	  r   r6   r6   r6   r7   <module>   s\   4
V  A