+
    JV-jgF  ã                   ó¸  € ^ RI t ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIt	^ RI
t
Rt ^ RIHt ^ RIHt  ^ RIHt ^ RIHu Ht ]
P0                  P                   tRtRtR	tR
t]]]]/tRtRt . R$Ot!]RR./t"R t#]]"3R lt$R t%]3R lt&R t']R 4       t(R%R lt)]
P0                  PU                  ]RR7      R 4       t+]
P0                  PU                  ]RR7      ]
P0                  PY                  RRR.4      R 4       4       t-]
P0                  PU                  ]RR7      ]
P0                  PY                  R. R&O4      R 4       4       t.]
P0                  PU                  ]RR7      ]
P0                  PY                  R. R'O4      R 4       4       t/]
P0                  PU                  ]RR7      ]
P0                  PY                  R. R(O4      R 4       4       t0]
P0                  PU                  ]'       * R R7      R! 4       t1]
P0                  PU                  ]RR7      R" 4       t2]
P0                  PU                  ]RR7      R# 4       t3R#   ] d	    RtRt ELi ; i  ] d    Rt ELi ; i))é    N)Úcontextmanager)Ú	timedeltaF©ÚInMemoryKmsClientTs   0123456789112345Ú
footer_keys   1234567890123450Úcol_keys   2345678901234501Úcol2_keyÚn_legsÚanimalc            	      óF   € \         P                  ! R . ROR. ROR. RO/4      # )Úyearr
   r   )iä  éæ  éå  r   éã  r   )é   r   é   r   é   éd   )ÚFlamingoÚParrotÚDogÚHorsezBrittle starsÚ	Centipede)ÚpaÚtable© ó    Úv/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/pyarrow/tests/test_dataset_encryption.pyÚcreate_sample_tabler   :   s,   € Ü�8Š8àÒ8ØÒ*Øò ð	
óð r   c           
      óN   € \         P                  ! V R VR\        RR7      RR7      # )FÚ
AES_GCM_V1g      @)Úminutesé   )r   Úplaintext_footerÚcolumn_keysÚencryption_algorithmÚcache_lifetimeÚdata_key_length_bits)ÚpeÚEncryptionConfigurationr   )r   r%   s   &&r   Úcreate_encryption_configr+   K   s,   € Ü×%Ò%ØØØØ)ä ¨Ô-Ø ôð r   c                  ó0   € \         P                  ! R R7      # )i,  )r'   )r)   ÚDecryptionConfigurationr   r   r   Úcreate_decryption_configr.   W   s   € Ü×%Ò%°SÔ9Ð9r   c           
      óž   € \         P                  ! V P                  4        UUu/ uF  w  rWP                  R 4      bK  	  uppR7      # u uppi )zUTF-8)Úcustom_kms_conf)r)   ÚKmsConnectionConfigÚitemsÚdecode)ÚkeysÚkey_nameÚkeys   &  r   Úcreate_kms_connection_configr7   [   sK   € Ü×!Ò!ð "&§¡¤ô
á!-‘�ð —j‘j Ó)Ò)Ù!-ò
ôð ùó
s   ¤A	
c                 ó   € \        V 4      # ©Nr   )Úkms_connection_configurations   &r   Úkms_factoryr;   d   s   € ÜÐ9Ó:Ð:r   c              #   óª   "  € V '       d   R x € R # \         P                  ! WR7      ;_uu_ 4        R x € R R R 4       R #   + '       g   i     R # ; i5i)N©Úmatch)ÚpytestÚraises)ÚsuccessÚ
error_typer>   s   &&&r   Úcond_raisesrC   h   s+   é € çÝä�]Š]˜:×3Ö3Û÷ 4×3×3Ò3üs   ‚.A°?µ
A¿A	Á
	Ac           	      óö  a aa€ V'       dM   \        R/ \        B\        \        /B o\        R/ \        B\        V./B oVP                  R 4      ^ ,          pM\        o\        oRpRVVV 3R llpS P                  pSP                  4        UUUu. uF&  w  rVV F  pVP                  R 4      ^ ,          NK  	  K(  	  ppppV Uu. uF-  pWx9  g   K  Ve   VP                  V R 24      '       d   K+  VNK/  	  p	p\        V4      ^ 8”  g   Q h\        V	4      ^ 8”  g   Q h\        \        /p
