ó
    6ljî  ã                  óx   • S r SSKJr  SSKJr  SSKrSSKJr  SSKJ	r	  Sr
SS jrSSS	 jjr\S
:X  a  \" 5         gg)u�  Backfill `financebench.documents.page_count` from the PDFs themselves.

The FinanceBench release files carry no page counts, so this reads each
document's PDF from the bucket (through the quber S3 cache) and records its
page count. Run it after `load.py` â€” the loader rebuilds the schema, which
clears the column. A missing PDF logs a warning and leaves the count NULL;
it is never a silent skip.
é    )Úannotations)ÚOptionalN)Úlogger)Údbzqubera-docsc            	     ó6  • SSK Jn   [        R                  " 5        nUR	                  S5      R                  5       nS=p4U H\  u  pV U " S[         SU 35      n[        R                  " U5       nUR                  n	SSS5        UR	                  S	W	U45        US-  nM^     SSS5        [        R                  " S
WW5        X44$ ! , (       d  f       NN= f! [         a(  n
[        R                  " SXVU
5        US-  n Sn
A
MÁ  Sn
A
ff = f! , (       d  f       No= f)zbSet page_count for every document whose PDF is in the bucket.

Returns (updated, missing) counts.
r   )Úresolve_documentzESELECT doc_name, s3_key FROM financebench.documents ORDER BY doc_namezs3://Ú/NzNo page count for {} ({}): {}é   zEUPDATE financebench.documents SET page_count = %s WHERE doc_name = %sz2Page counts: {} documents updated, {} missing PDFs)Úquber.files.cacher   r   ÚconnectÚexecuteÚfetchallÚBUCKETÚpymupdfÚopenÚ
page_countÚ	Exceptionr   ÚwarningÚsuccess)r   ÚconnÚrowsÚupdatedÚmissingÚdoc_nameÚs3_keyÚlocalÚpdfÚnÚexcs              Ú>/home/mande/repo/quber/src/quber/playground/benchmark/pages.pyÚbackfillr!      sÿ   € õ
 3ä	�ŠŒ˜Ø�|‰|ØSó
ç
‰(‹*ð 	ð ÐˆÛ $ÑˆHðÙ(¨5´°¸¸&¸Ð)BÓC�Ü—\’\ %Ô(¨CØŸ™�A÷ )ð �L‰LØWØ�H�ôð �q‰LŠGñ !%÷ 
ô( ‡N‚NÐGÈÐRYÔZØÐÐ÷ )Õ(ûäó Ü—’Ð>ÀÐRUÔVØ˜1‘�Ýûðú÷ 
�úsY   œ*D
Á(CÁ/CÁ<CÂD
Ã
CÃCÃD
ÃCÃ
DÃDÃ<D
ÄDÄD
Ä

Dc                ó   • [        5         g ©N)r!   )Úargvs    r    Úmainr%   5   s   € Ü…Jó    Ú__main__)Úreturnztuple[int, int]r#   )r$   zOptional[list[str]]r(   ÚNone)Ú__doc__Ú
__future__r   Útypingr   r   Úlogurur   Úquber.playgroundr   r   r!   r%   Ú__name__© r&   r    Ú<module>r1      s>   ðñõ #å ã Ý å à	€ôö>ð ˆzÓÙ…Fð r&   