SP                  4        UUu/ uF  w  r[V\        8w  g   K  W[bK  	  pppV! W©R4       V! W¨R4       V! W¤R4       V! WÉRR4       V! WÈRR4       V! WÄRR4       \        S4      ^8”  d¢   SP                  4        F�  w  rÞV F‚  pVP                  R 4      ^ ,          pSP                  4        UUu/ uF  w  r[V\        V39   g   K  W[bK  	  pppWò8g  pWŸ.,           pV! VV	R4       V! VVV4       V! VVR4       V! VVR4       K„  	  K�  	  V! SV	R4       V! SVR4       V! SVR4       R# u upppi u upi u uppi u uppi )Ú.NTc           	      óÀ  <€ Sp\        \        S4      p\        4       p\        V4      p\        V 4      p\        P
                  ! \        4      p	\        P                  ! W—V4      p
\        P                  ! W˜V4      p\        P                  P                  4       pVP                  V
R 7      p\        P                  ! 4       pVP!                  R4       \        P"                  ! SRVVVR7       \        P                  P                  4       p\$        P&                  ! \(        RR7      ;_uu_ 4        \        P                  ! RWÎR7       RRR4       \        P*                  ! VR7      p\        P                  P                  VR	7      p\-        V\.        R
R7      ;_uu_ 4        \        P                  ! RWÎR7      p\-        V\.        R
R7      ;_uu_ 4        SP1                  V4      P3                  VP5                  V4      4      '       g   Q h RRR4       RRR4       V	P7                  W†4      p\        P*                  ! VR7      p\        P                  P                  VR	7      p\-        V\.        R
R7      ;_uu_ 4        \        P                  ! RWÎR7      p\-        V\.        R
R7      ;_uu_ 4        SP1                  V4      P3                  VP5                  V4      4      '       g   Q h RRR4       RRR4       R#   + '       g   i     EL¾; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     LV; i  + '       g   i     R# ; i)©Úencryption_configÚ/Úsample_dataset©ÚdataÚbase_dirÚformatÚfile_optionsÚ
filesystemzno decryptionr=   ©rN   rP   N©Údecryption_config©Údefault_fragment_scan_optionszUnknown master key)Údecryption_properties)r+   ÚFOOTER_KEY_NAMEr.   r7   r)   ÚCryptoFactoryr;   ÚdsÚParquetEncryptionConfigÚParquetDecryptionConfigr   ÚdatasetÚParquetFileFormatÚmake_write_optionsÚfsÚ_MockFileSystemÚ
create_dirÚwrite_datasetr?   r@   ÚIOErrorÚParquetFragmentScanOptionsrC   Ú
ValueErrorÚselectÚequalsÚto_tableÚfile_decryption_properties)Ú	read_keysÚread_columnsÚto_table_successÚdataset_successÚ
write_keysrH   rS   Úencrypt_kms_connection_configÚdecrypt_kms_connection_configÚcrypto_factoryÚparquet_encryption_cfgÚparquet_decryption_cfgÚpformatÚwrite_optionsÚmockfsÚpq_scan_optsr\   rV   r%   r4   r   s   &&&&              €€€r   Úassert_decryptsÚ>do_test_dataset_encryption_decryption.<locals>.assert_decrypts}   s§  ø€ ð ˆ
Ü4´_ÀkÓRÐÜ4Ó6ÐÜ(DÀZÓ(PÐ%Ü(DÀYÓ(OÐ%ä×)Ò)¬+Ó6ˆÜ!#×!;Ò!;ØÐ;Ló"
Ðô "$×!;Ò!;ØÐ;Ló"
Ðô
 —*‘*×.Ñ.Ó0ˆØ×2Ñ2Ø4ð 3ó 
ˆô ×#Ò#Ó%ˆØ×Ñ˜#Ôä
×ÒØØ%ØØ&Øõ	
ô —*‘*×.Ñ.Ó0ˆÜ�]Š]œ7Ð*:×;Ö;Ü�JŠJÐ'°ÕK÷ <ô ×4Ò4Ø4ô
ˆô —*‘*×.Ñ.Ø*6ð /ó 
ˆô ˜¬*Ð<P×QÖQÜ—j’jÐ!1¸'ÔUˆGÜÐ-¬zÐAU×VÖVØ—|‘| LÓ1×8Ñ8¸×9IÑ9IÈ,Ó9W×XÒXÐXÑX÷ W÷ Rð !/× IÑ IØ)ó!>Ðä×4Ò4Ø"7ô
ˆô —*‘*×.Ñ.Ø*6ð /ó 
ˆô ˜¬*Ð<P×QÖQÜ—j’jÐ!1¸'ÔUˆGÜÐ-¬zÐAU×VÖVØ—|‘| LÓ1×8Ñ8¸×9IÑ9IÈ,Ó9W×XÒXÐXÑX÷ W÷ RÑQ÷3 <×;Ð;ú÷ W×VÐVú÷ R×QÐQú÷" W×Vú÷ R×QÐQúsT   Ä/K=Æ!3L%Ç8L	ÈL%É?3MÊ28L9	Ë+MË=L	ÌL"Ì	L%Ì%L6	Ì9M	ÍMÍM	Fr   )T)ÚdictÚKEYSÚEXTRA_COL_KEY_NAMEÚEXTRA_COL_KEYÚCOLUMN_KEYSÚsplitÚcolumn_namesr2   Ú
startswithÚlenrW   Ú
FOOTER_KEY)r   Úextra_column_pathÚextra_column_namerx   Úall_column_namesr5   r€   Úcolumn_nameÚencrypted_column_namesÚplaintext_column_namesÚfooter_key_onlyr6   Úcolumn_keys_onlyÚcolumn_key_nameÚcolumn_key_column_namesÚencrypted_column_namerj   Úplaintext_and_one_successÚplaintext_and_oner%   r4   s   f&                 @@r   Ú%do_test_dataset_encryption_decryptionr‘   q   sÝ  ú€ çÜÑB”dÐBÔ1´=ÐAÑBˆÜÑVœ[ÐVÔ-?ÐBSÐATÐ,UÑVˆØ-×3Ñ3°CÓ8¸Õ;ÑäˆÜ!ˆØ Ð÷DYñ DYðN ×)Ñ)Ðà<G×<MÑ<MÔ<Oõ?Ù<OÑ"8 (Û1= +ð *×/Ñ/°Ó4°Q×7Ð7á1=ñ 8Ù<Oð ò ?ñ 2BóUÙ1A +Ø!,Ñ!Jô *ð  1Ò8Ø#4×#?Ñ#?À;À-ÈqÐ@Q×#R÷	 *˜kÙ1Að ð Uô
 Ð%Ó&¨Ô*Ð*Ð*ÜÐ%Ó&¨Ô*Ð*Ð*Ü&¬
Ð3€Oà-1¯Z©Z¬\ô8Ù-9™M˜HØ#¤Ñ6ô &˜šÙ-9ð ñ 8ñ �O¸TÔBÙ�O¸UÔCÙ�O°uÔ=ñ Ð$¸eÀUÔKÙÐ$¸eÀUÔKÙÐ$¸¸uÔEô ˆ;Ó˜!ÔØ8C×8IÑ8IÖ8KÑ4ˆOÛ)@Ð%ð )>×(CÑ(CÀCÓ(HÈÕ(KÐ%ð 37·*±*´,ôPÙ2>¡ Ø (¬_¸oÐ,NÑ Nô +˜Xš]Ù2>ð ñ Pð -BÑ,VÐ)Ø$:Ð=TÕ$TÐ!á 	Ð+AÀ4ÔHÙ 	Ð+<Ð>WÔXÙ 	Ð+AÀ5ÔIÙ 	Ð+;¸UÖCó% *Añ 9Lñ, �DÐ0°$Ô7Ù�DÐ0°$Ô7Ù�DÐ*¨DÖ1ùôm?ùòUùó8ùó4Ps0   Â,I#ÃI*ÃI*Ã1I*Ä<I/ÅI/Ç'I5
Ç=I5
z+Parquet Encryption is not currently enabled)Úreasonc                  ó,   € \        \        4       4       R # r9   )r‘   r   r   r   r   Ú"test_dataset_encryption_decryptionr”   þ   s   € ô *Ô*=Ó*?Ö@r   r‡   Úlistzlist.list.elementc                 óì   € \         P                  ! . RO. RO. ROR.R.R	..\         P                  ! \         P                  ! 4       4      R7      p\	        4       P                  RV4      p\        W 4       R# )
é   ©Útyper•   N)r—   r   é   )r   r   é   )é   é   é	   éÿÿÿÿéþÿÿÿéýÿÿÿ)r   ÚarrayÚlist_Úint32r   Úappend_columnr‘   )r‡   Ú	list_datar   s   &  r   Útest_list_encryption_decryptionr§     sY   € ô
 —’Ú	’Išy¨2¨$°°°r°dÐ;Ü�XŠX”b—h’h“jÓ!ô€Iô  Ó!×/Ñ/°¸	ÓB€Eä)¨%Ö=r   c                 ó  € \         P                  ! \         P                  ! 4       \         P                  ! 4       4      p\         P                  ! RR.RR.RR	.R
.. . .VR7      p\        4       P                  RV4      p\        W04       R# )Úk1r˜   ÚmapN)r©   r—   )Úk2r   )r©   rš   )Úk3r   )r«   r   )r¬   r›   )Úk4rœ   )r   Úmap_Ústringr¤   r¢   r   r¥   r‘   )r‡   Úmap_typeÚmap_datar   s   &   r   Útest_map_encryption_decryptionr²     sv   € ô �wŠw”r—y’y“{¤B§H¢H£JÓ/€HÜ�xŠxà˜	Ð" Y°	Ð$:¸YÈ	Ð<RØˆK˜˜Rð	
ð ô€Hô  Ó!×/Ñ/°°xÓ@€Eä)¨%Ö=r   c                 ó  € R \         P                  ! 4       3R\         P                  ! 4       3.p\         P                  ! V4      p\         P                  ! . ROVR7      p\        4       P                  RV4      p\        W@4       R# )Úf1Úf2r˜   ÚstructN)©r—   Úone©r   Útwo©rš   Úthree©r   Úfour©r   Úfive©r›   Úsix)r   r¤   r¯   r¶   r¢   r   r¥   r‘   )r‡   Ústruct_fieldsÚstruct_typeÚstruct_datar   s   &    r   Ú!test_struct_encryption_decryptionrÆ   (  se   € ð
 œBŸHšH›JÐ'¨$´·	²	³Ð)<Ð=€MÜ—)’)˜MÓ*€KÜ—(’(ÚTØô€Kô  Ó!×/Ñ/°¸+ÓF€Eä)¨%Ö=r   c                 óê  € R \         P                  ! 4       3R\         P                  ! 4       3.p\         P                  ! V4      pRpRpRpRpR	pR
p\         P                  ! \         P                  ! 4       V4      p	^V^V/p
^V/p^V/p^V^V/p\         P
                  ! V	4      pW«.pV.pV.p\         P                  ! VVRVRR.VR7      .p\        4       P                  RV4      p\        VV 4       R# )r´   rµ   Nr˜   Úcolr·   r¹   r»   r½   r¿   rÁ   )
r   r¤   r¯   r¶   r®   r£   r¢   r   r¥   r‘   )r‡   rÃ   rÄ   Ústruct1Ústruct2Ústruct3Ústruct4Ústruct5Ústruct6r°   Úmap1Úmap2Úmap3Úmap4Ú	list_typeÚlist1Úlist2Úlist3r¦   r   s   &                   r   Ú&test_deep_nested_encryption_decryptionr×   8  sö   € ð œBŸHšH›JÐ'¨$´·	²	³Ð)<Ð=€MÜ—)’)˜MÓ*€KØ€GØ€GØ€GØ€GØ€GØ€Gä�wŠw”r—x’x“z ;Ó/€HØˆw˜˜7Ð#€DØˆwˆ<€DØˆwˆ<€DØˆw˜˜7Ð#€Dä—’˜Ó"€IØˆL€EØˆF€EØˆF€EÜ—’˜5 %¨¨u°d¸DÐAÈ	ÔRÐS€IÜÓ!×/Ñ/°°yÓA€Eä)¨%°Ö=r   z'Parquet Encryption is currently enabledc                 óä   € \         P                  P                  4       p \        P                  ! \
        4      ;_uu_ 4        V P                  RR7      pRRR4       R#   + '       g   i     R# ; i)z‰Test write_dataset with ParquetFileFormat and test if an exception is thrown
if you try to set encryption_config using make_write_optionsz
some valuerG   N)r   r\   r]   r?   r@   ÚNotImplementedErrorr^   )rt   Ú_s     r   Ú-test_write_dataset_parquet_without_encryptionrÛ   _  sH   € ô �j‰j×*Ñ*Ó,€Gä	�ŠÔ*×	+Õ	+Ø×&Ñ&¸Ð&ÓFˆ÷ 
,×	+×	+Ò	+ús   ÁAÁA/	c            	     óF  a€  ! R R\         P                  4      oRp \        P                  P	                  \        P
                  ! \        V 4       Uu. uF  p\        P                  ! 4       NK  	  up\        P                  ! 4       R7      .R.R7      p\         P                  ! 4       p\         P                  ! V3R l4      p\         P                  ! RRR./RR	^€R
7      p\        P                  ! WCV4      p\        P                  ! WC\         P                  ! 4       4      p\        P                   ! VR7      p\        P"                  ! VR7      p	V	P%                  VR7      p
VP'                  V4      p\(        P*                  ! 4       pVP-                  R4       Rp\        P.                  ! W-V	W¬R7       VR,           p\0        P2                  ! WëVR7      P5                  4       pW/8X  g   Q h\        P6                  ! WÙVR7      pVP9                  4       pW/8X  g   Q hR# u upi )z9Test encryption and decryption of a large number of rows.c                   óD   a € ] tR tRt o V 3R lR ltV 3R lR ltRtV tR# )Ú;test_large_row_encryption_decryption.<locals>.NoOpKmsClientit  c                ó,   <€ V ^8„  d   QhRS[ RS[RS[ /# )r   Ú	key_bytesrÚ   Úreturn©ÚbytesÚstr)rN   Ú__classdict__s   "€r   Ú__annotate__ÚHtest_large_row_encryption_decryption.<locals>.NoOpKmsClient.__annotate__u  s"   ø€ ÷ 	ñ 	¡eð 	±ð 	¹ñ 	r   c                ó2   € \         P                  ! V4      pV# r9   )Úbase64Ú	b64encode)Úselfrà   rÚ   Úbs   &&& r   Úwrap_keyÚDtest_large_row_encryption_decryption.<locals>.NoOpKmsClient.wrap_keyu  s   € Ü× Ò  Ó+ˆAØˆHr   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[ /# )r   Úwrapped_keyrÚ   rá   râ   )rN   rå   s   "€r   ræ   rç   y  s"   ø€ ÷ 	ñ 	©%ð 	±Cð 	¹Eñ 	r   c                ó2   € \         P                  ! V4      pV# r9   )ré   Ú	b64decode)rë   rð   rÚ   rì   s   &&& r   Ú
unwrap_keyÚFtest_large_row_encryption_decryption.<locals>.NoOpKmsClient.unwrap_keyy  s   € Ü× Ò  Ó-ˆAØˆHr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rí   ró   Ú__static_attributes__Ú__classdictcell__)rå   s   @r   ÚNoOpKmsClientrÞ   t  s   ø‡ € ÷	ð 	÷	ö 	r   rû   r˜   Úfoo)Únamesc                 ó   <€ S! 4       # r9   r   )rÚ   rû   s   &€r   Ú<lambda>Ú6test_large_row_encryption_decryption.<locals>.<lambda>†  s   ø€ ±´r   ÚUNIMPORTANT_KEYTF)r   r%   Údouble_wrappingr$   r(   rR   rT   rG   rI   zlarge-row-test-dataset)rN   rO   rP   z/part-0.parquet©rV   rP   rQ   Ni€  )r)   Ú	KmsClientr   ÚTableÚfrom_arraysr¢   ÚrangeÚrandomÚfloat32r1   rX   r*   rY   rZ   r[   r-   rd   r]   r^   ri   r_   r`   ra   rb   ÚpqÚParquetFileÚreadr\   rh   )Ú	row_countrÚ   r   Ú
kms_configrq   rH   Ú
pqe_configÚ
pqd_configÚscan_optionsÚfile_formatru   ri   rv   ÚpathÚ	file_pathÚ	new_tabler\   rû   s                    @r   Ú$test_large_row_encryption_decryptionr  n  sÛ  ø€ ôœŸ™ô ð €IÜ�H‰H× Ñ Ü	�ŠÜ&+¨IÔ&6Ó7Ñ&6 ŒV�]Š]Ž_Ñ&6Ñ7Ü—’“ô

ð 	ð �'ð	 !ó €Eô ×'Ò'Ó)€JÜ×%Ò%Ô&?Ó@€NÜ×2Ò2Ø$Ø&¨¨Ð0ØØØ ôÐô ×+Ò+ØÐ$5ó€Jô ×+Ò+Ø¤B×$>Ò$>Ó$@ó€Jô ×0Ò0À:ÔN€LÜ×&Ò&À\ÔR€KØ×2Ñ2ÀZÐ2ÓP€MØ!/×!JÑ!JÈ:Ó!VÐä×ÒÓ!€FØ
×Ñ�cÔà#€DÜ×Ò�U¨Ø"/õDð Ð(Õ(€IÜ—’ØØô÷ �dƒfð ð ÔÐÐä�jŠj˜¸fÔE€GØ× Ñ Ó"€IØÔÐÒùòS 8s   ÁHc                  ó
  € \        4       p \        4       p\        4       p\        4       p\        P
                  ! \        4      p\        P                  ! WCV4      p\        P                  ! WCV4      p\        P                  P                  4       pVP                  VR R.R7      p\        P                  ! 4       p	V	P!                  R4       \        P"                  ! V RVVV	R7       \        P$                  ! VR7      p
\        P                  P                  V
R7      p\        P                  ! RWyR7      pVP'                  4        EF¥  pVP)                  W2VP*                  V	4      p\,        P.                  ! VP*                  VV	R	7      ;_uu_ 4       p\1        VP2                  P4                  4       EF,  pVP2                  P7                  V4      pVP9                  ^ 4      P:                  f   Q hVP9                  ^ 4      P:                  P<                  R8X  g   Q hVP9                  ^ 4      P:                  P>                  R8X  g   Q hVP9                  ^4      P:                  f   Q hVP9                  ^4      P:                  P<                  ^8X  g   Q hVP9                  ^4      P:                  P>                  ^d8X  g   Q hVP9                  ^4      P:                  f   EK-  Q h	  R
R
R
4       EK¨  	  R
#   + '       g   i     EK¾  ; i)r   r
   )rH   Úwrite_statisticsrI   rJ   rK   rR   rT   rQ   r  Nr   r   ) r   r+   r.   r7   r)   rX   r;   rY   rZ   r[   r   r\   r]   r^   r_   r`   ra   rb   rd   Úget_fragmentsri   r  r
  r  r  ÚmetadataÚnum_row_groupsÚ	row_groupÚcolumnÚ
statisticsÚminÚmax)r   rH   rS   Úkms_connection_configrq   rr   rs   rt   ru   rv   rw   r\   ÚfragmentrV   Úparquet_fileÚrg_idxr  s                    r   Ú7test_dataset_encryption_with_selected_column_statisticsr%  ¬  sŸ  € ô  Ó!€Eä0Ó2ÐÜ0Ó2ÐÜ8Ó:Ðä×%Ò%¤kÓ2€NÜ×7Ò7ØÐ/@óÐô  ×7Ò7ØÐ/@óÐô �j‰j×*Ñ*Ó,€GØ×.Ñ.Ø0Ø  (Ð+ð /ó €Mô
 ×ÒÓ!€FØ
×Ñ�cÔä×ÒØØ!ØØ"Øõô ×0Ò0Ø0ô€Lô �j‰j×*Ñ*ÈÐ*ÓV€GÜ�jŠjÐ)°'ÔM€Gà×)Ñ)×+ˆØ .× IÑ IØ!°h·m±mÀVó!MÐä�^Š^Ø�M‰MØ"7Ø÷
õ 
ð Ü × 5Ñ 5× DÑ D×E�Ø(×1Ñ1×;Ñ;¸FÓC�	à ×'Ñ'¨Ó*×5Ñ5ÒAÐAÐAØ ×'Ñ'¨Ó*×5Ñ5×9Ñ9¸TÔAÐAÐAØ ×'Ñ'¨Ó*×5Ñ5×9Ñ9¸TÔAÐAÐAà ×'Ñ'¨Ó*×5Ñ5ÒAÐAÐAØ ×'Ñ'¨Ó*×5Ñ5×9Ñ9¸QÔ>Ð>Ð>Ø ×'Ñ'¨Ó*×5Ñ5×9Ñ9¸SÔ@Ð@Ð@à ×'Ñ'¨Ó*×5Ñ5Õ=Ð=Ð=ñ F÷
ò 
ó ,÷
÷ 
ñ 
ús   ÆEK0ËK0Ë0L)r   r
   r   r9   )rª   zmap.key_value.keyzmap.key_value.value)r¶   z	struct.f1z	struct.f2)rÈ   zcol.list.element.key_value.keyz#col.list.element.key_value.value.f1z#col.list.element.key_value.value.f2)4ré   Ú
contextlibr   Údatetimer   r  Ú
pyarrow.fsr_   Úpyarrowr   r?   Úencryption_unavailableÚpyarrow.parquetÚparquetr
  Úpyarrow.datasetr\   rY   ÚImportErrorÚ pyarrow.tests.parquet.encryptionr   Úpyarrow.parquet.encryptionÚ
encryptionr)   ÚmarkÚ
pytestmarkrƒ   rW   ÚCOL_KEYÚCOL_KEY_NAMEr{   r}   r|   ÚCOLUMNSr~   r   r+   r.   r7   r;   rC   r‘   Úskipifr”   Úparametrizer§   r²   rÆ   r×   rÛ   r  r%  r   r   r   Ú<module>r9     sø  ðó$ Ý %Ý Û Ý Û ã àÐ ðÝ Ý ð
"ÝBß+Ð+ð �[‰[× Ñ €
ð !€
Ø€Ø
€Ø€Ø˜ \°7Ð;€Ø#€ØÐ Ú
&€Ø˜h¨Ð1Ð2€òð" )8À[ô 	ò:ð '+ô ò;ð ñó ðôJ2ðZ ‡�×ÑØÐ#Pð ó ñAóðAð ‡�×ÑØÐ#Pð ó ð ‡�×Ñ˜¨Ð1DÐ(EÓFñ>ó Góð>ð ‡�×ÑØØ8ð ó ð ‡�×ÑØÒFóñ>óó	ð>ð ‡�×ÑØÐ#Pð ó ð ‡�×Ñ˜Ò(LÓMñ	>ó Nóð	>ð ‡�×ÑØØ8ð ó ð ‡�×ÑØòóñ>óó	ð>ð4 ‡�×ÑØÔÐ'Pð ó ñ	Góð	Gð ‡�×ÑØÐ#Pð ó ñ8óð8ðv ‡�×ÑØÐ#Pð ó ñ=>óò=>øð_ ô Ø	€BØ	ƒBðûð ô "Ø!Óð"ús"   ¦H: ³I È:I	ÉI	É	IÉI