+
    JV-jé” ã                   óÐ  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIHt  ^ RIt^ RIt^ RIt^ RIHtHtHtHt ^ RIHt ^ RIHt  ^ RIHt ^ RIH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t( ]PT                  P<                  t+R t,R	 t-R
 t.R t/R t0R t1R t2 ! R R]!4      t3 ! R R]!4      t4 ! R R]!4      t5 ! R R]54      t6 ! R R]54      t7 ! R R]54      t8 ! R R]!4      t9 ! R R]!4      t: ! R R ]!4      t; ! R! R"]!4      t< ! R# R$]!4      t= ! R% R&]!4      t> ! R' R(]!4      t? ! R) R*]!4      t@ ! R+ R,]!4      tA ! R- R.]"4      tB ! R/ R0]#4      tC ! R1 R2]"4      tD ! R3 R4]#4      tE ! R5 R6]"4      tFR7 tG ! R8 R9]'4      tH ! R: R;]&4      tI ! R< R=]%4      tJ ! R> R?]$4      tK ! R@ RA]!4      tL ! RB RC]%4      tM ! RD RE]$4      tN ! RF RG]!4      tO ! RH RI]$4      tP ! RJ RK]%4      tQ ! RL RM]!4      tR ! RN RO]!4      tS ! RP RQ]%4      tT ! RR RS]'4      tU ! RT RU]&4      tV ! RV RW]%4      tW ! RX RY]'4      tX ! RZ R[]'4      tY ! R\ R]]&4      tZ ! R^ R_]%4      t[ ! R` Ra]$4      t\ ! Rb Rc]!4      t]Rd t^Re t_Rf t`Rg taRh tb]PT                  P                  ]PT                  PÆ                  Ri 4       4       tdRj teRk tfRl tg]PT                  PÐ                  Rm 4       tiRn tjRo tkRp tlRq tmRr tn ! Rs Rt]!4      toRu tpRv tqRw tr]PT                  Pç                  ]Pè                  Rx8H  RyRz7      R{ 4       tu]PT                  PÆ                  R| 4       tvR} twR~ txR tyR€ tzR� t{R‚ t|Rƒ t}R„ t~R… tR† t€]B! R‡Rˆ/R‰7      t�]D! R‡Rˆ/R‰7      t‚]PT                  PÆ                  RŠ 4       tƒ]PT                  Pç                  ]Pè                  Rx8H  R‹Rz7      RŒ 4       t„R� t…RŽ t†R� t‡]J! 4       tˆ]F! 4       t‰R� tŠR‘ t‹R’ tŒR“ t�R” tŽR• t�R– t�]PT                  PÆ                  ]PT                  EP"                  R— 4       4       t’]PT                  EP"                  R˜ 4       t“]PT                  EP"                  R™ 4       t”]PT                  EP"                  Rš 4       t•R› t–Rœ t—R� t˜Rž t™]PT                  P                  RŸ 4       tš]PT                  PÆ                  R  4       t›]PT                  P                  ]PT                  PÆ                  R¡ 4       4       tœR¢ t�R£ tžR¤ tŸR¥ t R¦ t¡R§ t¢R¨ t£R© t¤]PT                  EP"                  Rª 4       t¥R« t¦R¬ t§R­ t¨R® t©R¯ tªR° t«]PT                  EP"                  R± 4       t¬ ! R² R³]!4      t­]PT                  P                  R´ 4       t®Rµ t¯]PT                  EP`                  ]PT                  PÆ                  R¶ 4       4       t±]PT                  EP`                  ]PT                  PÆ                  R· 4       4       t² ! R¸ R¹]54      t³Rº t´]PT                  PÆ                  R» 4       tµR¼ t¶ ! R½ R¾]!4      t·R¿ t¸]PT                  Pç                  ]EPr                  RÀ8H  RÁRz7      RÂ 4       tºRÃ t»RÄ t¼RÅ t½]EP|                  RÆ 4       t¿]PT                  EP�                  RÇRÈRÉ.RÊRË7      RÌ 4       tÁR#   ] d    Rt ELzi ; i  ] d    Rt])])ut t!])])ut"t#])])ut$t%])])ut&t'])t( ELci ; i)Íé    N)Údatetime)ÚIpcReadOptionsÚ	ReadStatsÚis_opentelemetry_enabledÚtobytes)Úfind_free_port)Úutil)Úflight)	ÚFlightClientÚFlightServerBaseÚServerAuthHandlerÚClientAuthHandlerÚServerMiddlewareÚServerMiddlewareFactoryÚClientMiddlewareÚClientMiddlewareFactoryÚFlightCallOptionsc                  ó   € ^ RI p R# )r   N)Úpyarrow.flight)Úpyarrows    Új/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/pyarrow/tests/test_flight.pyÚtest_importr   C   s   € åó    c                 óÆ   € \         P                  P                  R4      '       g   \        R4      h\        P
                  ! \         P                  R,          4      R,          # )z-Get the path to the test resources directory.ÚARROW_TEST_DATAzITest resources not found; set ARROW_TEST_DATA to <repo root>/testing/datar
   )ÚosÚenvironÚgetÚRuntimeErrorÚpathlibÚPath© r   r   Úresource_rootr#   H   sI   € ä�:‰:�>‰>Ð+×,Ò,Üð Ió Jð 	Jä�<Š<œŸ
™
Ð#4Õ5Ó6¸ÕAÐAr   c                ó:  € \        4       pV'       g   R#  W,          P                  R4      ;_uu_ 4       pVP                  4       uuRRR4       #   + '       g   i     R# ; i  \         d,    \	        RY,           R\
        P                  ! 4        24      hi ; i)z)Get the contents of a test resource file.NÚrbzTest resource z< not found; did you initialize the test resource submodule?
)r#   ÚopenÚreadÚFileNotFoundErrorr   Ú	tracebackÚ
format_exc)ÚpathÚrootÚfs   &  r   Úread_flight_resourcer.   P   s   € ä‹?€DßÙð
Ø�k×Ñ ×%Ô%¨Ø—6‘6“8÷ &×%×%Ó%ûäô 
ÜØ˜T�[˜Mð *)Ü)2×)=Ò)=Ó)?Ð(@ðBó
ð 	
ð
ús(   –A$ µAÁ
A$ ÁA!	ÁA$ Á!A$ Á$6Bc            
     óÄ   € R\        R4      R\        P                  ! \        R4      \        R4      R7      \        P                  ! \        R4      \        R4      R7      ./# )	z'Get the paths to test TLS certificates.Ú	root_certzroot-ca.pemÚcertificatesz	cert0.pemz	cert0.key)ÚcertÚkeyz	cert1.pemz	cert1.key)r.   r
   ÚCertKeyPairr"   r   r   Úexample_tls_certsr5   _   s_   € ð 	Ô)¨-Ó8ØÜ×ÒÜ)¨+Ó6Ü(¨Ó5ôô ×ÒÜ)¨+Ó6Ü(¨Ó5ôð	
ðð r   c                  óx   € \         P                  ! . RO4      .p \         P                  P                  V R.R7      # )é
   Ú	some_ints©Únames©iöÿÿÿéûÿÿÿr   é   r7   )ÚpaÚarrayÚTableÚfrom_arrays)Údatas    r   Úsimple_ints_tablerC   p   s4   € ä
�ŠÒ$Ó%ð€Dô �8‰8×Ñ ¨[¨MÐÓ:Ð:r   c                  óî  € \         P                  ! . RO\         P                  ! 4       R7      p \         P                  ! . RO\         P                  ! 4       R7      p\         P                  ! \         P                  P                  . ROV 4      \         P                  P                  ^^.V 4      \         P                  P                  ^ ^.V4      .4      .p\         P                  P                  VR.R7      # )Úfoo©ÚtypeÚ
some_dictsr9   )rE   ÚbazÚquux)rE   rI   rJ   Únew)é   r   N)r>   r?   Úutf8Úchunked_arrayÚDictionaryArrayrA   r@   )Údict_valuesÚnew_dict_valuesrB   s      r   Úsimple_dicts_tablerR   w   s²   € Ü—(’(Ò1¼¿º»	ÔB€KÜ—h’hÒ<Ä2Ç7Â7Ã9ÔM€Oä
×ÒÜ×Ñ×*Ñ*ª<¸ÓEÜ×Ñ×*Ñ*¨A¨q¨6°;Ó?Ü×Ñ×*Ñ*¨A¨q¨6°?ÓCð
ó 	ð€Dô �8‰8×Ñ ¨\¨NÐÓ;Ð;r   c                  ó¤   € \         P                  P                  \         P                  ! . RO4      \         P                  ! . RO4      .RR.R7      # )rE   ÚaÚbr9   )rE   ÚbarrI   Úqux©rL   é   é   é   )r>   r@   rA   r?   r"   r   r   Úmultiple_column_tabler\   „   sB   € Ü�8‰8×Ñ¤§¢Ò*FÓ!GÜ!#§¢ª,Ó!7ð!9à'*¨C jð  ó 2ð 2r   c                   óJ   a a€ ] tR t^Št oRtRtRV 3R lltR tR tRt	Vt
V ;t# )ÚConstantFlightServerz¯A Flight server that always returns the same data.

See ARROW-4796: this server implementation will segfault if Flight
does not properly hold a reference to the Table object.
s   the expected criteriac                óh   <€ \         SV `  ! V3/ VB  R \        R\        R\        /V n        W n        R# )ó   intsó   dictsó   multiN)ÚsuperÚ__init__rC   rR   r\   Útable_factoriesÚoptions)ÚselfÚlocationrf   ÚkwargsÚ	__class__s   &&&,€r   rd   ÚConstantFlightServer.__init__“   s:   ø€ Ü‰Ò˜Ñ, VÒ,ð Ô&ØÔ(ØÔ+ð 
ˆÔð
 Žr   c              #  óÈ   "  € W P                   8X  dN   \        P                  ! \        P                  ! . 4      \        P
                  P                  R 4      . 4      x € R# R# 5i)ú/fooN)ÚCRITERIAr
   Ú
FlightInfor>   ÚschemaÚFlightDescriptorÚfor_path©rg   ÚcontextÚcriterias   &&&r   Úlist_flightsÚ!ConstantFlightServer.list_flights�   sI   é € Ø—}‘}Ô$Ü×#Ò#Ü—	’	˜"“Ü×'Ñ'×0Ñ0°Ó8Øóô ñ %ùs   ‚A A"c                óˆ   € V P                   VP                  ,          ! 4       p\        P                  ! W0P                  R 7      # )©rf   )re   Úticketr
   ÚRecordBatchStreamrf   )rg   rt   rz   Útables   &&& r   Údo_getÚConstantFlightServer.do_get¥   s0   € ð ×$Ñ$ V§]¡]Ö3Ó5ˆÜ×'Ò'¨·|±|ÔDÐDr   )rf   re   ©NN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rn   rd   rv   r}   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©rj   Ú__classdict__s   @@r   r^   r^   Š   s'   ù‡ € ñð (€H÷ò÷Eò Er   r^   c                   óV   a a€ ] tR t^¬t oRtRV 3R lltR tR t]R 4       t	Rt
VtV ;t# )ÚMetadataFlightServerz4A Flight server that numbers incoming/outgoing data.c                ó4   <€ \         SV `  ! R/ VB  Wn        R # ©Nr"   ©rc   rd   rf   ©rg   rf   ri   rj   s   &&,€r   rd   ÚMetadataFlightServer.__init__¯   ó   ø€ Ü‰ÒÑ"˜6Ò"ØŽr   c                óð   € \         P                  ! . RO4      .p\         P                  P                  VR.R7      p\        P
                  ! VP                  V P                  V4      V P                  R7      # )r7   rT   r9   ry   r;   )	r>   r?   r@   rA   r
   ÚGeneratorStreamrp   Únumber_batchesrf   )rg   rt   rz   rB   r|   s   &&&  r   r}   ÚMetadataFlightServer.do_get³   sb   € ä�HŠHÒ(Ó)ð
ˆô —‘×$Ñ$ T°#°Ð$Ó7ˆÜ×%Ò%Ø�L‰LØ×Ñ Ó&Ø—L‘Lô"ð 	"r   c           	     óF  € ^ p. ROpVP                   P                  ^8X  g   Q hV F½  w  rxVP                  \        P                  P                  \        P                  ! We,          .4      .R.4      4      '       g   Q hVf   Q h\        P                  ! RVP                  4       4      w  p	WY8X  g   Q hVP                  \        P                  ! RV4      4       V^,          pK¿  	  VP                   P                  ^8X  g   Q hVP                   P                  ^8X  g   Q hR# )r   rT   Nú<ir;   )ÚstatsÚnum_messagesÚequalsr>   ÚRecordBatchrA   r?   ÚstructÚunpackÚ
to_pybytesÚwriteÚpackÚnum_record_batches)
rg   rt   Ú
descriptorÚreaderÚwriterÚcounterÚexpected_dataÚbatchÚbufÚclient_counters
   &&&&&     r   Údo_putÚMetadataFlightServer.do_put½   sù   € ØˆÚ+ˆØ�|‰|×(Ñ(¨AÔ-Ð-Ð-Û ‰JˆEØ—<‘<¤§¡× :Ñ :Ü—’˜=Õ1Ð2Ó3Ð4Ø�ó!÷ ò ð ð ð ’?Ð"�?Ü$Ÿmšm¨D°#·.±.Ó2BÓC‰OˆNØÔ,Ð,Ð,Ø�L‰LœŸš T¨7Ó3Ô4Ø�q�LŠGñ !ð �|‰|×(Ñ(¨AÔ-Ð-Ð-Ø�|‰|×.Ñ.°!Ô3Ð3Ò3r   c              #  óŠ   "  € \        V P                  4       4       F!  w  r\        P                  ! R V4      pW#3x € K#  	  R# 5i)r—   N)Ú	enumerateÚ
to_batchesrœ   r    )r|   Úidxr§   r¨   s   &   r   r”   Ú#MetadataFlightServer.number_batchesÎ   s7   é € ä# E×$4Ñ$4Ó$6Ö7‰JˆCÜ—+’+˜d CÓ(ˆCØ�*Ôó 8ùs   ‚AAry   ©N)r€   r�   r‚   rƒ   r„   rd   r}   rª   Ústaticmethodr”   r…   r†   r‡   rˆ   s   @@r   r‹   r‹   ¬   s0   ù‡ € Ù>÷ò"ò4ð" ñó ÷ð r   r‹   c                   óL   a a€ ] tR t^Õt oRtRV 3R lltR tR tR tRt	Vt
V ;t# )ÚEchoFlightServerz4A Flight server that returns the last data uploaded.c                óD   <€ \         SV `  ! V3/ VB  R V n        W n        R # r±   )rc   rd   Úlast_messageÚexpected_schema)rg   rh   r·   ri   rj   s   &&&,€r   rd   ÚEchoFlightServer.__init__Ø   s#   ø€ Ü‰Ò˜Ñ, VÒ,Ø ˆÔØ.Ör   c                óB   € \         P                  ! V P                  4      # r±   )r
   r{   r¶   ©rg   rt   rz   s   &&&r   r}   ÚEchoFlightServer.do_getÝ   s   € Ü×'Ò'¨×(9Ñ(9Ó:Ð:r   c                óŽ   € V P                   '       d   V P                   VP                  8X  g   Q hVP                  4       V n        R # r±   )r·   rp   Úread_allr¶   ©rg   rt   r¢   r£   r¤   s   &&&&&r   rª   ÚEchoFlightServer.do_putà   s5   € Ø××ÐØ×'Ñ'¨6¯=©=Ô8Ð8Ð8Ø"ŸO™OÓ-ˆÖr   c                ó   € V F  pK  	  R # r±   r"   )rg   rt   r¢   r£   r¤   Úchunks   &&&&& r   Údo_exchangeÚEchoFlightServer.do_exchangeå   s   € ÛˆEÙó r   )r·   r¶   r   )r€   r�   r‚   rƒ   r„   rd   r}   rª   rÂ   r…   r†   r‡   rˆ   s   @@r   r´   r´   Õ   s!   ù‡ € Ù>÷/ò
;ò.÷
ò r   r´   c                   ó6   a € ] tR t^êt o RtR tR tR tRtV t	R# )ÚEchoStreamFlightServerz6An echo server that streams individual record batches.c                óŒ   € \         P                  ! V P                  P                  V P                  P	                  R R7      4      # )é   ©Úmax_chunksize)r
   r“   r¶   rp   r®   rº   s   &&&r   r}   ÚEchoStreamFlightServer.do_getí   s;   € Ü×%Ò%Ø×Ñ×$Ñ$Ø×Ñ×(Ñ(°tÐ(Ó<ó>ð 	>r   c                ó   € . # r±   r"   ©rg   rt   s   &&r   Úlist_actionsÚ#EchoStreamFlightServer.list_actionsò   ó   € Øˆ	r   c                óŽ   € VP                   R 8X  d0   VP                  4       VP                  4       P                  R4      .# \        h©úwho-am-iúutf-8©rG   Úpeer_identityÚpeerÚencodeÚNotImplementedError©rg   rt   Úactions   &&&r   Ú	do_actionÚ EchoStreamFlightServer.do_actionõ   ó9   € Ø�;‰;˜*Ô$Ø×)Ñ)Ó+¨W¯\©\«^×-BÑ-BÀ7Ó-KÐLÐLÜ!Ð!r   r"   N©
r€   r�   r‚   rƒ   r„   r}   rÍ   rÛ   r…   r†   ©r‰   s   @r   rÅ   rÅ   ê   s   ø‡ € Ù@ò>ò
÷"ð "r   rÅ   c                   ó6   a € ] tR t^ût o RtR tR tR tRtV t	R# )ÚEchoTableStreamFlightServerz,An echo server that streams the whole table.c                ón   € \         P                  ! V P                  P                  V P                  .4      # r±   )r
   r“   r¶   rp   rº   s   &&&r   r}   Ú"EchoTableStreamFlightServer.do_getþ   s0   € Ü×%Ò%Ø×Ñ×$Ñ$Ø×ÑÐó!ð 	!r   c                ó   € . # r±   r"   rÌ   s   &&r   rÍ   Ú(EchoTableStreamFlightServer.list_actions  rÏ   r   c                óŽ   € VP                   R 8X  d0   VP                  4       VP                  4       P                  R4      .# \        hrÑ   rÔ   rÙ   s   &&&r   rÛ   Ú%EchoTableStreamFlightServer.do_action  rÝ   r   r"   NrÞ   rß   s   @r   rá   rá   û   s   ø‡ € Ù6ò!ò
÷"ð "r   rá   c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )Ú'EchoRecordBatchReaderStreamFlightServeri  zCAn echo server that streams the whole table as a RecordBatchReader.c                óŠ   € \         P                  ! V P                  P                  V P                  P	                  4       .4      # r±   )r
   r“   r¶   rp   Ú	to_readerrº   s   &&&r   r}   Ú.EchoRecordBatchReaderStreamFlightServer.do_get  s9   € Ü×%Ò%Ø×Ñ×$Ñ$Ø×Ñ×(Ñ(Ó*Ð+ó-ð 	-r   c                ó   € . # r±   r"   rÌ   s   &&r   rÍ   Ú4EchoRecordBatchReaderStreamFlightServer.list_actions  rÏ   r   c                óŽ   € VP                   R 8X  d0   VP                  4       VP                  4       P                  R4      .# \        hrÑ   rÔ   rÙ   s   &&&r   rÛ   Ú1EchoRecordBatchReaderStreamFlightServer.do_action  rÝ   r   r"   NrÞ   rß   s   @r   ré   ré     s   ø‡ € ÙMò-ò
÷"ð "r   ré   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚGetInfoFlightServeri  z)A Flight server that tests GetFlightInfo.c                ó˜  € \         P                  ! \        P                  ! R \        P                  ! 4       3.4      V\         P
                  ! RR.4      \         P
                  ! R\         P                  P                  RR4      .\        P                  ! R4      P                  \        P                  ! R4      4      R4      .^^*RR	4      # )
rT   r   úgrpc://testÚ	localhosté�  ú2023-04-05T12:34:56.789012345Únszendpoint app metadataTzinfo app metadata)r
   ro   r>   rp   Úint32ÚFlightEndpointÚLocationÚfor_grpc_tcpÚscalarÚcastÚ	timestamp©rg   rt   r¢   s   &&&r   Úget_flight_infoÚ#GetInfoFlightServer.get_flight_info   s¤   € Ü× Ò Ü�IŠI˜œRŸXšX›ZÐ(Ð)Ó*Øä×%Ò% c¨M¨?Ó;Ü×%Ò%ØÜ—_‘_×1Ñ1°+¸tÓDÐEÜ—I’IÐ=Ó>×CÑCÄBÇLÂLÐQUÓDVÓWØ+ó	ðð ØØØó
ð 	
r   c                ód   € V P                  W4      p\        P                  ! VP                  4      # r±   )r  r
   ÚSchemaResultrp   )rg   rt   r¢   Úinfos   &&& r   Ú
get_schemaÚGetInfoFlightServer.get_schema3  s'   € Ø×#Ñ# GÓ8ˆÜ×"Ò" 4§;¡;Ó/Ð/r   r"   N)	r€   r�   r‚   rƒ   r„   r  r  r…   r†   rß   s   @r   rò   rò     s   ø‡ € Ù3ò
÷&0ð 0r   rò   c                   ó:   a € ] tR tRt o Rt]R 4       tR tRtV t	R# )ÚListActionsFlightServeri8  ú'A Flight server that tests ListActions.c                ó6   € RR\         P                  ! RR4      .# )úaction-1zaction-3zmore detail)r  Údescription)zaction-2Ú ©r
   Ú
ActionType)Úclss   &r   Úexpected_actionsÚ(ListActionsFlightServer.expected_actions;  s$   € ð (ØÜ×Ò˜j¨-Ó8ð
ð 	
r   c              #  óB   "  € V P                  4        R j  x€L
  R #  L5ir±   )r  rÌ   s   &&r   rÍ   Ú$ListActionsFlightServer.list_actionsC  s   é € Ø×(Ñ(Ó*×*Ô*ùs   ‚–—r"   N)
r€   r�   r‚   rƒ   r„   Úclassmethodr  rÍ   r…   r†   rß   s   @r   r	  r	  8  s$   ø‡ € Ù1àñ
ó ð
÷+ð +r   r	  c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚListActionsErrorFlightServeriG  r
  c              #  ó   "  € Rx € Rx € R# 5i)r  rE   N)r  r  r"   rÌ   s   &&r   rÍ   Ú)ListActionsErrorFlightServer.list_actionsJ  s   é € ØÒØŒùs   ‚r"   N)r€   r�   r‚   rƒ   r„   rÍ   r…   r†   rß   s   @r   r  r  G  s   ø‡ € Ù1÷ð r   r  c                   óF   a a€ ] tR tRt oRtRV 3R lltR tR tRtVt	V ;t
# )ÚCheckTicketFlightServeriO  zDA Flight server that compares the given ticket to an expected value.c                ó6   <€ \         SV `  ! V3/ VB  Wn        R # r±   )rc   rd   Úexpected_ticket)rg   r  rh   ri   rj   s   &&&,€r   rd   Ú CheckTicketFlightServer.__init__R  s   ø€ Ü‰Ò˜Ñ, VÒ,Ø.Ör   c                ó  € V P                   VP                  8X  g   Q h\        P                  ! . RO\        P                  ! 4       R7      .p\        P
                  P                  VR.R7      p\        P                  ! V4      # )r7   rF   rT   r9   r;   )	r  rz   r>   r?   rù   r@   rA   r
   r{   )rg   rt   rz   Údata1r|   s   &&&  r   r}   ÚCheckTicketFlightServer.do_getV  s`   € Ø×#Ñ# v§}¡}Ô4Ð4Ð4Ü—’Ò-´B·H²H³JÔ?Ð@ˆÜ—‘×$Ñ$ U°3°%Ð$Ó8ˆÜ×'Ò'¨Ó.Ð.r   c                ó0   € VP                  4       V n        R # r±   )r½   r¶   )rg   rt   r¢   r£   s   &&&&r   rª   ÚCheckTicketFlightServer.do_put\  s   € Ø"ŸO™OÓ-ˆÖr   )r  r¶   r±   )r€   r�   r‚   rƒ   r„   rd   r}   rª   r…   r†   r‡   rˆ   s   @@r   r  r  O  s   ù‡ € ÙN÷/ò/÷.ò .r   r  c                   ór   a € ] tR tRt o Rt]P                  ! R]P                  ! 4       3.4      tR tRt	V t
R# )ÚInvalidStreamFlightServeri`  zEA Flight server that tries to return messages with differing schemas.rT   c                óú  € \         P                  ! . RO\         P                  ! 4       R7      .p\         P                  ! . RO\         P                  ! 4       R7      .pVP                  VP                  8w  g   Q h\         P
                  P                  VR.R7      p\         P
                  P                  VR.R7      pVP                  V P                  8X  g   Q h\        P                  ! V P                  WV.4      # )r7   rF   rT   r9   r;   )g      $Àg      Àg        ç      @g      $@)
r>   r?   rù   Úfloat64rG   r@   rA   rp   r
   r“   )rg   rt   rz   r!  Údata2Útable1Útable2s   &&&    r   r}   Ú InvalidStreamFlightServer.do_gete  s²   € Ü—’Ò-´B·H²H³JÔ?Ð@ˆÜ—’Ò7¼b¿jºj»lÔKÐLˆØ�z‰z˜UŸZ™ZÔ'Ð'Ð'Ü—‘×%Ñ% e°C°5Ð%Ó9ˆÜ—‘×%Ñ% e°C°5Ð%Ó9ˆØ�}‰} §¡Ô+Ð+Ð+ä×%Ò% d§k¡k°FÐ3CÓDÐDr   r"   N©r€   r�   r‚   rƒ   r„   r>   rp   rù   r}   r…   r†   rß   s   @r   r&  r&  `  s0   ø‡ € ÙOà�YŠY˜˜bŸhšh›jÐ)Ð*Ó+€F÷Eð Er   r&  c                   ór   a € ] tR tRt o Rt]P                  ! R]P                  ! 4       3.4      tR tRt	V t
R# )ÚNeverSendsDataFlightServerip  z0A Flight server that never actually yields data.rT   c                óÐ  € VP                   R 8X  dŠ   V P                  P                  4       V P                  P                  4       \        P                  P                  \        ^4      .V P                  R7      .p\        P                  ! V P                  V4      # \        P                  ! V P                  \        P                  ! V P                  P                  4       4      4      # )ó
   yield_data©rp   )rz   rp   Úempty_tabler>   r›   rA   Úranger
   r“   Ú	itertoolsÚrepeat)rg   rt   rz   rB   s   &&& r   r}   Ú!NeverSendsDataFlightServer.do_getu  s§   € Ø�=‰=˜MÔ)ð —‘×'Ñ'Ó)Ø—‘×'Ñ'Ó)Ü—‘×*Ñ*¬E°!«H¨:¸d¿k¹kÐ*ÓJðˆDô
 ×)Ò)¨$¯+©+°tÓ<Ð<Ü×%Ò%Ø�K‰Kœ×)Ò)¨$¯+©+×*AÑ*AÓ*CÓDóFð 	Fr   r"   Nr.  rß   s   @r   r0  r0  p  s0   ø‡ € Ù:à�YŠY˜˜bŸhšh›jÐ)Ð*Ó+€F÷Fð Fr   r0  c                   ó@   a € ] tR tRt o RtR tR t]R 4       tRt	V t
R# )ÚSlowFlightServeriƒ  z;A Flight server that delays its responses to test timeouts.c                ó    € \         P                  ! \        P                  ! R \        P                  ! 4       3.4      V P                  4       4      # )rT   )r
   r“   r>   rp   rù   Úslow_streamrº   s   &&&r   r}   ÚSlowFlightServer.do_get†  s:   € Ü×%Ò%¤b§i¢i°#´r·x²x³zÐ1BÐ0CÓ&DØ&*×&6Ñ&6Ó&8ó:ð 	:r   c                ó2   € \         P                  ! R 4       . # )ç      à?)ÚtimeÚsleeprÙ   s   &&&r   rÛ   ÚSlowFlightServer.do_actionŠ  s   € Ü�
Š
�3ŒØˆ	r   c               #  ó&  "  € \         P                  ! . RO\         P                  ! 4       R7      .p \         P                  P	                  V R.R7      x € \
        P                  ! ^
4       \         P                  P	                  V R.R7      x € R# 5i)r7   rF   rT   r9   Nr;   )r>   r?   rù   r@   rA   r@  rA  )r!  s    r   r<  ÚSlowFlightServer.slow_streamŽ  sd   é € ä—’Ò-´B·H²H³JÔ?Ð@ˆÜ�h‰h×"Ñ" 5°°Ð"Ó6Ò6ô 	�
Š
�2ŒÜ�h‰h×"Ñ" 5°°Ð"Ó6Ô6ùs   ‚BBr"   N)r€   r�   r‚   rƒ   r„   r}   rÛ   r²   r<  r…   r†   rß   s   @r   r:  r:  ƒ  s&   ø‡ € ÙEò:òð ñ7ó ö7r   r:  c                   óF   a € ] tR tRt o Rt]R 4       tR tR tR t	Rt
V tR# )	ÚErrorFlightServeri˜  z9A Flight server that uses all the Flight-specific errors.c                 óÞ   € R \         P                  R\         P                  R\         P                  R\         P                  R\         P
                  R\        R\        P                  R\        /# )ÚinternalÚtimedoutÚcancelÚunauthenticatedÚunauthorizedÚnotimplementedÚinvalidr3   )
r
   ÚFlightInternalErrorÚFlightTimedOutErrorÚFlightCancelledErrorÚFlightUnauthenticatedErrorÚFlightUnauthorizedErrorrØ   r>   ÚArrowInvalidÚKeyErrorr"   r   r   Úerror_casesÚErrorFlightServer.error_cases›  sY   € ð œ×2Ñ2Øœ×2Ñ2Ø”f×1Ñ1Øœv×@Ñ@ØœF×:Ñ:ØÔ1Ø”r—‘Ø”8ð	
ð 		
r   c                óÜ   € \         P                  4       pVP                  V9   d   W2P                  ,          ! R 4      hVP                  R8X  d   Rp\        P                  ! R V4      h\
        h)rE   Úprotobufó   this is an error message)rF  rV  rG   r
   rS  rØ   )rg   rt   rÚ   rV  Úerr_msgs   &&&  r   rÛ   ÚErrorFlightServer.do_action¨  sX   € Ü'×3Ñ3Ó5ˆØ�;‰;˜+Ô%ØŸk™kÖ*¨5Ó1Ð1Ø�[‰[˜JÔ&Ø1ˆGÜ×0Ò0°¸Ó@Ð@Ü!Ð!r   c              #  óÌ   "  € \         P                  ! \        P                  ! . 4      \         P                  P                  R 4      . 4      x € \         P                  ! R4      h5i)rm   rE   )r
   ro   r>   rp   rq   rr   rO  rs   s   &&&r   rv   ÚErrorFlightServer.list_flights±  sM   é € Ü×ÒÜ�IŠI�b‹MÜ×#Ñ#×,Ñ,¨VÓ4Øó
ò 	
ô
 ×(Ò(¨Ó/Ð/ùs   ‚A"A$c                óà  € VP                   R 8X  d   \        P                  ! R4      hVP                   R8X  d   \        P                  ! R4      hVP                   R8X  d   \        P                  ! R4      hVP                   R8X  d   \        P
                  ! R4      hVP                   R8X  d   \        P                  ! R4      hVP                   R8X  d   Rp\        P                  ! RV4      hR# )	s   internalrE   s   timedouts   cancels   unauthenticateds   unauthorizeds   protobufrZ  N)Úcommandr
   rO  rP  rQ  rR  rS  )rg   rt   r¢   r£   r¤   r[  s   &&&&& r   rª   ÚErrorFlightServer.do_put¹  sÉ   € Ø×Ñ Ô,Ü×,Ò,¨UÓ3Ð3Ø×Ñ ;Ô.Ü×,Ò,¨UÓ3Ð3Ø×Ñ 9Ô,Ü×-Ò-¨eÓ4Ð4Ø×ÑÐ#5Ô5Ü×3Ò3°EÓ:Ð:Ø×Ñ ?Ô2Ü×0Ò0°Ó7Ð7Ø×Ñ ;Ô.Ø1ˆGÜ×0Ò0°¸Ó@Ð@ñ /r   r"   N)r€   r�   r‚   rƒ   r„   r²   rV  rÛ   rv   rª   r…   r†   rß   s   @r   rF  rF  ˜  s0   ø‡ € ÙCàñ

ó ð

ò"ò0÷Að Ar   rF  c                   óX   a a€ ] tR tRt oRtR
V 3R lltR tR tR tR t	R t
R	tVtV ;t# )ÚExchangeFlightServeriÉ  z A server for testing DoExchange.c                ó4   <€ \         SV `  ! R/ VB  Wn        R # r�   rŽ   r�   s   &&,€r   rd   ÚExchangeFlightServer.__init__Ì  r‘   r   c                ó  € VP                   P                  ^ 8X  g   Q hVP                  \        P                  P
                  8w  d   \        P                  ! R4      hVP                  R8X  d   V P                  WV4      # VP                  R8X  d   V P                  WV4      # VP                  R8X  d   V P                  WV4      # VP                  R8X  d   V P                  WV4      # \        P                  ! RVP                   24      h)r   z!Must provide a command descriptoró   echoó   getó   putó	   transformzUnknown command: )r˜   r™   Údescriptor_typer
   ÚDescriptorTypeÚCMDr>   rT  r`  Úexchange_echoÚexchange_do_getÚexchange_do_putÚexchange_transformr¾   s   &&&&&r   rÂ   Ú ExchangeFlightServer.do_exchangeÐ  sê   € Ø�|‰|×(Ñ(¨AÔ-Ð-Ð-Ø×%Ñ%¬×)>Ñ)>×)BÑ)BÔBÜ—/’/Ð"EÓFÐFØ×Ñ 7Ô*Ø×%Ñ% g°vÓ>Ð>Ø×Ñ 6Ô)Ø×'Ñ'¨¸Ó@Ð@Ø×Ñ 6Ô)Ø×'Ñ'¨¸Ó@Ð@Ø×Ñ <Ô/Ø×*Ñ*¨7¸FÓCÐCä—/’/Ø# J×$6Ñ$6Ð#7Ð8ó:ð :r   c                óà   € \         P                  P                  \         P                  ! \	        ^ R4      4      .R.R7      pVP                  VP                  4       VP                  V4       R# )úEmulate DoGet with DoExchange.rT   r9   Né (  )r>   r@   rA   r?   r5  Úbeginrp   Úwrite_table)rg   rt   r£   r¤   rB   s   &&&& r   ro  Ú$ExchangeFlightServer.exchange_do_getà  sX   € ä�x‰x×#Ñ#Ü�HŠH”U˜1˜iÓ(Ó)ð%
à�ð $ó ˆð 	�‰�T—[‘[Ô!Ø×Ñ˜4Ö r   c                óD  € ^ pV FQ  pVP                   '       g   \        P                  ! R4      hVP                  P                  ^ 8w  g   Q hV^,          pKS  	  VP                  P
                  V8X  g   Q hVP                  \        V4      P                  R4      4       R# )úEmulate DoPut with DoExchange.zAll chunks must have data.rÓ   N)	rB   r>   rT  r˜   r™   r¡   Úwrite_metadataÚstrr×   )rg   rt   r£   r¤   Únum_batchesrÁ   s   &&&&  r   rp  Ú$ExchangeFlightServer.exchange_do_putè  s„   € àˆÛˆEØ—:—:�:Ü—o’oÐ&BÓCÐCØ—<‘<×,Ñ,°Ô1Ð1Ð1Ø˜1ÕŠKñ	 ð
 �|‰|×.Ñ.°+Ô=Ð=Ð=Ø×Ñœc +Ó.×5Ñ5°gÓ>Ö?r   c                óŒ  € VP                   P                  ^ 8X  g   Q hRpV EF  pV'       gF   VP                  '       d4   VP                  VP                  P                  V P
                  R7       RpVP                  '       d;   VP                  '       d)   VP                  VP                  VP                  4       K�  VP                  '       d   VP                  VP                  4       KÌ  VP                  '       d<   VP                   P                  ^ 8w  g   Q hVP                  VP                  4       EK  Q R4       h	  R# )zRun a simple echo server.Fry   TzShould not happenN)
r˜   r™   rB   rv  rp   rf   Úapp_metadataÚwrite_with_metadatar{  Úwrite_batch)rg   rt   r£   r¤   ÚstartedrÁ   s   &&&&  r   rn  Ú"ExchangeFlightServer.exchange_echoó  sã   € à�|‰|×(Ñ(¨AÔ-Ð-Ð-ØˆÜˆEß˜uŸzŸz˜zØ—‘˜UŸZ™Z×.Ñ.¸¿¹�ÔEØ�Ø×!×!Ð! e§j§j jØ×*Ñ*¨5¯:©:°u×7IÑ7IÖJØ×#×#Ð#Ø×%Ñ% e×&8Ñ&8Ö9Ø——�Ø—|‘|×0Ñ0°AÔ5Ð5Ð5Ø×"Ñ" 5§:¡:×.à1Ð1Ó1�uó r   c                óÖ  € VP                   P                  ^ 8X  g   Q hVP                   FX  p\        P                  P                  VP                  4      '       d   K4  \        P                  ! R\        V4      ,           4      h	  VP                  4       pVP                   P                  ^ 8w  g   Q h^ .VP                  ,          pV F9  p\        V4       F'  w  r‰Wh;;,          V	P                  4       ,          uu&   K)  	  K;  	  \        P                  P                  \        P                  ! V4      .R.R7      p
VP!                  V
P                  4       VP#                  V
4       R# )zSum rows in an uploaded table.zInvalid field: Úsumr9   N)r˜   r™   rp   r>   ÚtypesÚ
is_integerrG   rT  Úreprr½   Únum_rowsr­   Úas_pyr@   rA   r?   rv  rw  )rg   rt   r£   r¤   Úfieldr|   ÚsumsÚcolumnÚrowÚvalueÚresults   &&&&       r   rq  Ú'ExchangeFlightServer.exchange_transform  s  € à�|‰|×(Ñ(¨AÔ-Ð-Ð-Ø—]”]ˆEÜ—8‘8×&Ñ& u§z¡z×2Ô2Ü—o’oÐ&7¼$¸u»+Õ&EÓFÐFñ #ð —‘Ó!ˆØ�|‰|×(Ñ(¨AÔ-Ð-Ð-Øˆs�U—^‘^Õ#ˆÛˆFÜ'¨Ö/‘
�Ø—	˜UŸ[™[›]Õ*•	ó 0ñ ô —‘×%Ñ%¤r§x¢x°£~Ð&6¸u¸gÐ%ÓFˆØ�‰�V—]‘]Ô#Ø×Ñ˜6Ö"r   ry   r±   )r€   r�   r‚   rƒ   r„   rd   rÂ   ro  rp  rn  rq  r…   r†   r‡   rˆ   s   @@r   rc  rc  É  s,   ù‡ € Ù*÷ò:ò !ò	@ò2÷$#ò #r   rc  c                   óB   a a€ ] tR tRt oRtV 3R ltR tR tRtVt	V ;t
# )ÚHttpBasicServerAuthHandleri  ú7An example implementation of HTTP basic authentication.c                ó0   <€ \         SV `  4        Wn        R # r±   ©rc   rd   Úcreds©rg   r˜  rj   s   &&€r   rd   Ú#HttpBasicServerAuthHandler.__init__  ó   ø€ Ü‰ÑÔØŽ
r   c                ó’  € VP                  4       p\        P                  P                  V4      pVP                  V P
                  9  d   \        P                  ! R 4      hV P
                  VP                  ,          VP                  8w  d   \        P                  ! R4      hVP                  \        VP                  4      4       R# )úunknown userzwrong passwordN)
r'   r
   Ú	BasicAuthÚdeserializeÚusernamer˜  rR  ÚpasswordrŸ   r   )rg   ÚoutgoingÚincomingr¨   Úauths   &&&  r   ÚauthenticateÚ'HttpBasicServerAuthHandler.authenticate  s„   € Ø�m‰m‹oˆÜ×Ñ×+Ñ+¨CÓ0ˆØ�=‰= §
¡
Ô*Ü×3Ò3°NÓCÐCØ�:‰:�d—m‘mÕ$¨¯©Ô5Ü×3Ò3Ð4DÓEÐEØ�‰”w˜tŸ}™}Ó-Ö.r   c                óŽ   € V'       g   \         P                  ! R 4      hWP                  9  d   \         P                  ! R4      hV# )ztoken not providedr�  )r
   rR  r˜  ©rg   Útokens   &&r   Úis_validÚ#HttpBasicServerAuthHandler.is_valid&  s7   € ßÜ×3Ò3Ð4HÓIÐIØŸ
™
Ô"Ü×3Ò3°NÓCÐCØˆr   ©r˜  ©r€   r�   r‚   rƒ   r„   rd   r¥  rª  r…   r†   r‡   rˆ   s   @@r   r”  r”    s   ù‡ € ÙAõò/÷ò r   r”  c                   óB   a a€ ] tR tRt oRtV 3R ltR tR tRtVt	V ;t
# )ÚHttpBasicClientAuthHandleri.  r•  c                óh   <€ \         SV `  4        \        P                  ! W4      V n        R V n        R # r±   )rc   rd   r
   rž  Ú
basic_authr©  ©rg   r   r¡  rj   s   &&&€r   rd   Ú#HttpBasicClientAuthHandler.__init__1  s'   ø€ Ü‰ÑÔÜ ×*Ò*¨8Ó>ˆŒØˆŽ
r   c                ó†   € V P                   P                  4       pVP                  V4       VP                  4       V n        R # r±   )r±  Ú	serializerŸ   r'   r©  )rg   r¢  r£  r¤  s   &&& r   r¥  Ú'HttpBasicClientAuthHandler.authenticate6  s-   € Ø�‰×(Ñ(Ó*ˆØ�‰�tÔØ—]‘]“_ˆŽ
r   c                ó   € V P                   # r±   ©r©  ©rg   s   &r   Ú	get_tokenÚ$HttpBasicClientAuthHandler.get_token;  ó   € Ø�z‰zÐr   )r±  r©  ©r€   r�   r‚   rƒ   r„   rd   r¥  rº  r…   r†   r‡   rˆ   s   @@r   r¯  r¯  .  s   ù‡ € ÙAõò
%÷
ò r   r¯  c                   óB   a a€ ] tR tRt oRtV 3R ltR tR tRtVt	V ;t
# )ÚTokenServerAuthHandleri?  ú:An example implementation of authentication via handshake.c                ó0   <€ \         SV `  4        Wn        R # r±   r—  r™  s   &&€r   rd   ÚTokenServerAuthHandler.__init__B  r›  r   c                ó  € VP                  4       pVP                  4       pW0P                  9   dG   V P                  V,          V8X  d/   VP                  \        P                  ! R V,           4      4       R# \
        P                  ! R4      h)ó   secret:zinvalid username/passwordN)r'   r˜  rŸ   Úbase64Ú	b64encoder
   rR  )rg   r¢  r£  r   r¡  s   &&&  r   r¥  Ú#TokenServerAuthHandler.authenticateF  sd   € Ø—=‘=“?ˆØ—=‘=“?ˆØ—z‘zÔ! d§j¡j°Õ&:¸hÔ&FØ�N‰Nœ6×+Ò+¨J¸Õ,AÓBÖCä×3Ò3Ø+ó-ð -r   c                óš   € \         P                  ! V4      pVP                  R 4      '       g   \        P                  ! R4      hVR,          # )rÄ  zinvalid token:é   NN)rÅ  Ú	b64decodeÚ
startswithr
   rR  r¨  s   &&r   rª  ÚTokenServerAuthHandler.is_validO  s>   € Ü× Ò  Ó'ˆØ×Ñ 
×+Ò+Ü×3Ò3°OÓDÐDØ�R�yÐr   r¬  r­  rˆ   s   @@r   r¿  r¿  ?  s   ù‡ € ÙDõò-÷ò r   r¿  c                   óB   a a€ ] tR tRt oRtV 3R ltR tR tRtVt	V ;t
# )ÚTokenClientAuthHandleriV  rÀ  c                óJ   <€ \         SV `  4        Wn        W n        R V n        R# )r   N)rc   rd   r   r¡  r©  r²  s   &&&€r   rd   ÚTokenClientAuthHandler.__init__Y  s   ø€ Ü‰ÑÔØ ŒØ ŒØˆŽ
r   c                óœ   € VP                  V P                  4       VP                  V P                  4       VP                  4       V n        R # r±   )rŸ   r   r¡  r'   r©  ©rg   r¢  r£  s   &&&r   r¥  Ú#TokenClientAuthHandler.authenticate_  s/   € Ø�‰�t—}‘}Ô%Ø�‰�t—}‘}Ô%Ø—]‘]“_ˆŽ
r   c                ó   € V P                   # r±   r¸  r¹  s   &r   rº  Ú TokenClientAuthHandler.get_tokend  r¼  r   )r¡  r©  r   r½  rˆ   s   @@r   rÎ  rÎ  V  s   ù‡ € ÙDõò%÷
ò r   rÎ  c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚNoopAuthHandlerih  zA no-op auth handler.c                ó   € R# )zDo nothing.Nr"   rÒ  s   &&&r   r¥  ÚNoopAuthHandler.authenticatek  s   ‚ r   c                ó   € R# )z>
Returning an empty string.
Returning None causes Type error.
r  r"   r¨  s   &&r   rª  ÚNoopAuthHandler.is_validn  s   € ñ
 r   r"   N)	r€   r�   r‚   rƒ   r„   r¥  rª  r…   r†   rß   s   @r   r×  r×  h  s   ø‡ € Ùò÷ð r   r×  c                ó„   € V  F9  pVP                  4       VP                  4       8X  g   K(  V P                  V4      u # 	  R# )zXLookup the value of given key in the given headers.
The key lookup is case-insensitive.
N)Úlowerr   )ÚheadersÚ
lookup_keyr3   s   && r   Úcase_insensitive_header_lookuprà  v  s4   € ó ˆØ�9‰9‹;˜*×*Ñ*Ó,Ö,Ø—;‘;˜sÓ#Ò#ó r   c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )Ú!ClientHeaderAuthMiddlewareFactoryi  z@ClientMiddlewareFactory that creates ClientAuthHeaderMiddleware.c                ó   € . V n         R # r±   ©Úcall_credentialr¹  s   &r   rd   Ú*ClientHeaderAuthMiddlewareFactory.__init__‚  s
   € Ø!ˆÖr   c                ó   € \        V 4      # r±   )ÚClientHeaderAuthMiddleware©rg   r  s   &&r   Ú
start_callÚ,ClientHeaderAuthMiddlewareFactory.start_call…  s   € Ü)¨$Ó/Ð/r   c                ó   € Wn         R # r±   rä  )rg   rå  s   &&r   Úset_call_credentialÚ5ClientHeaderAuthMiddlewareFactory.set_call_credentialˆ  s   € Ø.Ör   rä  N)
r€   r�   r‚   rƒ   r„   rd   rê  rí  r…   r†   rß   s   @r   râ  râ    s   ø‡ € ÙJò"ò0÷/ð /r   râ  c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )rè  iŒ  a™  
ClientMiddleware that extracts the authorization header
from the server.

This is an example of a ClientMiddleware that can extract
the bearer token authorization header from a HTTP header
authentication enabled server.

Parameters
----------
factory : ClientHeaderAuthMiddlewareFactory
    This factory is used to set call credentials if an
    authorization header is found in the headers from the server.
c                ó   € Wn         R # r±   ©Úfactory©rg   rò  s   &&r   rd   Ú#ClientHeaderAuthMiddleware.__init__œ  ó   € ØŽr   c                ó˜   € \        VR 4      pV'       d6   V P                  P                  RV^ ,          P                  R4      .4       R# R# )ÚAuthorizationó   authorizationrÓ   N)rà  rò  rí  r×   )rg   rÞ  Úauth_headers   && r   Úreceived_headersÚ+ClientHeaderAuthMiddleware.received_headersŸ  sB   € Ü4°W¸oÓNˆßØ�L‰L×,Ñ,Ø Ø˜A•×%Ñ% gÓ.ð.0ö 1ñ r   rñ  N)	r€   r�   r‚   rƒ   r„   rd   rú  r…   r†   rß   s   @r   rè  rè  Œ  s   ø‡ € ñò÷1ð 1r   rè  c                   ó*   a € ] tR tRt o RtR tRtV tR# )Ú!HeaderAuthServerMiddlewareFactoryi§  z)Validates incoming username and password.c                óþ  € \        VR 4      pV^ ,          P                  R4      pRpRpV^ ,          R8X  ds   \        P                  ! V^,          4      pVP	                  R4      P                  R4      pV^ ,          R8X  d   V^,          R8X  g   \
        P                  ! V4      hR	pMKV^ ,          R
8X  d(   V^,          pVR	8X  g   \
        P                  ! V4      hM\
        P                  ! V4      h\        V4      # )r÷  Ú r  zInvalid credentialsÚBasicrÓ   Ú:Útestr¡  Ú	token1234ÚBearer)rà  ÚsplitrÅ  rÊ  Údecoder
   rR  ÚHeaderAuthServerMiddleware)	rg   r  rÞ  rù  Úvaluesr©  Úerror_messageÚdecodedÚpairs	   &&&      r   rê  Ú,HeaderAuthServerMiddlewareFactory.start_callª  sé   € Ü4ØØó
ˆð ˜Q•×%Ñ% cÓ*ˆØˆØ-ˆà�!�9˜ÔÜ×&Ò& v¨a¥yÓ1ˆGØ—>‘> 'Ó*×0Ñ0°Ó5ˆDØ˜•G˜vÔ%¨$¨q­'°ZÔ*?Ü×7Ò7¸ÓFÐFØ‰EØ�A�Y˜(Ô"Ø˜1•IˆEØ˜KÔ'Ü×7Ò7¸ÓFÐFð (ô ×3Ò3°MÓBÐBä)¨%Ó0Ð0r   r"   N©r€   r�   r‚   rƒ   r„   rê  r…   r†   rß   s   @r   rý  rý  §  s   ø‡ € Ù3÷1ð 1r   rý  c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r  iÃ  zBA ServerMiddleware that transports incoming username and password.c                ó   € Wn         R # r±   r¸  r¨  s   &&r   rd   Ú#HeaderAuthServerMiddleware.__init__Æ  s   € ØŽ
r   c                ó,   € R RV P                   ,           /# )ÚauthorizationzBearer r¸  r¹  s   &r   Úsending_headersÚ*HeaderAuthServerMiddleware.sending_headersÉ  s   € Ø ¨T¯Z©ZÕ!7Ð8Ð8r   r¸  N©	r€   r�   r‚   rƒ   r„   rd   r  r…   r†   rß   s   @r   r  r  Ã  s   ø‡ € ÙLò÷9ð 9r   r  c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚHeaderAuthFlightServeriÍ  z<A Flight server that tests with basic token authentication. c                óè   € VP                  R 4      pV'       dE   \        VP                  4       R4      pVP                  R4      pV^,          P	                  R4      .# \
        P                  ! R4      h)r¤  r÷  rÿ  rÓ   zNo token auth middleware found.)Úget_middlewarerà  r  r  r×   r
   rR  )rg   rt   rÚ   Ú
middlewarerù  r  s   &&&   r   rÛ   Ú HeaderAuthFlightServer.do_actionÐ  sk   € Ø×+Ñ+¨FÓ3ˆ
ßÜ8Ø×*Ñ*Ó,¨oó?ˆKà ×&Ñ& sÓ+ˆFØ˜1•I×$Ñ$ WÓ-Ð.Ð.Ü×/Ò/Ø-ó/ð 	/r   r"   N©r€   r�   r‚   rƒ   r„   rÛ   r…   r†   rß   s   @r   r  r  Í  s   ø‡ € ÙF÷/ð /r   r  c                   ó*   a € ] tR tRt o RtR tRtV tR# )Ú'ArbitraryHeadersServerMiddlewareFactoryiÛ  z<A ServerMiddlewareFactory that transports arbitrary headers.c                ó   € \        V4      # r±   )Ú ArbitraryHeadersServerMiddleware©rg   r  rÞ  s   &&&r   rê  Ú2ArbitraryHeadersServerMiddlewareFactory.start_callÞ  s   € Ü/°Ó8Ð8r   r"   Nr  rß   s   @r   r  r  Û  s   ø‡ € ÙF÷9ð 9r   r  c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r   iâ  z5A ServerMiddleware that transports arbitrary headers.c                ó   € Wn         R # r±   ©r£  )rg   r£  s   &&r   rd   Ú)ArbitraryHeadersServerMiddleware.__init__å  s   € Ø Žr   c                ó   € V P                   # r±   r%  r¹  s   &r   r  Ú0ArbitraryHeadersServerMiddleware.sending_headersè  ó   € Ø�}‰}Ðr   r%  Nr  rß   s   @r   r   r   â  s   ø‡ € Ù?ò!÷ð r   r   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚArbitraryHeadersFlightServeriì  z6A Flight server that tests multiple arbitrary headers.c                ó  € VP                  R 4      pV'       d\   VP                  4       p\        VR4      p\        VR4      pV^ ,          P                  R4      pV^ ,          P                  R4      pWx.# \        P
                  ! R4      h)úarbitrary-headersztest-header-1ztest-header-2rÓ   zNo headers middleware found)r  r  rà  r×   r
   ÚFlightServerError)	rg   rt   rÚ   r  rÞ  Úheader_1Úheader_2Úvalue1Úvalue2s	   &&&      r   rÛ   Ú&ArbitraryHeadersFlightServer.do_actionï  s‹   € Ø×+Ñ+Ð,?Ó@ˆ
ßØ ×0Ñ0Ó2ˆGÜ5ØØóˆHô 6ØØóˆHð ˜a•[×'Ñ'¨Ó0ˆFØ˜a•[×'Ñ'¨Ó0ˆFØÐ#Ð#Ü×&Ò&Ð'DÓEÐEr   r"   Nr  rß   s   @r   r+  r+  ì  s   ø‡ € Ù@÷Fð Fr   r+  c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚHeaderServerMiddlewarei  z/Expose a per-call value to the RPC method body.c                ó   € Wn         R # r±   ©Úspecial_value)rg   r8  s   &&r   rd   ÚHeaderServerMiddleware.__init__  s   € Ø*Ör   r7  N)r€   r�   r‚   rƒ   r„   rd   r…   r†   rß   s   @r   r5  r5    s   ø‡ € Ù9÷+ð +r   r5  c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚHeaderServerMiddlewareFactoryi  z:Expose a per-call hard-coded value to the RPC method body.c                ó   € \        R 4      # )zright value)r5  r!  s   &&&r   rê  Ú(HeaderServerMiddlewareFactory.start_call  s   € Ü% mÓ4Ð4r   r"   Nr  rß   s   @r   r;  r;    s   ø‡ € ÙD÷5ð 5r   r;  c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚHeaderFlightServeri  z(Echo back the per-call hard-coded value.c                óp   € VP                  R 4      pV'       d   VP                  P                  4       .# R.# )r  r   )r  r8  r×   )rg   rt   rÚ   r  s   &&& r   rÛ   ÚHeaderFlightServer.do_action  s4   € Ø×+Ñ+¨FÓ3ˆ
ßØ×,Ñ,×3Ñ3Ó5Ð6Ð6Øˆuˆr   r"   Nr  rß   s   @r   r?  r?    s   ø‡ € Ù2÷ð r   r?  c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚMultiHeaderFlightServeri  ú8Test sending/receiving multiple (binary-valued) headers.c                ór   € VP                  R 4      p\        VP                  4      P                  R4      pV.# )r  rÓ   )r  r‰  Úclient_headersr×   )rg   rt   rÚ   r  rÞ  s   &&&  r   rÛ   Ú!MultiHeaderFlightServer.do_action  s5   € Ø×+Ñ+¨FÓ3ˆ
Ü�z×0Ñ0Ó1×8Ñ8¸ÓAˆØˆyÐr   r"   Nr  rß   s   @r   rC  rC    s   ø‡ € ÙB÷ð r   rC  c                   ó*   a € ] tR tRt o RtR tRtV tR# )Ú$SelectiveAuthServerMiddlewareFactoryi"  z1Deny access to certain methods based on a header.c                ó  € VP                   \        P                  P                  8X  d   R # VP	                  R4      pV'       g   \        P
                  ! R4      hV^ ,          pVR8w  d   \        P
                  ! R4      h\        V4      # )Núx-auth-tokenzNo tokenr¡  zInvalid token)Úmethodr
   ÚFlightMethodÚLIST_ACTIONSr   rR  r5  )rg   r  rÞ  r©  s   &&& r   rê  Ú/SelectiveAuthServerMiddlewareFactory.start_call%  sl   € Ø�;‰;œ&×-Ñ-×:Ñ:Ô:áà—‘˜NÓ+ˆßÜ×3Ò3°JÓ?Ð?à�a•ˆØ�JÔÜ×3Ò3°OÓDÐDä% eÓ,Ð,r   r"   Nr  rß   s   @r   rI  rI  "  s   ø‡ € Ù;÷-ð -r   rI  c                   ó&   a € ] tR tRt o R tRtV tR# )Ú$SelectiveAuthClientMiddlewareFactoryi5  c                ó   € \        4       # r±   )ÚSelectiveAuthClientMiddlewareré  s   &&r   rê  Ú/SelectiveAuthClientMiddlewareFactory.start_call6  s   € Ü,Ó.Ð.r   r"   N)r€   r�   r‚   rƒ   rê  r…   r†   rß   s   @r   rQ  rQ  5  s   ø‡ € ÷/ð /r   rQ  c                   ó&   a € ] tR tRt o R tRtV tR# )rS  i:  c                ó
   € R R/# )rK  r¡  r"   r¹  s   &r   r  Ú-SelectiveAuthClientMiddleware.sending_headers;  s   € à˜Jð
ð 	
r   r"   N)r€   r�   r‚   rƒ   r  r…   r†   rß   s   @r   rS  rS  :  s   ø‡ € ÷
ð 
r   rS  c                   ó<   a a€ ] tR tRt oRtV 3R ltR tRtVtV ;t	# )Ú RecordingServerMiddlewareFactoryiA  ú Record what methods were called.c                ó2   <€ \         SV `  4        . V n        R # r±   ©rc   rd   Úmethods©rg   rj   s   &€r   rd   Ú)RecordingServerMiddlewareFactory.__init__D  ó   ø€ Ü‰ÑÔØˆŽr   c                óP   € V P                   P                  VP                  4       R # r±   ©r]  ÚappendrL  r!  s   &&&r   rê  Ú+RecordingServerMiddlewareFactory.start_callH  ó   € Ø�‰×Ñ˜DŸK™KÔ(Ùr   ©r]  ©
r€   r�   r‚   rƒ   r„   rd   rê  r…   r†   r‡   rˆ   s   @@r   rY  rY  A  ó   ù‡ € Ù*õ÷ò r   rY  c                   ó<   a a€ ] tR tRt oRtV 3R ltR tRtVtV ;t	# )Ú RecordingClientMiddlewareFactoryiM  rZ  c                ó2   <€ \         SV `  4        . V n        R # r±   r\  r^  s   &€r   rd   Ú)RecordingClientMiddlewareFactory.__init__P  r`  r   c                óP   € V P                   P                  VP                  4       R # r±   rb  ré  s   &&r   rê  Ú+RecordingClientMiddlewareFactory.start_callT  re  r   rf  rg  rˆ   s   @@r   rj  rj  M  rh  r   rj  c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )Ú"MultiHeaderClientMiddlewareFactoryiY  rD  c                ó   € / V n         R # r±   ©Úlast_headersr¹  s   &r   rd   Ú+MultiHeaderClientMiddlewareFactory.__init__\  s   € ð ˆÖr   c                ó   € \        V 4      # r±   )ÚMultiHeaderClientMiddlewareré  s   &&r   rê  Ú-MultiHeaderClientMiddlewareFactory.start_calla  s   € Ü*¨4Ó0Ð0r   rr  N)	r€   r�   r‚   rƒ   r„   rd   rê  r…   r†   rß   s   @r   rp  rp  Y  s   ø‡ € ÙBò÷
1ð 1r   rp  c                   óV   a € ] tR tRt o RtRRR.RRR.R	R
.RR
./tR tR tR tRt	V t
R# )rv  ie  rD  zx-textrE   rV   zx-binary-binó    ó   zx-MIXED-caserI   s   x-other-MIXED-casec                ó   € Wn         R # r±   rñ  ró  s   &&r   rd   Ú$MultiHeaderClientMiddleware.__init__p  rõ  r   c                ó   € V P                   # r±   )ÚEXPECTEDr¹  s   &r   r  Ú+MultiHeaderClientMiddleware.sending_headerss  r)  r   c                óP   € V P                   P                  P                  V4       R # r±   )rò  rs  Úupdate)rg   rÞ  s   &&r   rú  Ú,MultiHeaderClientMiddleware.received_headersv  s   € ð 	�‰×!Ñ!×(Ñ(¨Ö1r   rñ  N)r€   r�   r‚   rƒ   r„   r~  rd   r  rú  r…   r†   rß   s   @r   rv  rv  e  sF   ø‡ € ÙBð 	�5˜%�.Ø˜ 'Ð*à˜˜Ø ˜wð€Hòò÷2ð 2r   rv  c                   ó*   a € ] tR tRt o RtR tRtV tR# )Ú"MultiHeaderServerMiddlewareFactoryi|  rD  c                ó   € \        V4      # r±   )ÚMultiHeaderServerMiddlewarer!  s   &&&r   rê  Ú-MultiHeaderServerMiddlewareFactory.start_call  s   € Ü*¨7Ó3Ð3r   r"   Nr  rß   s   @r   r„  r„  |  s   ø‡ € ÙB÷4ð 4r   r„  c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r†  iƒ  rD  c                ó   € Wn         R # r±   ©rF  )rg   rF  s   &&r   rd   Ú$MultiHeaderServerMiddleware.__init__†  s   € Ø,Ör   c                ó"   € \         P                  # r±   )rv  r~  r¹  s   &r   r  Ú+MultiHeaderServerMiddleware.sending_headers‰  s   € Ü*×3Ñ3Ð3r   rŠ  Nr  rß   s   @r   r†  r†  ƒ  s   ø‡ € ÙBò-÷4ð 4r   r†  c                   óB   a a€ ] tR tRt oRtV 3R ltR tR tRtVt	V ;t
# )ÚLargeMetadataFlightServeri�  z Regression test for ARROW-13253.c                óD   <€ \         SV `  ! V/ VB  R R,          V n        R# )ó    Nì       )rc   rd   Ú	_metadata)rg   Úargsri   rj   s   &*,€r   rd   Ú"LargeMetadataFlightServer.__init__�  s!   ø€ Ü‰Ò˜$Ð) &Ò)Ø Õ-ˆŽr   c                óÒ   € \         P                  ! R \         P                  ! 4       3.4      p\        P                  ! V\         P
                  ! ^..VR7      V P                  3.4      # )rT   r3  )r>   rp   Úint64r
   r“   Úrecord_batchr“  )rg   rt   rz   rp   s   &&& r   r}   Ú LargeMetadataFlightServer.do_get”  sS   € Ü—’˜S¤"§(¢(£*Ð-Ð.Ó/ˆÜ×%Ò% fÜ�_Š_˜q˜c˜U¨6Ô2°D·N±NÐCð/
ó ð 	r   c                ó<   € VP                  V P                  4       R # r±   )r{  r“  r¾   s   &&&&&r   rÂ   Ú%LargeMetadataFlightServer.do_exchangeš  s   € Ø×Ñ˜dŸn™nÖ-r   )r“  )r€   r�   r‚   rƒ   r„   rd   r}   rÂ   r…   r†   r‡   rˆ   s   @@r   r�  r�  �  s   ù‡ € Ù*õ.ò÷.ò .r   r�  c                  ó,
  € R p RpRpRpRpRpRpRpRpR	p	\        \        P                  ! R
R4      4      V 8X  g   Q h\        \        P                  ! R
R4      4      V8X  g   Q h\        \        P                  ! RR4      4      V8X  g   Q h\        \        P
                  P                  R
4      4      V8X  g   Q h\        P                  ! R. \        P                  ! R4      P                  \        P                  ! R4      4      R4      p
\        V
4      V8X  g   Q h\        P                  ! \        P                  ! . 4      \        P
                  P                  4       . ^^*RR4      p\        V4      V8X  g   Q h\        \        P                  ! R4      4      V8X  g   Q h\        \        P                   ! R4      4      V8X  g   Q h\        \        P"                  ! \        P                  ! . 4      4      4      V8X  g   Q h\        \        P"                  ! \        P                  ! R.4      4      4      R8X  g   Q h\        \        P$                  ! R4      4      V	8X  g   Q hVP                  \        P                  ! . 4      8X  g   Q h\        P                  ! R\        P
                  P                  4       . ^^*RR4      pRp\        V4      V8X  g   Q hVP                  e   Q h\&        P(                  ! \*        4      ;_uu_ 4        \        P                  ! R
R4       RRR4       \&        P(                  ! \*        4      ;_uu_ 4        \        P                  ! \-        4       . 4       RRR4       \&        P(                  ! \*        4      ;_uu_ 4        \        P                  ! R
RR\-        4       .4       RRR4       \&        P(                  ! \*        4      ;_uu_ 4        \        P                  ! R
. RR7       RRR4       \&        P(                  ! \*        4      ;_uu_ 4        \        P                  ! R
. \/        R^^^^^4      R7       RRR4       \&        P(                  ! \*        4      ;_uu_ 4        \        P                  ! R
. \-        4       R7       RRR4       R#   + '       g   i     ELŒ; i  + '       g   i     ELV; i  + '       g   i     EL; i  + '       g   i     Lì; i  + '       g   i     L­; i  + '       g   i     R# ; i) z1<pyarrow.flight.Action type='foo' body=(0 bytes)>z)ActionType(type='foo', description='bar')z?<pyarrow.flight.BasicAuth username=b'user' password=(redacted)>z,<pyarrow.flight.FlightDescriptor cmd=b'foo'>z©<pyarrow.flight.FlightEndpoint ticket=<pyarrow.flight.Ticket ticket=b'foo'> locations=[] expiration_time=2023-04-05 12:34:56+00:00 app_metadata=b'endpoint app metadata'>z³<pyarrow.flight.FlightInfo schema= descriptor=<pyarrow.flight.FlightDescriptor path=[]> endpoints=[] total_records=1 total_bytes=42 ordered=True app_metadata=b'test app metadata'>z6<pyarrow.flight.Location b'grpc+tcp://localhost:1234'>z&<pyarrow.flight.Result body=(3 bytes)>z'<pyarrow.flight.SchemaResult schema=()>z%<pyarrow.flight.Ticket ticket=b'foo'>rE   r   rV   ÚuserÚpassó   fooú2023-04-05T12:34:56Úsó   endpoint app metadataTó   test app metadataúgrpc+tcp://localhost:1234z1<pyarrow.flight.SchemaResult schema=(int: int64)>Nz·<pyarrow.flight.FlightInfo schema=None descriptor=<pyarrow.flight.FlightDescriptor path=[]> endpoints=[] total_records=1 total_bytes=42 ordered=True app_metadata=b'test app metadata'>rô   s   grpc://testz2023-04-05T01:02:03)Úexpiration_timeiç  ©r€  )Úintr—  )r‰  r
   ÚActionr  rž  rq   Úfor_commandrú   r>   rý   rþ   rÿ   ro   rp   rr   rû   ÚResultr  ÚTicketÚpytestÚraisesÚ	TypeErrorÚobjectr   )Úaction_reprÚaction_type_reprÚbasic_auth_reprÚdescriptor_reprÚendpoint_reprÚ	info_reprÚlocation_reprÚresult_reprÚschema_result_reprÚticket_reprÚendpointr  s               r   Ú	test_reprr»  ž  s»  € ØE€KØBÐØW€OØD€Oð>€Mð	-ð ð M€MØ:€KØBÐØ9€Kä”—’˜e SÓ)Ó*¨kÔ9Ð9Ð9Ü”×!Ò! %¨Ó/Ó0Ð4DÔDÐDÐDÜ”× Ò  ¨Ó0Ó1°_ÔDÐDÐDÜ”×'Ñ'×3Ñ3°EÓ:Ó;¸ÔNÐNÐNÜ×$Ò$Ø�”B—I’IÐ3Ó4×9Ñ9¼"¿,º,ÀsÓ:KÓLØ ó€Hô �‹>˜]Ô*Ð*Ð*Ü×ÒÜ
�	Š	�"‹”v×.Ñ.×7Ñ7Ó9¸2Ø	ˆ2ˆtÐ)ó€Dô �‹:˜Ô"Ð"Ð"Ü”—’Ð ;Ó<Ó=ÀÔNÐNÐNÜ”—’˜fÓ%Ó&¨+Ô5Ð5Ð5Ü”×#Ò#¤B§I¢I¨b£MÓ2Ó3Ð7IÔIÐIÐIÜ”×#Ò#¤B§I¢IÐ/?Ð.@Ó$AÓBÓCØ;ô<ð <ð <ä”—’˜fÓ%Ó&¨+Ô5Ð5Ð5Ø�;‰;œ"Ÿ)š) B›-Ô'Ð'Ð'ä×ÒØŒf×%Ñ%×.Ñ.Ó0°"Ø	ˆ2ˆtÐ)ó€Dð
	-ð ô �‹:˜Ô"Ð"Ð"Ø�;‰;ÒÐÐä	�Š”y×	!Õ	!Ü�Š�e˜TÔ"÷ 
"ô 
�Š”y×	!Õ	!Ü×Òœf›h¨Ô+÷ 
"ä	�Š”y×	!Õ	!Ü×Ò˜e m°^ÄVÃXÐ%NÔO÷ 
"ä	�Š”y×	!Õ	!Ü×Ò˜e RÐ9NÕO÷ 
"ä	�Š”y×	!Õ	!Ü×Ò˜e R¼À$ÈÈ1ÈaÐQRÐTUÓ9VÕW÷ 
"ä	�Š”y×	!Õ	!Ü×Ò˜e R´f³hÕ?÷ 
"Ñ	!÷ 
"×	!Ð	!ú÷ 
"×	!Ð	!úç	!×	!Ð	!úç	!×	!úç	!×	!úç	!×	!Ð	!úsH   ÌR Í R4Î#SÏSÐ"(S/Ñ4"TÒ R1	Ò4S	ÓS	ÓS,	Ó/S?	ÔT	c                  ó  € R  R R R R R R R R R	 R
 R R R R R R R R R R .p V  FM  pV! 4       w  r#V! 4       w  rEW"8X  g   Q hW$8X  g   Q hWB8X  g   Q hW38X  g   Q hW58X  g   Q hWS8X  g   Q hW#8w  d   KM  Q h	  R# )c                  ó^   € \         P                  ! R R4      \         P                  ! RR4      3# )rE   r   rV   ©r
   r¨  r"   r   r   Ú<lambda>Útest_eq.<locals>.<lambda>í  s   € ”—’˜u cÓ*¬F¯MªM¸%ÀÓ,EÑFr   c                  ó^   € \         P                  ! R R4      \         P                  ! R R4      3# )rE   r   ó   barr¾  r"   r   r   r¿  rÀ  î  s   € ”—’˜u cÓ*¬F¯MªM¸%ÀÓ,HÑIr   c                  ó^   € \         P                  ! R R4      \         P                  ! R R4      3# )rE   rV   rI   r  r"   r   r   r¿  rÀ  ï  s&   € ”×"Ò" 5¨%Ó0Ü×"Ò" 5¨%Ó0ñ2r   c                  ó^   € \         P                  ! R R4      \         P                  ! RR4      3# )r�  rž  Úuser2©r
   rž  r"   r   r   r¿  rÀ  ñ  s&   € ”×!Ò! &¨&Ó1Ü×!Ò! '¨6Ó2ñ4r   c                  ó^   € \         P                  ! R R4      \         P                  ! R R4      3# )r�  rž  Úpass2rÆ  r"   r   r   r¿  rÀ  ó  s&   € ”×!Ò! &¨&Ó1Ü×!Ò! &¨'Ó2ñ4r   c                  ó~   € \         P                  P                  R 4      \         P                  P                  R 4      3# )rE   )r
   rq   r©  rr   r"   r   r   r¿  rÀ  õ  s.   € ”×(Ñ(×4Ñ4°UÓ;Ü×(Ñ(×1Ñ1°%Ó8ñ:r   c                  ó^   € \         P                  ! R . 4      \         P                  ! R. 4      3# ©rŸ  rÂ  ©r
   rú   r"   r   r   r¿  rÀ  ÷  s&   € ”×&Ò& v¨rÓ2Ü×&Ò& v¨rÓ2ñ4r   c                  ó²   € \         P                  ! R \         P                  ! R4      .4      \         P                  ! R \         P                  ! R4      .4      3# )rŸ  r¤  úgrpc+tls://localhost:1234)r
   rú   rû   r"   r   r   r¿  rÀ  ù  sI   € Ü×!Ò!ØœŸšÐ)DÓEÐFóHä×!Ò!ØœŸšÐ)DÓEÐFóHñ
r   c            
      ó>  € \         P                  ! R . \        P                  ! R4      P	                  \        P
                  ! R4      4      4      \         P                  ! R . \        P                  ! R4      P	                  \        P
                  ! R4      4      4      3# )rŸ  r   r¡  z2023-04-05T12:34:56.789Úms)r
   rú   r>   rý   rþ   rÿ   r"   r   r   r¿  rÀ  ÿ  sq   € Ü×!Ò!Ø˜œBŸIšIÐ&;Ó<×AÑAÄ"Ç,Â,ÈsÓBSÓTóVä×!Ò!Ø˜Ü—	’	Ð3Ó4×9Ñ9¼"¿,º,ÀtÓ:LÓMóOñPr   c                  óf   € \         P                  ! R . RR7      \         P                  ! R . RR7      3# )rŸ  r   r¦  ó   metarÌ  r"   r   r   r¿  rÀ    s+   € ”×&Ò& v¨rÀÔDÜ×&Ò& v¨rÀÔHñJr   c                  óN  € \         P                  ! \        P                  ! . 4      \         P                  P                  4       . 4      \         P                  ! \        P                  ! R \        P                  ! 4       3.4      \         P                  P                  4       . 4      3# ©Úints)r
   ro   r>   rp   rq   rr   r—  r"   r   r   r¿  rÀ    sr   € Ü×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2°Bó8ô ×ÒÜ—	’	˜F¤B§H¢H£JÐ/Ð0Ó1Ü×'Ñ'×0Ñ0Ó2°Bó8ñ	9r   c                  ó$  € \         P                  ! \        P                  ! . 4      \         P                  P                  4       . 4      \         P                  ! \        P                  ! . 4      \         P                  P                  R 4      . 4      3# )rŸ  )r
   ro   r>   rp   rq   rr   r©  r"   r   r   r¿  rÀ    sg   € Ü×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2°Bó8ô ×ÒÜ—	’	˜"“Ü×'Ñ'×3Ñ3°FÓ;¸RóAñ	Br   c            	      óz  € \         P                  ! \        P                  ! . 4      \         P                  P                  4       \         P                  ! R . 4      .4      \         P                  ! \        P                  ! . 4      \         P                  P                  4       \         P                  ! R. 4      .4      3# rË  )r
   ro   r>   rp   rq   rr   rú   r"   r   r   r¿  rÀ    s…   € Ü×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2Ü×&Ò& v¨rÓ2Ð3ó5ô ×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2Ü×&Ò& v¨rÓ2Ð3ó5ñ6r   c                  ó*  € \         P                  ! \        P                  ! . 4      \         P                  P                  4       . RR7      \         P                  ! \        P                  ! . 4      \         P                  P                  4       . ^R7      3# )rL   )Útotal_recordséÿÿÿÿ©r
   ro   r>   rp   rq   rr   r"   r   r   r¿  rÀ    sj   € Ü×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2°BÀbôJô ×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2°BÀaôIñ	Jr   c                  ó*  € \         P                  ! \        P                  ! . 4      \         P                  P                  4       . RR7      \         P                  ! \        P                  ! . 4      \         P                  P                  4       . ^*R7      3# )rL   )Útotal_bytesrÚ  rÛ  r"   r   r   r¿  rÀ  %  sj   € Ü×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2°BÀBôHô ×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2°BÀBôHñ	Ir   c                  ó*  € \         P                  ! \        P                  ! . 4      \         P                  P                  4       . R R7      \         P                  ! \        P                  ! . 4      \         P                  P                  4       . RR7      3# )F)ÚorderedTrÛ  r"   r   r   r¿  rÀ  ,  sj   € Ü×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2°BÀôGô ×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2°BÀôFñ	Gr   c                  ó*  € \         P                  ! \        P                  ! . 4      \         P                  P                  4       . R R7      \         P                  ! \        P                  ! . 4      \         P                  P                  4       . RR7      3# )r   r¦  rÒ  rÛ  r"   r   r   r¿  rÀ  3  sj   € Ü×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2°BÀSôJô ×ÒÜ—	’	˜"“Ü×'Ñ'×0Ñ0Ó2°BÀWôNñ	Or   c                  óZ   € \         P                  ! R 4      \         P                  ! R4      3# )r¤  rÎ  )r
   rû   r"   r   r   r¿  rÀ  :  s    € ”—’Ð!<Ó=Ü—’Ð!<Ó=ñ?r   c                  óZ   € \         P                  ! R 4      \         P                  ! R4      3# rË  )r
   rª  r"   r   r   r¿  rÀ  <  s   € ”—’˜vÓ&¬¯ª°fÓ(=Ñ>r   c                  óÖ   € \         P                  ! \        P                  ! . 4      4      \         P                  ! \        P                  ! R \        P                  ! 4       3.4      4      3# rÔ  )r
   r  r>   rp   r—  r"   r   r   r¿  rÀ  =  sB   € ”×$Ò$¤R§Y¢Y¨r£]Ó3Ü×$Ò$¤R§Y¢Y°¼¿º»Ð0DÐ/EÓ%FÓGñIr   c                  óZ   € \         P                  ! R 4      \         P                  ! R4      3# )r   rŸ  )r
   r«  r"   r   r   r¿  rÀ  ?  s   € ”—’˜sÓ#¤V§]¢]°6Ó%:Ñ;r   Nr"   )ÚitemsÚgenÚlhs1Úrhs1Úlhs2Úrhs2s         r   Útest_eqrë  ë  sÙ   € áFÙIñ	2ñ	4ñ	4ñ	:ñ	4ñ	
ñ	Pñ	Jñ	9ñ	Bñ	6ñ	Jñ	Iñ	Gñ	Oñ	?á>ñ	Iá;ðgT€Eól ˆÙ“U‰
ˆÙ“U‰
ˆØŒ|Ðˆ|ØŒ|Ðˆ|ØŒ|Ðˆ|ØŒ|Ðˆ|ØŒ|Ðˆ|ØŒ|Ðˆ|ØŽ|Ðˆ|ó r   c                  ó¦  € \         P                  ! \        P                  ! . 4      \         P                  P                  4       . 4      p \         P                  ! \        P                  ! . 4      \         P                  P                  4       . RRR7      p\         P                  ! \        P                  ! . 4      \         P                  P                  4       . RRR7      pV P                  R8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hV P                  R8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hR# )rL   )rÙ  rÝ  NrÚ  )r
   ro   r>   rp   rq   rr   rÙ  rÝ  )Úfi1Úfi2Úfi3s      r   Útest_flight_info_defaultsrð  N  s  € Ü
×
Ò
œBŸIšI b›M¬6×+BÑ+B×+KÑ+KÓ+MÈrÓ
R€CÜ
×
Ò
Ü
�	Š	�"‹Ü×Ñ×(Ñ(Ó*¨B¸bÈbôR€Cô ×
Ò
Ü
�	Š	�"‹Ü×Ñ×(Ñ(Ó*¨B¸dÐPTôV€Cð ×Ñ Ô"Ð"Ð"Ø×Ñ Ô"Ð"Ð"Ø×Ñ Ô"Ð"Ð"à�?‰?˜bÔ Ð Ð Ø�?‰?˜bÔ Ð Ð Ø�?‰?˜bÔ Ð Ò r   c                  óÈ   € R RR\        4       3.p V  F8  p\        V4      ;_uu_ 4       p\        V\        4      '       g   Q h R R R 4       K:  	  R #   + '       g   i     KO  ; i)Núgrpc://localhost:0rõ   )r   r   Ú
isinstance)Ú	locationsrh   Úservers      r   Ú$test_flight_server_location_argumentrö  `  sY   € àØØ	”nÓ&Ð'ð€Ió
 ˆÜ˜h×'Ô'¨6Ü˜fÔ&6×7Ò7Ð7Ñ7÷ (Ñ'ó ß'×'Ð'ús   ¨AÁA!c            	      óæ   € \         P                  ! \        4      ;_uu_ 4        \        4       ;_uu_ 4        \        4       h  + '       g   i     M; i R R R 4       R #   + '       g   i     R # ; ir±   )r¬  r­  Ú
ValueErrorr   r"   r   r   Ú#test_server_exit_reraises_exceptionrù  k  s=   € Ü	�Š”z×	"Õ	"Ü×ÕÜ“,Ð÷  ×úÐ÷ 
#×	"×	"Ò	"ús   £A¶A	ÁAÁAÁA0	c                  óz  a€ R \        4       3oRp V3R lp\        S4      ;_uu_ 4       p\        P                  ! VRR7      pVP	                  4        \
        P
                  ! 4       pVP                  ^R7       \
        P
                  ! 4       V,
          pVR8¼  g   Q h RRR4       R#   + '       g   i     R# ; i)rõ   Nc                  ór   <€ \         P                  ! R 4       \        S 4      s\        P	                  4        R# ©r?  N)r@  rA  r   rõ  Úserve©rh   s   €r   rý  Ú-test_client_wait_for_available.<locals>.servew  s!   ø€ ä�
Š
�3ŒÜ! (Ó+ˆÜ�‰Žr   T©ÚtargetÚdaemon©Útimeoutr?  )r   r   Ú	threadingÚThreadÚstartr@  Úwait_for_available)rõ  rý  ÚclientÚthreadrƒ  Úelapsedrh   s         @r   Útest_client_wait_for_availabler  q  s�   ø€ ð œ^Ó-Ð.€HØ€Fõô 
�h×	Ô	 6Ü×!Ò!¨°tÔ<ˆØ�‰Œä—)’)“+ˆØ×!Ñ!¨!Ð!Ô,Ü—)’)“+ Õ'ˆØ˜#Œ~Ð‰~÷ 
 ×	×	Ò	ús   ©A5B)Â)B:	c            	     ó¦  € \        4       ;_uu_ 4       p \        P                  ! RV P                  34      ;_uu_ 4       p\	        VP                  4       4      . 8X  g   Q hVP                  \         P                  4      p\        \	        V4      4      ^8X  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zTry a simple list_flights call.rõ   N)r^   r
   ÚconnectÚportÚlistrv   rn   Úlen)rõ  r	  Úflightss      r   Útest_flight_list_flightsr  ‡  s‘   € ä	×	Ô	 6Ü�NŠN˜K¨¯©Ð5×6Ô6¸&Ü�F×'Ñ'Ó)Ó*¨bÔ0Ð0Ð0Ø×%Ñ%Ô&:×&CÑ&CÓDˆÜ”4˜“=Ó! QÔ&Ð&Ñ&÷ 7÷ 
 Ñ	ß6×6ú÷ 
 ×	Ð	ús#   “+B?¾AB,	ÂB?Â,B<Â7B?Â?C	c                  ó2  € \        4       ;_uu_ 4       p \        P                  ! R V P                  34      ;_uu_ 4       p\	        VP                  4       4      . 8X  g   Q hVP                  4        VP                  4        \        P                  ! \        P                  4      ;_uu_ 4        \	        VP                  4       4       RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)rõ   N)r^   r
   r  r  r  rv   Úcloser¬  r­  r>   rT  ©rõ  r	  s     r   Útest_flight_client_closer  �  s©   € Ü	×	Ô	 6Ü�NŠN˜K¨¯©Ð5×6Ô6¸&Ü�F×'Ñ'Ó)Ó*¨bÔ0Ð0Ð0Ø�‰ŒØ�‰ŒÜ�]Š]œ2Ÿ?™?×+Õ+Ü�×$Ñ$Ó&Ô'÷ ,÷	 7÷ 
 Ñ	÷
 ,×+ú÷	 7×6ú÷ 
 ×	Ð	ús;   “+D¾A-C2	Â+CÃC2	ÃDÃC/Ã*C2	Ã2DÃ=DÄD	c                 óH  € \        4       p \        4       ;_uu_ 4       p\        P                  ! RVP                  34      ;_uu_ 4       pVP                  \        P                  ! R4      4      P                  4       pVP                  V 4      '       g   Q h RRR4       RRR4       \        P                  P                  \        P                  P                  P                  R7      p\        VR7      ;_uu_ 4       p\        P                  ! RVP                  34      ;_uu_ 4       pVP                  \        P                  ! R4      4      P                  4       pVP                  V 4      '       g   Q hVP                  \        P                  ! R4      4      P                  4       P                  4       pVP                  V 4      '       g   Q h RRR4       RRR4       \        P                   ! \        P"                  RR7      ;_uu_ 4        \        ^*R7      ;_uu_ 4       p\        P                  ! RVP                  34      ;_uu_ 4       pVP                  \        P                  ! R4      4      P                  4       pRRR4       RRR4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     Lü; i  + '       g   i     EL; i  + '       g   i     Lq; i  + '       g   i     L|; i  + '       g   i     R# ; i)úTry a simple do_get call.rõ   r`   N©Úmetadata_versionry   z+expected IpcWriteOptions, got <class 'int'>©Úmatch)rC   r^   r
   r  r  r}   r«  r½   rš   r>   ÚipcÚIpcWriteOptionsÚMetadataVersionÚV4rë   r¬  r­  r.  )r|   rõ  r	  rB   rf   s        r   Útest_flight_do_get_intsr"  š  s  € äÓ€Eä	×	Ô	 6Ü�NŠN˜K¨¯©Ð5×6Ô6¸&Ø�}‰}œVŸ]š]¨7Ó3Ó4×=Ñ=Ó?ˆØ�{‰{˜5×!Ò!Ð!Ñ!÷ 7÷ 
 ô
 �f‰f×$Ñ$ÜŸ™×/Ñ/×2Ñ2ð %ó 4€Gä	 g×	.Õ	.°&Ü�NŠN˜K¨¯©Ð5×6Ô6¸&Ø�}‰}œVŸ]š]¨7Ó3Ó4×=Ñ=Ó?ˆØ�{‰{˜5×!Ò!Ð!Ð!ð �}‰}œVŸ]š]¨7Ó3Ó4×>Ñ>Ó@×IÑIÓKˆØ�{‰{˜5×!Ò!Ð!Ñ!÷ 7÷ 
/ô 
�Š”v×/Ñ/ØJ÷
Lö 
Lä!¨"×-Õ-°Ü—’ ¨V¯[©[Ð9×:Ô:¸fØ—=‘=¤§¢¨wÓ!7Ó8×AÑAÓCˆD÷ ;÷ .÷
Lñ 
L÷ 7×6Ð6ú÷ 
 ×	Ð	ú÷ 7×6ú÷ 
/×	.Ð	.ú÷ ;×:ú÷ .×-ú÷
L÷ 
Lð 
Lús‹   �+J/ÁAJ	ÂJ/Ã<+KÄ'B$K	ÇK	ÇKÈLÈ"+K=	É4K*ÊK=	Ê	LÊJ,Ê&	J/Ê/K 	ËKËKËK'	Ë*K:Ë5K=	Ë=LÌLÌL!	c            	     óØ  € \        4       p \        4       ;_uu_ 4       p\        P                  ! RVP                  34      ;_uu_ 4       pVP                  \        P                  ! R4      4      P                  4       p\        VR,          4      V P                  ^ 4      P                  4       8X  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r  rõ   r`   r8   N)rC   r^   r
   r  r  r}   r«  Úread_pandasr  rŽ  Ú	to_pylist)r|   rõ  r	  rB   s       r   Útest_do_get_ints_pandasr&  µ  sš   € ô Ó€Eä	×	Ô	 6Ü�NŠN˜K¨¯©Ð5×6Ô6¸&Ø�}‰}œVŸ]š]¨7Ó3Ó4×@Ñ@ÓBˆÜ�D˜Õ%Ó&¨%¯,©,°q«/×*CÑ*CÓ*EÔEÐEÑE÷ 7÷ 
 Ñ	ß6×6ú÷ 
 ×	Ð	ús$   �+CÁA*C	Â3CÃCÃCÃC)	c                  ó  € \        4       p \        4       ;_uu_ 4       p\        P                  ! R VP                  34      ;_uu_ 4       pVP                  \        P                  ! R4      4      pVP                  P                  ^8X  g   Q hVP                  4       pVP                  V 4      '       g   Q hVP                  \        ^^^^ ^R7      8X  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)rõ   ra   ©r™   r¡   Únum_dictionary_batchesÚnum_dictionary_deltasÚnum_replaced_dictionariesN)rR   r^   r
   r  r  r}   r«  r˜   r™   r½   rš   r   )r|   rõ  r	  r£   rB   s        r   Útest_flight_do_get_dictsr,  À  sË   € ÜÓ €Eä	×	Ô	 6Ü�NŠN˜K¨¯©Ð5×6Ô6¸&Ø—‘œvŸ}š}¨XÓ6Ó7ˆØ�|‰|×(Ñ(¨AÔ-Ð-Ð-Ø�‰Ó ˆØ�{‰{˜5×!Ò!Ð!Ð!Ø�|‰|œyØØ Ø#$Ø"#Ø&'ô 
ô 
ð 	
ñ 
÷ 7÷ 
 Ñ	ß6×6ú÷ 
 ×	Ð	ús*   �+C;ÁA)C(	Â2#C(	ÃC;Ã(C8Ã3C;Ã;D	c            	     ó.  € \         P                  ! . RO\         P                  ! 4       R7      .p \         P                  P	                  V R.R7      p\        RR7      ;_uu_ 4       p\        P                  ! RVP                  34      ;_uu_ 4       pVP                  \        P                  ! R4      4      P                  4       pVP                  V4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	z+Make sure Tickets get passed to the server.rF   rT   r9   s
   the-ticket)r  rõ   Nr;   )r>   r?   rù   r@   rA   r  r
   r  r  r}   r«  r½   rš   )r!  r|   rõ  r	  rB   s        r   Útest_flight_do_get_ticketr.  Ò  sµ   € ä�XŠXÒ)´·²³
Ô;Ð<€EÜ�H‰H× Ñ  ¨s¨eÐ Ó4€EÜ	 °×	?Õ	?À6Ü�NŠN˜K¨¯©Ð5×6Ô6¸&Ø�}‰}œVŸ]š]¨=Ó9Ó:×CÑCÓEˆØ�{‰{˜5×!Ò!Ð!Ñ!÷ 7÷ 
@Ñ	?ß6×6ú÷ 
@×	?Ð	?ús%   Á%+DÂAC0	ÃDÃ0D Ã;DÄD	c            	     ó0  € \        4       ;_uu_ 4       p \        RV P                  34      pVP                  \        P
                  P                  R4      4      pVP                  ^8X  g   Q hVP                  ^*8X  g   Q hVP                  '       g   Q hVP                  R8X  g   Q hVP                  \        P                  ! R\        P                  ! 4       3.4      8X  g   Q h\        VP                  4      ^8X  g   Q h\        VP                  ^ ,          P                   4      ^8X  g   Q hVP                  ^ ,          P"                  e   Q hVP                  ^ ,          P                  R8X  g   Q hVP                  ^ ,          P                   ^ ,          \        P$                  ! R4      8X  g   Q hVP                  ^,          P"                  \        P&                  ! R4      P)                  \        P*                  ! RR	4      4      8X  g   Q hVP                  ^,          P                  R
8X  g   Q hVP                  ^,          P                   ^ ,          \        P$                  P-                  RR4      8X  g   Q h RRR4       R#   + '       g   i     R# ; i)z8Make sure FlightEndpoint accepts string and object URIs.rõ   r   s   info app metadatarT   Nrô   z#2023-04-05T12:34:56.789012345+00:00rø   ÚUTCr¢  rö   )rò   r   r  r  r
   rq   r©  rÙ  rÝ  rß  r€  rp   r>   rù   r  Ú	endpointsrô  r¥  rû   rý   rþ   rÿ   rü   ©rõ  r	  r  s      r   Útest_flight_get_infor3  Ü  sý  € ä	×	Ô	 &Ü˜{¨F¯K©KÐ8Ó9ˆØ×%Ñ%¤f×&=Ñ&=×&IÑ&IÈ#Ó&NÓOˆØ×!Ñ! QÔ&Ð&Ð&Ø×Ñ 2Ô%Ð%Ð%Ø�|�|ˆ|Ðˆ|Ø× Ñ Ð$8Ô8Ð8Ð8Ø�{‰{œbŸiši¨#¬r¯xªx«zÐ):Ð(;Ó<Ô<Ð<Ð<Ü�4—>‘>Ó" aÔ'Ð'Ð'Ü�4—>‘> !Õ$×.Ñ.Ó/°1Ô4Ð4Ð4Ø�~‰~˜aÕ ×0Ñ0Ò8Ð8Ð8Ø�~‰~˜aÕ ×-Ñ-°Ô4Ð4Ð4Ø�~‰~˜aÕ ×*Ñ*¨1Õ-´·²ÀÓ1OÔOÐOÐOØ�~‰~˜aÕ ×0Ñ0Ü�IŠIÐ;Ó<ß‰t”B—L’L  uÓ-Ó.ô/ð 	/ð /ð �~‰~˜aÕ ×-Ñ-Ð1IÔIÐIÐIØ�~‰~˜aÕ ×*Ñ*¨1Õ-Ü�O‰O×(Ñ(¨°dÓ;ô<ð 	<ñ <÷# 
×	×	Ò	ús   “A=JÂG(JÊJ	c            
     ó²  € \        4       ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       pVP                  \        P
                  P                  R4      4      pVP                  \        P                  ! R\        P                  ! 4       3.4      8X  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z+Make sure GetSchema returns correct schema.rõ   r   rT   N)
rò   r   r  r  r
   rq   r©  rp   r>   rù   r2  s      r   Útest_flight_get_schemar5  ó  s�   € ä	×	Ô	 &Ü˜+ v§{¡{Ð3×4Ô4¸Ø× Ñ ¤×!8Ñ!8×!DÑ!DÀSÓ!IÓJˆØ�{‰{œbŸiši¨#¬r¯xªx«zÐ):Ð(;Ó<Ô<Ð<Ñ<÷ 5÷ 
Ñ	ß4×4ú÷ 
×	Ð	ús#   “ C³A,B2	Â CÂ2CÂ=CÃC	c                 óØ  € \        4       ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        P                  ! \
        P                  RR7      ;_uu_ 4        \        VP                  4       4       RRR4       RRR4       RRR4       \        4       ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        VP                  4       4      \        P                  4       8X  g   Q h RRR4       RRR4       R#   + '       g   i     L˜; i  + '       g   i     L£; i  + '       g   i     L®; i  + '       g   i     LS; i  + '       g   i     R# ; i)z6Make sure the return type of ListActions is validated.rõ   z3Results of list_actions must be ActionType or tupler  N)r  r   r  r¬  r­  r
   r.  r  rÍ   r	  r  r  s     r   Útest_list_actionsr7  û  sô   € ô 
&×	'Ô	'¨6Ü˜+ v§{¡{Ð3×4Ô4¸Ü�]Š]Ü×(Ñ(ð-÷
ö 
ô
 �×$Ñ$Ó&Ô'÷
÷ 5÷ 
(ô 
!×	"Ô	" fÜ˜+ v§{¡{Ð3×4Ô4¸Ü�F×'Ñ'Ó)Ó*Ü#×4Ñ4Ó6ô7ð 	7ñ 7÷ 5÷ 
#Ñ	"÷
÷ 
ú÷ 5×4ú÷ 
(×	'ú÷ 5×4ú÷ 
#×	"Ð	"ús^   “ D2³/D	Á"DÁ<D	ÂD2Â& EÃ3E	Ã:EÄDÄD	ÄD/Ä*D2Ä2E	ÅEÅEÅE)	c                   ó:   a € ] tR tRt o Rt]R 4       tR tRtV t	R# )ÚConvenienceServeri  zL
Server for testing various implementation conveniences (auto-boxing, etc.)
c                ó
   € . RO# )rŸ  )rŸ  rÂ  s   bazr"   r¹  s   &r   Úsimple_action_resultsÚ'ConvenienceServer.simple_action_results  s   € â'Ð'r   c                ó.  a€ VP                   R 8X  d   V P                  # VP                   R8X  d   VP                  .# VP                   R8X  d   R.# VP                   R8X  d   \        P                  ! 4       hVP                   R8X  d   V3R lpV! 4       # R# )úsimple-actionÚechoú
bad-actionrE   úarrow-exceptionÚforeverc               3   óH   <"  € S P                  4       '       g   R x € K  R# 5i)rŸ  N)Úis_cancelled)rt   s   €r   ræ  Ú(ConvenienceServer.do_action.<locals>.gen   s   øé € Ø!×.Ñ.×0Ò0Ø ”Lñ 1ùs   ƒ"š"N)rG   r;  Úbodyr>   ÚArrowMemoryError)rg   rt   rÚ   ræ  s   &f& r   rÛ   ÚConvenienceServer.do_action  s�   ø€ Ø�;‰;˜/Ô)Ø×-Ñ-Ð-Ø�[‰[˜FÔ"Ø—K‘K�=Ð Ø�[‰[˜LÔ(Ø�7ˆNØ�[‰[Ð-Ô-Ü×%Ò%Ó'Ð'Ø�[‰[˜IÔ%õ!ñ “5ˆLñ	 &r   r"   N)
r€   r�   r‚   rƒ   r„   Úpropertyr;  rÛ   r…   r†   rß   s   @r   r9  r9    s(   ø‡ € ñð ñ(ó ð(÷ð r   r9  c            	      óÒ  € \        4       ;_uu_ 4       p \        R V P                  34      ;_uu_ 4       pVP                  R4       Uu. uF  q"P                  NK  	  ppW0P
                  8X  g   Q hRpVP                  RV34       Uu. uF  q"P                  NK  	  ppW4.8X  g   Q h RRR4       RRR4       R# u upi u upi   + '       g   i     L$; i  + '       g   i     R# ; i)rõ   r>  s   the-bodyr?  N)r9  r   r  rÛ   rF  r;  )rõ  r	  ÚxÚresultsrF  s        r   Ú!test_do_action_result_conveniencerM  &  sÄ   € Ü	×	Ô	 Ü˜+ v§{¡{Ð3×4Ô4¸ð $*×#3Ñ#3°OÔ#DÓEÑ#D˜a—6”6Ñ#DˆÐEØ×6Ñ6Ô6Ð6Ð6ð ˆØ#)×#3Ñ#3°V¸T°NÔ#CÓDÑ#C˜a—6”6Ñ#CˆÐDØ˜&Ô Ð Ñ ÷ 5÷ 
Ñ	ùò Fùò
 E÷ 5×4ú÷ 
×	Ð	ús@   “ C³C	ÁB8Á+C	ÂB=ÂC	Â&CÂ8
C	ÃCÃCÃC&	c                  ój  € \        4       ;_uu_ 4       p \        R V P                  34      ;_uu_ 4       p\        P                  ! \
        P                  RR7      ;_uu_ 4        \        VP                  R4      4       RRR4       \        P                  ! \
        P                  RR7      ;_uu_ 4        \        VP                  R4      4       RRR4       RRR4       RRR4       R#   + '       g   i     Ls; i  + '       g   i     L5; i  + '       g   i     L@; i  + '       g   i     R# ; i)rõ   za bytes-like object is requiredr  r@  NrG  rA  )	r9  r   r  r¬  r­  r
   r.  r  rÛ   r  s     r   Útest_nicer_server_exceptionsrO  4  sË   € Ü	×	Ô	 Ü˜+ v§{¡{Ð3×4Ô4¸Ü�]Š]œ6×3Ñ3Ø!B÷Dö Dä�×!Ñ! ,Ó/Ô0÷Dô �]Š]œ6×3Ñ3Ø!3÷5ö 5ä�×!Ñ!Ð"3Ó4Ô5÷5÷ 5÷ 
Ñ	÷D÷ Dú÷5÷ 5ú÷ 5×4ú÷ 
×	Ð	úsR   “ D!³/D	Á"C(Á=6D	Â3C;ÃD	ÃD!Ã(C8Ã3D	Ã;DÄD	ÄDÄD!Ä!D2	c                 ó�   € \        R4      p  V P                  ^ 8”  g   Q h V P                  4        R#   T P                  4        i ; i)zMake sure port() works.rò  N)rò   r  Úshutdown)rõ  s    r   Útest_get_portrR  C  s7   € ä Ð!5Ó6€FðØ�{‰{˜QŒÐ‰à�‰Öøˆ�‰Õús	   �3 ³AÚntz'Unix sockets can't be tested on Windows)Úreasonc                 óÀ  € \         P                  ! 4       ;_uu_ 4       p V P                  4        \        P                  P                  V P                  4      p\        VR7      ;_uu_ 4        \        V4      ;_uu_ 4       pVP                  \        P                  ! R4      4      p\        4       pVP                  P                  VP                  4      '       g   Q hVP                  4       pVP                  V4      '       g   Q hVP                  \        P                  ! R4      4      p\        4       pVP                  P                  VP                  4      '       g   Q hVP                  4       pVP                  V4      '       g   Q h RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)z3Try a simple do_get call over a Unix domain socket.rþ  r`   ra   N)ÚtempfileÚNamedTemporaryFiler  r
   rû   Úfor_grpc_unixÚnamer^   r   r}   r«  rC   rp   rš   r½   rR   )Úsockrh   r	  r£   r|   rB   s         r   Útest_flight_domain_socketr[  L  s<  € ô 
×	$Ò	$×	&Ô	&¨$Ø�
‰
ŒÜ—?‘?×0Ñ0°·±Ó;ˆÜ!¨8×4Ö4Ü˜X×&Ô&¨&à—]‘]¤6§=¢=°Ó#9Ó:ˆFÜ%Ó'ˆEØ—=‘=×'Ñ'¨¯©×5Ò5Ð5Ð5Ø—?‘?Ó$ˆDØ—;‘;˜u×%Ò%Ð%Ð%à—]‘]¤6§=¢=°Ó#:Ó;ˆFÜ&Ó(ˆEØ—=‘=×'Ñ'¨¯©×5Ò5Ð5Ð5Ø—?‘?Ó$ˆDØ—;‘;˜u×%Ò%Ð%Ñ%÷ '÷ 5÷ 
'Ñ	&÷ '×&ú÷ 5×4ú÷ 
'×	&Ð	&úsJ   žAGÁ,F9	Â BF&ÄBF&Æ	F&ÆF9	ÆGÆ&F6Æ1F9	Æ9G	ÇGÇG	c            	     óÈ  € \         P                  P                  \         P                  ! \	        ^ R4      4      .R.R7      p \        V P                  R7      ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  P                  R4      V P                  4      w  r4VP                  V R4       VP                  4        VP                  \        P                   ! R4      4      P#                  4       pVP%                  V 4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	z„Try sending/receiving a large message via Flight.

See ARROW-4421: by default, gRPC won't allow us to send messages >
4MiB in size.
rT   r9   )r·   rõ   r  r   Ni    )r>   r@   rA   r?   r5  r´   rp   r   r  rª   r
   rq   rr   rw  r  r}   r«  r½   rš   ©rB   rõ  r	  r¤   Ú_r‘  s         r   Útest_flight_large_messager_  c  sÿ   € ô �8‰8×ÑÜ
�Š”�qÐ*Ó+Ó,ð!àˆUð  ó €Dô 
¨$¯+©+×	6Õ	6¸&Ü˜+ v§{¡{Ð3×4Ô4¸Ø—M‘M¤&×"9Ñ"9×"BÑ"BÀ6Ó"JØ"&§+¡+ó/‰	ˆð 	×Ñ˜4Ð!1Ô2Ø�‰ŒØ—‘œvŸ}š}¨SÓ1Ó2×;Ñ;Ó=ˆØ�}‰}˜T×"Ò"Ð"Ñ"÷ 5÷ 
7Ñ	6ß4×4ú÷ 
7×	6Ð	6ús%   Á  EÂ B*D=	Ä+EÄ=EÅEÅE!	c            	     ó®  € \         P                  P                  \         P                  ! \	        ^ R4      4      .R.R7      p \        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  P                  R4      V P                  4      w  r4VP                  V 4       VP                  4        VP                  \        P                   ! R4      4      P#                  4       pVP%                  V 4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z?Try downloading a flight of RecordBatches in a GeneratorStream.rT   r9   rõ   r  r   Nru  )r>   r@   rA   r?   r5  rÅ   r   r  rª   r
   rq   rr   rp   rw  r  r}   r«  r½   rš   r]  s         r   Ú'test_flight_generator_stream_of_batchesra  y  sñ   € ä�8‰8×ÑÜ
�Š”�q˜)Ó$Ó%ð!àˆUð  ó €Dô 
 ×	!Ô	! VÜ˜+ v§{¡{Ð3×4Ô4¸Ø—M‘M¤&×"9Ñ"9×"BÑ"BÀ6Ó"JØ"&§+¡+ó/‰	ˆà×Ñ˜4Ô Ø�‰ŒØ—‘œvŸ}š}¨SÓ1Ó2×;Ñ;Ó=ˆØ�}‰}˜T×"Ò"Ð"Ñ"÷ 5÷ 
"Ñ	!ß4×4ú÷ 
"×	!Ð	!úó%   Á EÁ4B)D0	ÄEÄ0E Ä;EÅE	c            
     óF  € \         P                  P                  \         P                  ! . RO\         P                  ! \         P
                  ! 4       \         P                  ! 4       4      4      \         P                  ! . R	O4      .RR.R7      p \        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  P                  R4      V P                  4      w  r4VP                  V 4       VP!                  4        VP#                  \        P$                  ! R4      4      P'                  4       pVP)                  V 4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)
zS
Try downloading a flight of RecordBatches with dictionaries
in a GeneratorStream.
rT   rU   r9   rõ   r  r   N©rE   rV   rI   rE   rE   ©é{   éê   iY  iÈ  i7  ©r>   r@   rA   r?   Ú
dictionaryr—  rM   ré   r   r  rª   r
   rq   rr   rp   rw  r  r}   r«  r½   rš   r]  s         r   Ú1test_flight_generator_stream_of_batches_with_dictrj  ‰  ó  € ô
 �8‰8×ÑÜ
�ŠÒ4Ü—’œrŸxšx›z¬2¯7ª7«9Ó5ó	7ä
�ŠÒ*Ó+ð!ð �3ˆZð	  ó €Dô 
1×	2Ô	2°fÜ˜+ v§{¡{Ð3×4Ô4¸Ø—M‘M¤&×"9Ñ"9×"BÑ"BÀ6Ó"JØ"&§+¡+ó/‰	ˆà×Ñ˜4Ô Ø�‰ŒØ—‘œvŸ}š}¨SÓ1Ó2×;Ñ;Ó=ˆØ�}‰}˜T×"Ò"Ð"Ñ"÷ 5÷ 
3Ñ	2ß4×4ú÷ 
3×	2Ð	2úó%   Â  FÃ B)E<	Å*FÅ<FÆFÆF 	c            	     ó®  € \         P                  P                  \         P                  ! \	        ^ R4      4      .R.R7      p \        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  P                  R4      V P                  4      w  r4VP                  V 4       VP                  4        VP                  \        P                   ! R4      4      P#                  4       pVP%                  V 4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z7Try downloading a flight of Table in a GeneratorStream.rT   r9   rõ   r  r   Nru  )r>   r@   rA   r?   r5  rá   r   r  rª   r
   rq   rr   rp   rw  r  r}   r«  r½   rš   r]  s         r   Ú%test_flight_generator_stream_of_tablern  ž  sñ   € ä�8‰8×ÑÜ
�Š”�q˜)Ó$Ó%ð!àˆUð  ó €Dô 
%×	&Ô	&¨&Ü˜+ v§{¡{Ð3×4Ô4¸Ø—M‘M¤&×"9Ñ"9×"BÑ"BÀ6Ó"JØ"&§+¡+ó/‰	ˆà×Ñ˜4Ô Ø�‰ŒØ—‘œvŸ}š}¨SÓ1Ó2×;Ñ;Ó=ˆØ�}‰}˜T×"Ò"Ð"Ñ"÷ 5÷ 
'Ñ	&ß4×4ú÷ 
'×	&Ð	&úrb  c            
     óF  € \         P                  P                  \         P                  ! . RO\         P                  ! \         P
                  ! 4       \         P                  ! 4       4      4      \         P                  ! . R	O4      .RR.R7      p \        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  P                  R4      V P                  4      w  r4VP                  V 4       VP!                  4        VP#                  \        P$                  ! R4      4      P'                  4       pVP)                  V 4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)
zK
Try downloading a flight of Table with dictionaries
in a GeneratorStream.
rT   rU   r9   rõ   r  r   Nrd  re  rh  r]  s         r   Ú/test_flight_generator_stream_of_table_with_dictrp  ®  rk  rl  c            	     ó®  € \         P                  P                  \         P                  ! \	        ^ R4      4      .R.R7      p \        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  P                  R4      V P                  4      w  r4VP                  V 4       VP                  4        VP                  \        P                   ! R4      4      P#                  4       pVP%                  V 4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zCTry downloading a flight of RecordBatchReader in a GeneratorStream.rT   r9   rõ   r  r   Nru  )r>   r@   rA   r?   r5  ré   r   r  rª   r
   rq   rr   rp   rw  r  r}   r«  r½   rš   r]  s         r   Ú3test_flight_generator_stream_of_record_batch_readerrr  Ã  sñ   € ä�8‰8×ÑÜ
�Š”�q˜)Ó$Ó%ð!àˆUð  ó €Dô 
1×	2Ô	2°fÜ˜+ v§{¡{Ð3×4Ô4¸Ø—M‘M¤&×"9Ñ"9×"BÑ"BÀ6Ó"JØ"&§+¡+ó/‰	ˆà×Ñ˜4Ô Ø�‰ŒØ—‘œvŸ}š}¨SÓ1Ó2×;Ñ;Ó=ˆØ�}‰}˜T×"Ò"Ð"Ñ"÷ 5÷ 
3Ñ	2ß4×4ú÷ 
3×	2Ð	2úrb  c            
     óF  € \         P                  P                  \         P                  ! . RO\         P                  ! \         P
                  ! 4       \         P                  ! 4       4      4      \         P                  ! . R	O4      .RR.R7      p \        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  P                  R4      V P                  4      w  r4VP                  V 4       VP!                  4        VP#                  \        P$                  ! R4      4      P'                  4       pVP)                  V 4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)
zW
Try downloading a flight of RecordBatchReader with dictionaries
in a GeneratorStream.
rT   rU   r9   rõ   r  r   Nrd  re  rh  r]  s         r   Ú=test_flight_generator_stream_of_record_batch_reader_with_dictrt  Ó  rk  rl  c                 óÐ  € \        4       ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        P                  ! \
        P                  4      ;_uu_ 4        VP                  \        P                  ! R4      4      P                  4        RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)z+Try streaming data with mismatched schemas.rõ   r   N)r&  r   r  r¬  r­  r>   ÚArrowExceptionr}   r
   r«  r½   r  s     r   Ú$test_flight_invalid_generator_streamrw  è  s„   € ä	"×	$Ô	$¨Ü˜+ v§{¡{Ð3×4Ô4¸Ü�]Š]œ2×,Ñ,×-Õ-Ø�M‰Mœ&Ÿ-š-¨Ó,Ó-×6Ñ6Ô8÷ .÷ 5÷ 
%Ñ	$ç-×-ú÷ 5×4ú÷ 
%×	$Ð	$ús:   “ C³-C	Á 4B.ÂC	ÂCÂ.B>Â9C	ÃCÃCÃC%	c                 óü  € \        4       ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        P                  ! RR4      p\        P
                  ! RR7      p\        P                  ! \        P                  4      ;_uu_ 4        \        VP                  W#R7      4       RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)z)Make sure timeouts fire on slow requests.rõ   r  r   gš™™™™™É?r  ry   N)r:  r   r  r
   r¨  r   r¬  r­  rP  r  rÛ   )rõ  r	  rÚ   rf   s       r   Útest_timeout_firesry  ð  s¢   € ô 
×	Ô	˜vÜ˜+ v§{¡{Ð3×4Ô4¸Ü—’˜r 3Ó'ˆÜ×*Ò*°3Ô7ˆô �]Š]œ6×5Ñ5×6Õ6Ü�×!Ñ! &Ð!Ó:Ô;÷ 7÷ 5÷ 
Ñ	÷ 7×6ú÷ 5×4ú÷ 
×	Ð	ús;   “ C*³AC	ÂCÂ*C	Â2C*ÃCÃC	ÃC'Ã"C*Ã*C;	c            	     ór  € \        4       ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        P                  ! RR7      pVP                  \        P                  ! R4      VR7      P                  4        RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z0Make sure timeouts do not fire on fast requests.rõ   r(  r  r`   ry   N)r^   r   r  r
   r   r}   r«  r½   )rõ  r	  rf   s      r   Útest_timeout_passesr{  þ  su   € ä	×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ü×*Ò*°3Ô7ˆØ�‰”f—m’m GÓ,°gˆÓ>×GÑGÔI÷ 5÷ 
 Ñ	ß4×4ú÷ 
 ×	Ð	ús#   “ B%³AB	Â B%ÂB"ÂB%Â%B6	c            
     óà  € \         P                  P                  \         P                  ! . R	O4      .R.R7      p \	        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       p\        P                  ! \        ^.R7      R7      pVP                  \        P                  ! R4      VR7      P                  4       pVP                  \        P                  ! R4      4      P                  4       pVP                  ^8X  g   Q hVP                  ^8X  g   Q hW@8X  g   Q hV\        4       8X  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)
z"Make sure ReadOptions can be used.rU   r9   rõ   )Úincluded_fields)Úread_optionsrb   ry   NrX   )r>   r@   rA   r?   r^   r   r  r
   r   r   r}   r«  r½   Únum_columnsr\   )Úexpectedrõ  r	  rf   Ú	response1Ú	response2s         r   Útest_read_optionsrƒ    s  € ä�x‰x×#Ñ#¤R§X¢XªlÓ%;Ð$<ÀSÀEÐ#ÓJ€HÜ	×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ü×*Ò*Ü'¸¸Ô<ô>ˆà—M‘M¤&§-¢-Øó#Ø&ð "ó (ß(0©«
ð 	à—M‘M¤&§-¢-°Ó"9Ó:×CÑCÓEˆ	à×$Ñ$¨Ô)Ð)Ð)Ø×$Ñ$¨Ô)Ð)Ð)ØÔ$Ð$Ð$ØÔ1Ó3Ô3Ð3Ñ3÷ 5÷ 
 Ñ	ß4×4ú÷ 
 ×	Ð	ús%   Á EÁ,C
E		Ä7EÅ	EÅEÅE-	ó   tests   p4ssw0rdr¬  c                 óÜ  € \        \        R7      ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        P
                  ! RR4      p\        P                  ! \        P                  RR7      ;_uu_ 4        \        VP                  V4      4       RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)z,Test that auth fails when not authenticated.©Úauth_handlerrõ   rÒ   r   z.*unauthenticated.*r  N)rÅ   Úbasic_auth_handlerr   r  r
   r¨  r¬  r­  rR  r  rÛ   ©rõ  r	  rÚ   s      r   Útest_http_basic_unauthrŠ     s›   € ô 
 Ô-?×	@Õ	@ÀFÜ˜+ v§{¡{Ð3×4Ô4¸Ü—’˜z¨3Ó/ˆÜ�]Š]œ6×<Ñ<Ø!6÷8ö 8ä�×!Ñ! &Ó)Ô*÷8÷ 5÷ 
AÑ	@÷8÷ 8ú÷ 5×4ú÷ 
A×	@Ð	@ús;   ™ C¹AC	Á?B4ÂC	Â"CÂ4CÂ?C	ÃCÃCÃC+	z,ARROW-10013: gRPC on Windows corrupts peer()c            
     ó  € \        \        R7      ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        P
                  ! RR4      pVP                  \        RR4      4       VP                  V4      p\        V4      pVP                  P                  4       R8X  g   Q h\        V4      pVP                  P                  4       R8w  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	z:Test a Python implementation of HTTP basic authentication.r†  rõ   rÒ   r   r  Úp4ssw0rdr„  N)rÅ   rˆ  r   r  r
   r¨  r¥  r¯  rÛ   ÚnextrF  rž   )rõ  r	  rÚ   rL  ÚidentityÚpeer_addresss         r   Útest_http_basic_authr�  +  sÊ   € ô 
 Ô-?×	@Õ	@ÀFÜ˜+ v§{¡{Ð3×4Ô4¸Ü—’˜z¨3Ó/ˆØ×ÑÔ6°v¸zÓJÔKØ×"Ñ" 6Ó*ˆÜ˜“=ˆØ�}‰}×'Ñ'Ó)¨WÔ4Ð4Ð4Ü˜G“}ˆØ× Ñ ×+Ñ+Ó-°Ô4Ð4Ñ4÷ 5÷ 
AÑ	@ß4×4ú÷ 
A×	@Ð	@ús#   ™ C;¹BC(	ÃC;Ã(C8Ã3C;Ã;D	c                 ó  € \        \        R7      ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        P
                  ! RR4      p\        P                  ! \        P                  RR7      ;_uu_ 4        VP                  \        RR4      4       \        VP                  V4      4       R	R	R	4       R	R	R	4       R	R	R	4       R	#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R	# ; i)
z-Test that auth fails with the wrong password.r†  rõ   rÒ   r   z.*wrong password.*r  r  ÚwrongN)rÅ   rˆ  r   r  r
   r¨  r¬  r­  rR  r¥  r¯  r�  rÛ   r‰  s      r   Ú%test_http_basic_auth_invalid_passwordr“  :  s¯   € ä	Ô-?×	@Õ	@ÀFÜ˜+ v§{¡{Ð3×4Ô4¸Ü—’˜z¨3Ó/ˆÜ�]Š]œ6×<Ñ<Ø!5÷7ö 7à×ÑÔ :¸6À7Ó KÔLÜ�×!Ñ! &Ó)Ô*÷7÷ 5÷ 
AÑ	@÷7÷ 7ú÷ 5×4ú÷ 
A×	@Ð	@ús;   ™ C5¹AC"	Á?6CÂ5C"	Â=C5ÃCÃC"	Ã"C2Ã-C5Ã5D	c            
     óÂ  € \        \        R7      ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        P
                  ! RR4      pVP                  \        RR4      4       \        VP                  V4      4      pVP                  P                  4       R8X  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	ú-Test an auth mechanism that uses a handshake.r†  rõ   rÒ   r   r  rŒ  r„  N)rÅ   Útoken_auth_handlerr   r  r
   r¨  r¥  rÎ  r�  rÛ   rF  rž   )rõ  r	  rÚ   rŽ  s       r   Útest_token_authr—  E  sž   € ä	Ô-?×	@Õ	@ÀFÜ˜+ v§{¡{Ð3×4Ô4¸Ü—’˜z¨3Ó/ˆØ×ÑÔ2°6¸:ÓFÔGÜ˜×(Ñ(¨Ó0Ó1ˆØ�}‰}×'Ñ'Ó)¨WÔ4Ð4Ñ4÷	 5÷ 
AÑ	@ß4×4ú÷ 
A×	@Ð	@ús#   ™ C¹A.B:	Â(CÂ:C
ÃCÃC	c                 ó¬  € \        \        R7      ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        P
                  ! \        P                  4      ;_uu_ 4        VP                  \        RR4      4       RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)r•  r†  rõ   r  r’  N)
rÅ   r–  r   r  r¬  r­  r
   rR  r¥  rÎ  r  s     r   Útest_token_auth_invalidr™  O  s�   € ä	Ô-?×	@Õ	@ÀFÜ˜+ v§{¡{Ð3×4Ô4¸Ü�]Š]œ6×<Ñ<×=Õ=Ø×ÑÔ 6°v¸wÓ GÔH÷ >÷ 5÷ 
AÑ	@ç=×=ú÷ 5×4ú÷ 
A×	@Ð	@ús:   ™ C¹-B/	Á&BÂB/	Â
CÂB,Â'B/	Â/B?Â:CÃC	c            	     ób  € \        \        R\        4       /R7      ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       pVP                  RR4      pV^ ,          R8X  g   Q hV^,          R8X  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	zATest authenticate_basic_token with bearer token and auth headers.r¤  ©r‡  r  rõ   r„  ó   passwordrø  ó   Bearer token1234N)r  Úno_op_auth_handlerrý  r   r  Úauthenticate_basic_token)rõ  r	  Ú
token_pairs      r   Útest_authenticate_basic_tokenr¡  [  sš   € ä	Ô-?ØÔ1Ó3ðM÷ 
õ 
à
Ü˜+ v§{¡{Ð3×4Ô4¸Ø×4Ñ4°W¸kÓJˆ
Ø˜!�}Ð 0Ô0Ð0Ð0Ø˜!�}Ð 3Ô3Ð3Ñ3÷ 5÷
ñ 
÷ 5×4ú÷
÷ 
ð 
ús#   ¤ BÁ3B
	Á8BÂ
BÂBÂB.	c                 ó°  € \        \        R\        4       /R7      ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\
        P                  ! \        P                  4      ;_uu_ 4        VP                  RR4       RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)z7Test authenticate_basic_token with an invalid password.r¤  r›  rõ   r„  s   badpasswordN)
r  rž  rý  r   r  r¬  r­  r
   rR  rŸ  r  s     r   Ú.test_authenticate_basic_token_invalid_passwordr£  f  s•   € ä	Ô-?ØÔ1Ó3ðM÷ 
õ 
à
Ü˜+ v§{¡{Ð3×4Ô4¸Ü�]Š]œ6×<Ñ<×=Õ=Ø×+Ñ+¨G°^ÔD÷ >÷ 5÷
ñ 
÷ >×=ú÷ 5×4ú÷
÷ 
ð 
ús;   ¤ CÁ-B1	Á1BÂB1	ÂCÂB.Â)B1	Â1CÂ<CÃC	c                 óD  € \        \        R\        4       /R7      ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       pVP                  RR4      pV^ ,          R8X  g   Q hV^,          R8X  g   Q h\        P                  ! V.R7      p\        VP                  \        P                  ! R	R
4      VR7      4      pV^ ,          P                  P                  4       R8X  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z@Test authenticate_basic_token and doAction after authentication.r¤  r›  rõ   r„  rœ  rø  r�  ©rÞ  útest-actionr   ©rÚ   rf   ó	   token1234N)r  rž  rý  r   r  rŸ  r
   r   r  rÛ   r¨  rF  rž   ©rõ  r	  r   rf   r‘  s        r   Ú(test_authenticate_basic_token_and_actionrª  p  sù   € ä	Ô-?ØÔ1Ó3ðM÷ 
õ 
à
Ü˜+ v§{¡{Ð3×4Ô4¸Ø×4Ñ4°W¸kÓJˆ
Ø˜!�}Ð 0Ô0Ð0Ð0Ø˜!�}Ð 3Ô3Ð3Ð3Ü×*Ò*°J°<Ô@ˆÜ�f×&Ñ&Ü—=’= °Ó4¸gð 'ó Gó Hˆà�a�y�~‰~×(Ñ(Ó*¨lÔ:Ð:Ñ:÷ 5÷
ñ 
÷ 5×4ú÷
÷ 
ð 
ús$   ¤ DÁB$C;	Ã)DÃ;DÄDÄD	c            
     ó�  € \        \        R\        4       /R7      ;_uu_ 4       p \        4       p\	        RV P
                  3V.R7      p\        P                  ! R4      p\        P                  ! RRV,           3.R7      p\        VP                  \        P                  ! R	R
4      VR7      4      pV^ ,          P                  P                  4       R8X  g   Q hVP                  ^ ,          R8X  g   Q hVP                  ^,          R8X  g   Q h\        VP                  \        P                  ! R	R
4      VR7      4      pV^ ,          P                  P                  4       R8X  g   Q hVP                  ^ ,          R8X  g   Q hVP                  ^,          R8X  g   Q hVP!                  4        RRR4       R#   + '       g   i     R# ; i)zˆTest authenticate_basic_token with client middleware
to intercept authorization header returned by the
HTTP header auth enabled server.
r¤  r›  rõ   ©r  s   test:passwordrø  s   Basic r¥  r¦  r   r§  r¨  Nr�  )r  rž  rý  râ  r   r  rÅ  rÆ  r
   r   r  rÛ   r¨  rF  rž   rå  r  )rõ  Úclient_auth_middlewarer	  Úencoded_credentialsrf   r‘  Úresult2s          r   Ú4test_authenticate_basic_token_with_client_middlewarer°    s°  € ô
 
 Ô-?ØÔ1Ó3ðM÷ 
õ 
à
Ü!BÓ!DÐÜØ˜&Ÿ+™+Ð&Ø.Ð/ô
ˆô %×.Ò.Ð/?Ó@ÐÜ×*Ò*Ø˜yÐ+>Õ>Ð?ð4
ô ˆô �f×&Ñ&Ü—=’= °Ó4¸gð 'ó Gó Hˆà�a�y�~‰~×(Ñ(Ó*¨lÔ:Ð:Ð:Ø%×5Ñ5°aÕ8Ð<LÔLÐLÐLØ%×5Ñ5°aÕ8Ø%ô&ð 	&ð &ä�v×'Ñ'Ü—=’= °Ó4¸gð (ó Gó Hˆà�q�z�‰×)Ñ)Ó+¨|Ô;Ð;Ð;Ø%×5Ñ5°aÕ8Ð<LÔLÐLÐLØ%×5Ñ5°aÕ8Ø%ô&ð 	&ð &à�‰Œ÷1
÷ 
÷ 
ò 
ús   ¤FF4Æ4G	c                 ó¬  € \        \        R\        4       R\        4       /R7      ;_uu_ 4       p \	        RV P
                  34      ;_uu_ 4       pVP                  RR4      pV^ ,          R8X  g   Q hV^,          R8X  g   Q h\        P                  ! VRR.R7      p\        VP                  \        P                  ! RR4      VR7      4      pV^ ,          P                  P                  4       R	8X  g   Q hV^,          P                  P                  4       R
8X  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z:Test passing multiple arbitrary headers to the middleware.r¤  r-  r›  rõ   r„  rœ  rø  r�  ó   value1ó   value2r¥  r¦  r   ry   N)s   test-header-1r²  )s   test-header-2r³  )r+  rž  rý  r  r   r  rŸ  r
   r   r  rÛ   r¨  rF  rž   r©  s        r   Ú-test_arbitrary_headers_in_flight_call_optionsr´  Ÿ  s1  € ä	%Ü'àÔ5Ó7ØÔ!HÓ!Jð
÷
õ 
ð
 Ü˜+ v§{¡{Ð3×4Ô4¸Ø×4Ñ4°W¸kÓJˆ
Ø˜!�}Ð 0Ô0Ð0Ð0Ø˜!�}Ð 3Ô3Ð3Ð3Ü×*Ò*ØØ)Ø)ð4
ô ˆô
 �f×&Ñ&¤v§}¢}Ø˜3ó( Ø)0ð 'ó 2ó 3ˆà�a�y�~‰~×(Ñ(Ó*¨iÔ7Ð7Ð7Ø�a�y�~‰~×(Ñ(Ó*¨iÔ7Ð7Ñ7÷ 5÷
ñ 
÷ 5×4ú÷
÷ 
ð 
ús$   ® EÁCD/	ÄEÄ/D?Ä:EÅE	c                 ór  € \         P                  ! \        P                  RR7      ;_uu_ 4        \        P
                  ! R4       RRR4       \         P                  ! \        P                  RR7      ;_uu_ 4        \        R4       RRR4       R#   + '       g   i     LT; i  + '       g   i     R# ; i)zTest constructing invalid URIs.z.*Cannot parse URI:.*r  Ú%N)r¬  r­  r>   rT  r
   r  r^   r"   r   r   Útest_location_invalidr·  ¶  sj   € ä	�Š”r—‘Ð.E×	FÖ	FÜ�Š�sÔ÷ 
Gô 
�Š”r—‘Ð.E×	FÖ	FÜ˜SÔ!÷ 
GÑ	F÷ 
G×	Fú÷ 
G×	FÐ	Fús   ¯BÁ<B%ÂB"	Â%B6	c                 ó¢   € \         P                  ! R4      P                  R8X  g   Q h\         P                  ! R4      P                  R8X  g   Q hR# )z,Test creating locations for unknown schemes.zs3://foos   s3://foozhttps://example.com/bar.parquets   https://example.com/bar.parquetN)r
   rû   Úurir"   r   r   Útest_location_unknown_schemerº  ¿  sD   € ä�?Š?˜:Ó&×*Ñ*¨kÔ9Ð9Ð9Ü�?Š?Ð<Ó=×AÑAØ*ô+ð +ò +r   c                 ó  € \        4       p \        V R,          R7      ;_uu_ 4       p\        R\        VP                  4      ,           4      ;_uu_ 4       p\
        P                  ! \        P                  4      ;_uu_ 4        VP                  \        P                  ! R4      4      P                  4        RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)z>Make sure clients cannot connect when cert verification fails.r1   ©Útls_certificateszgrpc+tls://localhost:r`   N)r5   r^   r   r|  r  r¬  r­  r
   ÚFlightUnavailableErrorr}   r«  r½   ©Úcertsr¡  r	  s      r   Útest_tls_failsrÁ  Æ  s¤   € ô Ó€Eô 
¨u°^Õ/D×	EÕ	EÈÜÐ0´3°q·v±v³;Õ>×?Ô?À6ô �]Š]œ6×8Ñ8×9Õ9Ø�M‰Mœ&Ÿ-š-¨Ó0Ó1×:Ñ:Ô<÷ :÷ @÷ 
FÑ	E÷ :×9ú÷ @×?ú÷ 
F×	EÐ	Eús;   ¦.C5Á-C"	Â4CÂ5C"	Â=C5ÃCÃC"	Ã"C2Ã-C5Ã5D	c            	     óÀ  € \        4       p \        4       p\        VR,          R7      ;_uu_ 4       p\        RVP                  3VR,          R7      ;_uu_ 4       pVP                  \        P                  ! R4      4      P                  4       pVP                  V 4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z"Try a simple do_get call over TLS.r1   r¼  rõ   r0   )Útls_root_certsr`   N)
rC   r5   r^   r   r  r}   r
   r«  r½   rš   ©r|   rÀ  r¡  r	  rB   s        r   Útest_tls_do_getrÅ  Ö  s¤   € ô Ó€EÜÓ€Eä	¨u°^Õ/D×	EÕ	EÈÜ�k 1§6¡6Ð*Ø$)¨+Õ$6÷	8õ 	8Ø;AØ�}‰}œVŸ]š]¨7Ó3Ó4×=Ñ=Ó?ˆØ�{‰{˜5×!Ò!Ð!Ñ!÷	8÷ 
FÑ	E÷	8÷ 	8ú÷ 
F×	EÐ	Eús$   °)CÁAB9	Â'CÂ9C	ÃCÃC	c                 óØ  € \        4       p \        4       p\        VR,          R7      ;_uu_ 4       p \        RVP                  3RR7      pXP                  \        P                  ! R4      4      P                  4       pVP                  V 4      '       g   Q hVP                  4        RRR4       R#   \
         d    \        P                  ! R4        L‰i ; i  + '       g   i     R# ; i)	zDTry a simple do_get call over TLS with server verification disabled.r1   r¼  rõ   T©Údisable_server_verificationz4disable_server_verification feature is not availabler`   N)rC   r5   r^   r   r  rØ   r¬  Úskipr}   r
   r«  r½   rš   r  rÄ  s        r   Ú$test_tls_disable_server_verificationrÊ  ã  s»   € ô Ó€EÜÓ€Eä	¨u°^Õ/D×	EÕ	EÈð	PÜ! ;°·±Ð"7Ø>BôDˆFð �}‰}œVŸ]š]¨7Ó3Ó4×=Ñ=Ó?ˆØ�{‰{˜5×!Ò!Ð!Ð!Ø�‰Œ÷ 
FÑ	Eøô #ô 	PÜ�KŠKÐNÖOð	Pú÷	 
F×	EÐ	Eús5   °C²B1ÁA	CÂCÂ1!CÃCÃCÃCÃC)	c                 ó  € \        4       p \        V R,          R7      ;_uu_ 4       p\        P                  ! RVP                  3V R,          RR7      ;_uu_ 4       p\
        P                  ! \        P                  4      ;_uu_ 4        VP                  \        P                  ! R4      4       RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)	z5Check that incorrectly overriding the hostname fails.r1   r¼  rõ   r0   Úfakehostname)rÃ  Úoverride_hostnamer`   N)
r5   r^   r
   r  r  r¬  r­  r¾  r}   r«  r¿  s      r   Útest_tls_override_hostnamerÎ  ô  s¦   € ô Ó€Eä	¨u°^Õ/D×	EÕ	EÈÜ�Š˜ Q§V¡VÐ,Ø&+¨KÕ&8Ø)7÷	9õ 	9à<BÜ�]Š]œ6×8Ñ8×9Õ9Ø�M‰Mœ&Ÿ-š-¨Ó0Ô1÷ :÷	9÷ 
FÑ	E÷ :×9ú÷	9÷ 	9ú÷ 
F×	EÐ	Eús;   ¦5C.Á-C	Â&CÂ.C	Â6C.ÃCÃC	ÃC+Ã&C.Ã.C?	c            
     ó¼  € \         P                  ! . RO4      .p \         P                  P                  V R.R7      p. p\	        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  ! R4      4      p^ pV FN  w  rxVP                  V4       \        P                  ! RVP                  4       4      w  p	Wi8X  g   Q hV^,          pKP  	  \         P                  P                  V4      p V P                  V4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z'Try a simple do_get call with metadata.rT   r9   rõ   r   r—   Nr;   )r>   r?   r@   rA   r‹   r   r  r}   r
   r«  rc  rœ   r�   rž   Úfrom_batchesrš   )
rB   r|   Úbatchesrõ  r	  r£   r¯   r§   ÚmetadataÚ
server_idxs
             r   Útest_flight_do_get_metadatarÔ    s
  € ô 	�ŠÒ$Ó%ð€Dô �H‰H× Ñ  ¨c¨UÐ Ó3€Eà€GÜ	×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ø—‘œvŸ}š}¨SÓ1Ó2ˆØˆÛ%‰OˆEØ�N‰N˜5Ô!Ü Ÿ-š-¨¨h×.AÑ.AÓ.CÓD‰KˆJØÔ$Ð$Ð$Ø�1�HŠCñ	  &ô
 �x‰x×$Ñ$ WÓ-ˆØ�{‰{˜5×!Ò!Ð!Ñ!÷ 5÷ 
 Ñ	ß4×4ú÷ 
 ×	Ð	ús+   Á E
Á0B1D7	Ä"D7	Ä%E
Ä7EÅE
Å
E	c            
     óî  € . p . p\        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P
                  ! R4      4      p^ p  VP                  4       w  rgV P                  V4       \        P                  ! RVP                  4       4      w  pWX8X  g   Q hV^,          pK_    \         d     Mi ; iRRR4       M  + '       g   i     M; iRRR4       M  + '       g   i     M; i\        4       ;_uu_ 4       p\        RTP                  34      ;_uu_ 4       pTP                  \        P
                  ! R4      4      p^ pT FN  w  rgTP                  T4       \        P                  ! RTP                  4       4      w  pYX8X  g   Q hT^,          pKP  	  RRR4       M  + '       g   i     M; iRRR4       M  + '       g   i     M; iY8X  g   Q hR# )z0Verify the iterator interface works as expected.rõ   r   r—   N)r‹   r   r  r}   r
   r«  Ú
read_chunkrc  rœ   r�   rž   ÚStopIteration)	Úbatches1Úbatches2rõ  r	  r£   r¯   r§   rÒ  rÓ  s	            r   Ú1test_flight_metadata_record_batch_reader_iteratorrÚ    s€  € à€HØ€Hä	×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ø—‘œvŸ}š}¨SÓ1Ó2ˆØˆØðØ"(×"3Ñ"3Ó"5‘�Ø—‘ Ô&Ü$Ÿmšm¨D°(×2EÑ2EÓ2GÓH‘�
ØÔ(Ð(Ð(Ø�q•’øÜ ô Ùðú÷ 5×4×4Ð4ú÷ 
 ×	×	Ð	úô 
×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ø—‘œvŸ}š}¨SÓ1Ó2ˆØˆÛ%‰OˆEØ�O‰O˜EÔ"Ü Ÿ-š-¨¨h×.AÑ.AÓ.CÓD‰KˆJØÔ$Ð$Ð$Ø�1�HŠCñ	  &÷ 5×4×4Ð4ú÷ 
 ×	×	Ð	úð ÔÐÒsl   — C4·)C	Á!AB>Â<C	Â>CÃ	C	ÃCÃC	Ã	C4ÃC(Ã#C4Ã4D	Ä GÄ9A<F>	Æ5	GÆ>GÇ	GÇG*	c            	     ór  € \         P                  P                  \         P                  ! . RO4      .R.R7      p \         P                  P                  \         P                  P                  P                  R7      p\        VR7      ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  ! R4      4      pVP                  4       pVP                  V 4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	z2Try a simple do_get call with V4 metadata version.rT   r9   r  ry   rõ   r   Nr;   )r>   r@   rA   r?   r  r  r   r!  r‹   r   r  r}   r
   r«  r½   rš   )r|   rf   rõ  r	  r£   rB   s         r   Útest_flight_do_get_metadata_v4rÜ  6  sÖ   € ä�H‰H× Ñ Ü	�ŠÒ%Ó	&Ð'°¨uð !ó 6€Eä�f‰f×$Ñ$ÜŸ™×/Ñ/×2Ñ2ð %ó 4€Gä	 g×	.Õ	.°&Ü˜+ v§{¡{Ð3×4Ô4¸Ø—‘œvŸ}š}¨SÓ1Ó2ˆØ�‰Ó ˆØ�{‰{˜5×!Ò!Ð!Ñ!÷ 5÷ 
/Ñ	.ß4×4ú÷ 
/×	.Ð	.ús%   Â D%Â0AD	Ä D%ÄD"ÄD%Ä%D6	c                 ó4  € \         P                  ! . RO4      .p \         P                  P                  V R.R7      p\	        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  P                  R4      VP                  4      w  rET;_uu_ 4        \        VP                  ^R7      4       Fr  w  rg\        P                  ! RV4      pVP!                  Wx4       VP#                  4       p	V	f   Q h\        P$                  ! RV	P'                  4       4      w  p
Wj8X  d   Kr  Q h	  RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)	z'Try a simple do_put call with metadata.rT   r9   rõ   r  rÈ   r—   Nr;   )r>   r?   r@   rA   r‹   r   r  rª   r
   rq   rr   rp   r­   r®   rœ   r    r�  r'   r�   rž   )rB   r|   rõ  r	  r¤   Úmetadata_readerr¯   r§   rÒ  r¨   rÓ  s              r   Útest_flight_do_put_metadatarß  C  s3  € ô 	�ŠÒ$Ó%ð€Dô �H‰H× Ñ  ¨c¨UÐ Ó3€Eä	×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ø"(§-¡-Ü×#Ñ#×,Ñ,¨RÓ0Ø�L‰Ló#Ñˆ÷ ŠVÜ'¨×(8Ñ(8ÀqÐ(8Ó(IÖJ‘
�Ü!Ÿ;š; t¨SÓ1�Ø×*Ñ*¨5Ô;Ø%×*Ñ*Ó,�Ø’Ð&�Ü$Ÿmšm¨D°#·.±.Ó2BÓC‘�
ØÖ(Ð(Ð(ñ K÷ ÷	 5÷ 
 Ñ	÷
 �Vú÷	 5×4ú÷ 
 ×	Ð	úsD   Á FÁ.AE3	Â4B	E ÅE ÅE3	ÅFÅ E0Å+E3	Å3FÅ>FÆF	c                 ó‚  € \         P                  P                  \         P                  ! \        P
                  ! R\        P                  ! 4       R7      4      .R.R7      p \        4       ;_uu_ 4       p\        RVP                  3RR7      ;_uu_ 4       pVP                  \        P                  P                  R4      V P                  4      w  r4T;_uu_ 4        \        P                   ! \        P"                  R	R
7      ;_uu_ 4       pVP%                  V 4       RRR4       XP&                  P(                  R8X  g   Q hV P+                  ^ R4      V P+                  R4      .pV F  pVP%                  V4       K  	  RRR4       \         P,                  P/                  V .4      pVP1                  \        P2                  ! R4      4      P5                  4       p	W‰8X  g   Q h RRR4       RRR4       R#   + '       g   i     Là; i  + '       g   i     L‘; i  + '       g   i     L@; i  + '       g   i     R# ; i)z+Try a simple do_put call with a size limit.i   )ÚdtyperT   r9   rõ   i   )Úwrite_size_limit_bytesr  zexceeded soft limitr  Ni€  r   )r>   r›   rA   r?   ÚnpÚonesr—  r´   r   r  rª   r
   rq   rr   rp   r¬  r­  ÚFlightWriteSizeExceededErrorr‚  r�  ÚlimitÚslicer@   rÐ  r}   r«  r½   )
Úlarge_batchrõ  r	  r¤   rÞ  ÚexcinfoÚsmaller_batchesr§   r€  Úactuals
             r   Útest_flight_do_put_limitrì  Y  s¯  € ô —.‘.×,Ñ,Ü
�Š”—’˜¤B§H¢H£JÔ/Ó0ð.àˆUð -ó €Kô 
×	Ô	˜vÜ�k 6§;¡;Ð/Ø,0÷	2õ 	2Ø5;Ø"(§-¡-Ü×#Ñ#×,Ñ,¨RÓ0Ø×Ñó# Ñˆ÷ ŠVÜ—’œv×BÑBØ%:÷<õ <Ø?FØ×"Ñ" ;Ô/÷<ð —=‘=×&Ñ&¨$Ô.Ð.Ð.à×!Ñ! ! SÓ)Ø×!Ñ! #Ó&ðˆOó )�Ø×"Ñ" 5Ö)ñ )÷ ô —8‘8×(Ñ(¨+¨Ó7ˆØ—‘œvŸ}š}¨SÓ1Ó2×;Ñ;Ó=ˆØÔ!Ð!Ñ!÷%	2÷ 
Ñ	÷<÷ <ú÷ �Vú÷	2÷ 	2ú÷ 
×	Ð	úsW   Á3"H-ÂAH	Ã/HÄ
G4ÄA"HÅ>A#H	Ç"H-Ç4HÇ?HÈHÈH	ÈH*È%H-È-H>	c                 óø  € \        4       ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       pVP                  \        P
                  ! R4      4      pVP                  4        \        P                  ! \        P                  RR7      ;_uu_ 4        VP                  4        RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)z4Test canceling a DoGet operation on the client side.rõ   r`   z(?i).*cancel.*r  N)r^   r   r  r}   r
   r«  rJ  r¬  r­  rQ  rÖ  )rõ  r	  r£   s      r   Útest_cancel_do_getrî  v  sŸ   € ô 
×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ø—‘œvŸ}š}¨WÓ5Ó6ˆØ�‰ŒÜ�]Š]œ6×6Ñ6Ø!1÷3ö 3à×ÑÔ÷3÷ 5÷ 
 Ñ	÷3÷ 3ú÷ 5×4ú÷ 
 ×	Ð	ús;   “ C(³A$C	ÂCÂ(C	Â0C(ÃCÃC	ÃC%Ã C(Ã(C9	c                 ó@  aaaaa€ \        4       ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       pVP                  \        P
                  ! R4      4      o\        P                  ! 4       o\        P                  ! 4       o\        P                  ! 4       o\        P                  ! 4       oVVVVV3R lp\        P                  ! VRR7      pVP                  4        SP                  ^R7       SP                  4        SP                  4        VP                  ^R7       S;_uu_ 4        SP                  4       '       g   Q h RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)z5Test canceling a DoGet operation from another thread.rõ   r`   c                  ó6  <€ SP                  4        SP                  4        SP                  ^R7        SP                  4        R#   \        P                   d=    S;_uu_ 4        S P                  4        RRR4        R#   + '       g   i      R# ; ii ; i)r=   r  N)rÖ  ÚsetÚwaitr
   rQ  )Úraised_proper_exceptionÚread_first_messager£   Úresult_lockÚstream_canceleds   €€€€€r   Ú
block_readÚ/test_cancel_do_get_threaded.<locals>.block_read�  so   ø€ Ø×ÑÔØ×"Ñ"Ô$Ø× Ñ ¨Ð Ô+ð2Ø×!Ñ!Ö#øÜ×.Ñ.ô 2ß ’[Ø+×/Ñ/Ô1÷ !—[—[”[úð2ús)   µA ÁBÁ&BÁ7BÂBÂBÂBTr   r  N)r:  r   r  r}   r
   r«  r  ÚEventÚLockr  r  rò  rJ  rñ  ÚjoinÚis_set)	rõ  r	  r÷  r
  ró  rô  r£   rõ  rö  s	       @@@@@r   Útest_cancel_do_get_threadedrý  ‚  s  ü€ ô 
×	Ô	˜vÜ˜+ v§{¡{Ð3×4Ô4¸Ø—‘œvŸ}š}¨WÓ5Ó6ˆä&Ÿ_š_Ó.ÐÜ#Ÿ/š/Ó+ˆÜ—n’nÓ&ˆÜ"+§/¢/Ó"3Ð÷	2ñ 	2ô ×!Ò!¨¸DÔAˆØ�‰ŒØ×Ñ¨ÐÔ*Ø�‰ŒØ×ÑÔØ�‰˜AˆÔçŠ[Ø*×1Ñ1×3Ò3Ð3Ñ3÷ ÷3 5÷ 
Ñ	÷4 �[ú÷3 5×4ú÷ 
×	Ð	ús;   ˜ F¸C:E9	Ä2E&ÅE9	ÅFÅ&E6Å1E9	Å9F	ÆFÆF	c            
      ó`  € \        4       ;_uu_ 4       p \        R V P                  34      ;_uu_ 4       pVP                  \        P
                  ! RR4      4      p\        V4      P                  R8X  g   Q h?RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)rõ   rB  r   rŸ  N)r9  r   r  rÛ   r
   r¨  r�  rF  )rõ  r	  rL  s      r   Útest_streaming_do_actionrÿ  ¤  sy   € Ü	×	Ô	 Ü˜+ v§{¡{Ð3×4Ô4¸Ø×"Ñ"¤6§=¢=°¸CÓ#@ÓAˆÜ�G‹}×!Ñ! VÔ+Ð+Ð+à÷	 5÷ 
Ñ	ß4×4ú÷ 
×	Ð	ús#   “ B³AB		Á7BÂ	BÂBÂB-	c                 ó`	  € \         P                  ! RR4      p V \         P                  P                  V P                  4       4      8X  g   Q h\         P                  ! R4      pV\         P                  P                  VP                  4       4      8X  g   Q h\         P
                  ! R4      pV\         P
                  P                  VP                  4       4      8X  g   Q h\         P                  ! RR4      pV\         P                  P                  VP                  4       4      8X  g   Q h\         P                  ! \        P                  ! R\        P                  ! 4       3.4      4      pV\         P                  P                  VP                  4       4      8X  g   Q h\         P                  P                  R4      pV\         P                  P                  VP                  4       4      8X  g   Q h\         P                  P                  RR	R
4      pV\         P                  P                  VP                  4       4      8X  g   Q h\         P                  ! \        P                  ! R\        P                  ! 4       3.4      V\         P                  ! RR.4      \         P                  ! R\         P                   P#                  RR4      .\        P$                  ! R4      P'                  \        P(                  ! R4      4      R4      .^^*RR4      p\         P                  P                  VP                  4       4      pVP                  VP                  8X  g   Q hVP*                  VP*                  8X  g   Q hVP,                  VP,                  8X  g   Q hVP.                  VP.                  8X  g   Q hVP0                  VP0                  8X  g   Q hVP2                  VP2                  8X  g   Q hVP4                  VP4                  8X  g   Q h\         P                  ! VR\         P                   P#                  RR4      .\        P$                  ! R4      P'                  \        P(                  ! R4      4      R4      pV\         P                  P                  VP                  4       4      8X  g   Q hR# )z(Make sure serializable types round-trip.Úaction1s   action1-bodyrE   s   result1Ú	username1Ú	password1rT   r  rU   z
test.arrowr   rô   rõ   rö   r÷   rø   r¢  Tr£  r   r¡  N)r
   r¨  rŸ  rµ  r«  rª  rž  r  r>   rp   rù   rq   r©  rr   ro   rú   rû   rü   rý   rþ   rÿ   r¢   rÝ  rÙ  rß  r€  r1  )	rÚ   rz   r‘  r±  Úschema_resultÚdescr  Úinfo2rº  s	            r   Útest_roundtrip_typesr  ­  s�  € ä�]Š]˜9 oÓ6€FØ”V—]‘]×.Ñ.¨v×/?Ñ/?Ó/AÓBÔBÐBÐBä�]Š]˜5Ó!€FØ”V—]‘]×.Ñ.¨v×/?Ñ/?Ó/AÓBÔBÐBÐBä�]Š]˜:Ó&€FØ”V—]‘]×.Ñ.¨v×/?Ñ/?Ó/AÓBÔBÐBÐBä×!Ò! +¨{Ó;€JØœ×)Ñ)×5Ñ5°j×6JÑ6JÓ6LÓMÔMÐMÐMä×'Ò'¬¯	ª	°C¼¿º»Ð3DÐ2EÓ(FÓG€MØœF×/Ñ/×;Ñ;Ø×ÑÓ!ó#ô #ð #ð #ô ×"Ñ"×.Ñ.¨vÓ6€DØ”6×*Ñ*×6Ñ6°t·~±~Ó7GÓHÔHÐHÐHä×"Ñ"×+Ñ+¨C°°lÓC€DØ”6×*Ñ*×6Ñ6°t·~±~Ó7GÓHÔHÐHÐHä×ÒÜ
�	Š	�CœŸš›Ð$Ð%Ó&Øä×!Ò! #¨ Ó7Ü×!Ò!ØÜ—‘×-Ñ-¨k¸4Ó@ÐAÜ—	’	Ð9Ó:×?Ñ?ÄÇÂÈTÓ@RÓSØ(ó	ð	
ð 	
Ø
ØØó€Dô" ×Ñ×)Ñ)¨$¯.©.Ó*:Ó;€EØ�;‰;˜%Ÿ,™,Ô&Ð&Ð&Ø�?‰?˜e×.Ñ.Ô.Ð.Ð.Ø×Ñ˜u×0Ñ0Ô0Ð0Ð0Ø×Ñ ×!4Ñ!4Ô4Ð4Ð4Ø�<‰<˜5Ÿ=™=Ô(Ð(Ð(Ø×Ñ × 2Ñ 2Ô2Ð2Ð2Ø�>‰>˜UŸ_™_Ô,Ð,Ð,ä×$Ò$ØØ	œŸ™×4Ñ4°[À$ÓGÐHÜ
�	Š	Ð'Ó(×-Ñ-¬b¯lªl¸3Ó.?Ó@Ø ó	€Hð ”v×,Ñ,×8Ñ8¸×9KÑ9KÓ9MÓNÔNÐNÒNr   c                 ób  € \        4       ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\         P                  4       P	                  4        F]  w  r#\
        P                  ! VRR7      ;_uu_ 4        \        VP                  \        P                  ! VR4      4      4       RRR4       K_  	  \
        P                  ! \        P                  RR7      ;_uu_ 4        \        VP                  4       4       RRR4       \        P                  ! . RO4      .p\        P                  P!                  VR.R7      pR\        P                  R	\        P"                  R
\        P$                  R\        P&                  R\        P(                  /pVP	                  4        Fÿ  w  rx\
        P                  ! VRR7      ;_uu_ 4        VP+                  \        P,                  P/                  V4      VP0                  4      w  ršV	P3                  V4       V	P5                  4        RRR4       \
        P                  ! VRR7      ;_uu_ 4        VP+                  \        P,                  P/                  V4      VP0                  4      w  ršV	P5                  4        RRR4       EK  	  RRR4       RRR4       R#   + '       g   i     EKu  ; i  + '       g   i     ELØ; i  + '       g   i     LÄ; i  + '       g   i     EKc  ; i  + '       g   i     Lk; i  + '       g   i     R# ; i)z:Ensure that Flight errors propagate from server to client.rõ   z.*foo.*r  r   NrT   r9   rH  rI  rJ  rK  rL  r;   )rF  r   r  rV  rå  r¬  r­  r  rÛ   r
   r¨  rO  rv   r>   r?   r@   rA   rP  rQ  rR  rS  rª   rq   r©  rp   rw  r  )rõ  r	  ÚargÚexc_typerB   r|   Ú
exceptionsr`  Ú	exceptionr¤   r£   s              r   Útest_roundtrip_errorsr  è  s(  € ä	×	Ô	 Ü˜+ v§{¡{Ð3×4Ô4¸ä.×:Ñ:Ó<×BÑBÖD‰MˆCÜ—’˜x¨y×9Ö9Ü�V×%Ñ%¤f§m¢m°C¸Ó&=Ó>Ô?÷ :Ñ9ñ Eô �]Š]œ6×5Ñ5¸Y×GÖGÜ�×$Ñ$Ó&Ô'÷ Hô —’Ò,Ó-Ð.ˆÜ—‘×$Ñ$ T°#°Ð$Ó7ˆð œ×2Ñ2Øœ×2Ñ2Ø”f×1Ñ1Øœv×@Ñ@ØœF×:Ñ:ð
ˆ
ð #-×"2Ñ"2Ö"4ÑˆGä—’˜y°	×:Ö:Ø!'§¡Ü×+Ñ+×7Ñ7¸Ó@Ø—L‘Ló""‘�ð ×"Ñ" 5Ô)Ø—‘”÷ ;ô —’˜y°	×:Ö:Ø!'§¡Ü×+Ñ+×7Ñ7¸Ó@Ø—L‘Ló""‘�ð —‘”÷	 ;Ò:ñ #5÷' 5÷ 
Ñ	÷ :×9Ñ9úçG×GÐGú÷  ;×:ú÷ ;×:Ñ:ú÷9 5×4ú÷ 
×	Ð	ús†   “ L³AL
	Á;0J9Â+:L
	Ã%KÃ?C
L
	Ç	AK"È&(L
	ÉAK5ÊL
	Ê'LÊ9KË
L
	ËKË	L
	Ë"K2Ë-L
	Ë5LÌ 
L
	Ì
LÌLÌL.	c                 óŠ  aa€ \         P                  ! . R
O4      .p \         P                  P                  V R.R7      p\	        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  P                  R4      VP                  4      w  po^ .oVV3R lp\        P                  ! VR7      pVP                  4        VP                  ^R7      pT;_uu_ 4        \!        V4       F-  w  r‰\"        P$                  ! RV4      p
VP'                  Wš4       K/  	  VP)                  4        VP+                  4        R	R	R	4       S^ ,          \-        V4      8X  g   Q h R	R	R	4       R	R	R	4       R	#   + '       g   i     L<; i  + '       g   i     L-; i  + '       g   i     R	# ; i)z7Ensure that separate threads can read/write on a DoPut.rT   r9   rõ   r  c                  óZ   <€ SP                  4       e   S ^ ;;,          ^,          uu&   K)  R # r±   )r'   )ÚcountrÞ  s   €€r   Ú_reader_threadÚ:test_do_put_independent_read_write.<locals>._reader_thread   s$   ø€ Ø!×&Ñ&Ó(Ò4Ø�a—˜A••ñ 5r   ©r  rÈ   r—   Nr;   )r>   r?   r@   rA   r‹   r   r  rª   r
   rq   rr   rp   r  r  r  r®   r­   rœ   r    r�  Údone_writingrû  r  )rB   r|   rõ  r	  r¤   r  r
  rÑ  r¯   r§   rÒ  r  rÞ  s              @@r   Ú"test_do_put_independent_read_writer    sS  ù€ ô 	�ŠÒ$Ó%ð€Dô �H‰H× Ñ  ¨c¨UÐ Ó3€Eä	×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ø"(§-¡-Ü×#Ñ#×,Ñ,¨RÓ0Ø�L‰Ló#Ñˆ�ð �ˆö	ô ×!Ò!¨Ô8ˆØ�‰Œà×"Ñ"°Ð"Ó3ˆßŠVÜ'¨Ö0‘
�Ü!Ÿ;š; t¨SÓ1�Ø×*Ñ*¨5Ö;ñ 1ð ×ÑÔ!à�K‰KŒM÷ ð �Q�xœ3˜w›<Ô'Ð'Ñ'÷3 5÷ 
 Ñ	÷  �Vú÷ 5×4ú÷ 
 ×	Ð	ús>   Á F1Á0B
F	Ã:AFÅ!F	Å9F1ÆFÆF	ÆF.Æ)F1Æ1G	c                 óÊ  € \        R\        4       /R7      ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\	        VP                  \        P                  ! RR4      4      4      p\        V4      ^8X  g   Q hV^ ,          P                  P                  4       pRV8X  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z@Ensure that server middleware run on the same thread as the RPC.r  r¬  rõ   r„  r   s   right valueN)r?  r;  r   r  r  rÛ   r
   r¨  r  rF  rž   )rõ  r	  rL  r�  s       r   Ú"test_server_middleware_same_threadr  5  s´   € ä	ØÔ-Ó/ð(÷ 
õ 
à
Ü˜+ v§{¡{Ð3×4Ô4¸Ü�v×'Ñ'¬¯ª°g¸sÓ(CÓDÓEˆÜ�7‹|˜qÔ Ð Ð Ø˜•
—‘×*Ñ*Ó,ˆØ Ô&Ð&Ñ&÷	 5÷
ñ 
÷ 5×4ú÷
÷ 
ð 
ús#   Ÿ C¿A,B>	Â,CÂ>CÃ	CÃC"	c                 óˆ  € \        R\        4       /R7      ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        P
                  ! \        P                  4      ;_uu_ 4        \        VP                  4       4       RRR4       \        P
                  ! \        P                  4      ;_uu_ 4        \        VP                  \        P                  ! RR4      4      4       RRR4       \        RV P                  3\        4       .R7      p\        VP                  \        P                  ! RR4      4      4      pRVP                   P#                  4       8X  g   Q h RRR4       RRR4       R#   + '       g   i     Lù; i  + '       g   i     L¨; i  + '       g   i     L@; i  + '       g   i     R# ; i)z-Test rejecting an RPC with server middleware.r  r¬  rõ   Nr   rœ  )r?  rI  r   r  r¬  r­  r>   ÚArrowNotImplementedErrorr  rÍ   r
   rR  rÛ   r¨  rQ  r�  rF  rž   )rõ  r	  Úresponses      r   Útest_middleware_rejectr  A  s3  € ä	ØÔ4Ó6ð(÷ 
õ 
à
Ü˜+ v§{¡{Ð3×4Ô4¸ä�]Š]œ2×6Ñ6×7Õ7Ü�×$Ñ$Ó&Ô'÷ 8ô �]Š]œ6×<Ñ<×=Õ=Ü�×!Ñ!¤&§-¢-°°SÓ"9Ó:Ô;÷ >ô Ø˜&Ÿ+™+Ð&Ü<Ó>Ð?ô
ˆô ˜×(Ñ(¬¯ª°s¸CÓ)@ÓAÓBˆØ˜hŸm™m×6Ñ6Ó8Ô8Ð8Ñ8÷ 5÷
ñ 
÷
 8×7ú÷ >×=ú÷ 5×4ú÷
÷ 
ð 
úsS   Ÿ F0¿-F	Á,E7Â4F	Â:0F
Ã*A:F	Å%F0Å7FÆF	Æ
FÆF	ÆF-Æ(F0Æ0G	c                 ó&	  € \        4       p \        4       p\        RV /R7      ;_uu_ 4       p\        RVP                  3V.R7      ;_uu_ 4       p\
        P                  P                  R4      p\        P                  ! \        4      ;_uu_ 4        \        VP                  4       4       RRR4       \        P                  ! \        4      ;_uu_ 4        VP                  V4       RRR4       \        P                  ! \        4      ;_uu_ 4        VP                  V4       RRR4       \        P                  ! \        4      ;_uu_ 4        VP                  \
        P                   ! R4      4       RRR4       \        P                  ! \        4      ;_uu_ 4        VP#                  V\$        P&                  ! . 4      4      w  rVVP)                  4        RRR4       \        P                  ! \        4      ;_uu_ 4        \        VP+                  \
        P,                  ! RR4      4      4       RRR4       \        P                  ! \        4      ;_uu_ 4        \        VP/                  4       4       RRR4       \        P                  ! \        4      ;_uu_ 4        VP1                  V4      w  rVVP)                  4        RRR4       \
        P2                  P4                  \
        P2                  P6                  \
        P2                  P8                  \
        P2                  P:                  \
        P2                  P<                  \
        P2                  P>                  \
        P2                  P@                  \
        P2                  PB                  .pV PD                  V8X  g   Q hVPD                  V8X  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     ELŸ; i  + '       g   i     ELP; i  + '       g   i     EL
; i  + '       g   i     ELÚ; i  + '       g   i     EL ; i  + '       g   i     Lº; i  + '       g   i     R# ; i)z/Test that middleware records methods correctly.r  r¬  rõ   r   N)#rY  rj  r   r   r  r
   rq   r©  r¬  r­  rØ   r  rv   r  r  r}   r«  rª   r>   rp   r  rÛ   r¨  rÍ   rÂ   rM  ÚLIST_FLIGHTSÚGET_FLIGHT_INFOÚ
GET_SCHEMAÚDO_GETÚDO_PUTÚ	DO_ACTIONrN  ÚDO_EXCHANGEr]  )Úserver_middlewareÚclient_middlewarerõ  r	  r¢   r¤   r^  r€  s           r   Útest_middleware_mappingr&  W  sà  € ä8Ó:ÐÜ8Ó:ÐÜ	 fÐ.?Ð%@×	AÕ	AÀVÜØ˜&Ÿ+™+Ð&Ø)Ð*÷	õ 	ð 
ä×,Ñ,×8Ñ8¸Ó=ˆ
Ü�]Š]Ô.×/Õ/Ü�×$Ñ$Ó&Ô'÷ 0ä�]Š]Ô.×/Õ/Ø×"Ñ" :Ô.÷ 0ä�]Š]Ô.×/Õ/Ø×Ñ˜jÔ)÷ 0ä�]Š]Ô.×/Õ/Ø�M‰Mœ&Ÿ-š-¨Ó,Ô-÷ 0ä�]Š]Ô.×/Õ/ØŸ™ j´"·)²)¸B³-Ó@‰IˆFØ�L‰LŒN÷ 0ô �]Š]Ô.×/Õ/Ü�×!Ñ!¤&§-¢-°°SÓ"9Ó:Ô;÷ 0ä�]Š]Ô.×/Õ/Ü�×$Ñ$Ó&Ô'÷ 0ä�]Š]Ô.×/Õ/Ø×*Ñ*¨:Ó6‰IˆFØ�L‰LŒN÷ 0ô
 ×Ñ×,Ñ,Ü×Ñ×/Ñ/Ü×Ñ×*Ñ*Ü×Ñ×&Ñ&Ü×Ñ×&Ñ&Ü×Ñ×)Ñ)Ü×Ñ×,Ñ,Ü×Ñ×+Ñ+ð	
ˆð !×(Ñ(¨HÔ4Ð4Ð4Ø ×(Ñ(¨HÔ4Ð4Ñ4÷I	÷ 
BÑ	A÷ 0×/Ð/úç/×/Ð/úç/×/Ð/úç/×/Ð/úç/×/Ð/ú÷ 0×/Ð/úç/×/Ð/úç/×/Ð/ú÷+	÷ 	ú÷ 
B×	AÐ	Aúså   «#Q?ÁAQ,	ÂOÂ**Q,	ÃO Ã&*Q,	ÄO4Ä"*Q,	Å&PÅ2*Q,	Æ9PÇ*Q,	Ç?0P0È/*Q,	ÉQÉ3*Q,	Ê$QËC8Q,	Î:Q?ÏOÏ	Q,	Ï O1Ï+	Q,	Ï4PÏ?	Q,	ÐPÐ	Q,	ÐP-Ð'	Q,	Ð0QÐ;	Q,	ÑQÑ	Q,	ÑQ)Ñ#	Q,	Ñ,Q<Ñ7Q?Ñ?R	c                  óÎ  € \        4       ;_uu_ 4       p \        R V P                  34      ;_uu_ 4       p \        VP	                  \
        P                  ! RR4      4      4       Q h  \
        P                   d0   pTP                  f   Q hTP                  pTR8X  g   Q h Rp?MRp?ii ; iRRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)rõ   rY  r   NrZ  )	rF  r   r  r  rÛ   r
   r¨  rS  Ú
extra_info)rõ  r	  ÚeÚeis       r   Útest_extra_infor+  ƒ  s§   € Ü	×	Ô	 Ü˜+ v§{¡{Ð3×4Ô4¸ð	5Ü�×!Ñ!¤&§-¢-°
¸CÓ"@ÓAÔBØ�5øÜ×-Ñ-ô 	5Ø—<‘<Ò+Ð+Ð+Ø—‘ˆBØÐ4Ô4Ð4Õ4ûð	5ú÷	 5×4×4Ð4ú÷ 
×	×	Ò	úsE   “ C³B6	µ1A&Á&B*Á;%B%Â B6	Â%B*Â*B6	Â-	CÂ6CÃCÃC$	c            	     óF  € \        4       p \        4       p\        V R,          ^ ,          .RV R,          R7      ;_uu_ 4       p\        RVP                  3V R,          V R,          ^ ,          P
                  V R,          ^ ,          P                  R7      ;_uu_ 4       pVP                  \        P                  ! R4      4      P                  4       pVP                  V4      '       g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	z!Test mutual TLS (mTLS) with gRPC.r1   Tr0   )r½  Úverify_clientÚroot_certificatesrõ   )rÃ  Ú
cert_chainÚprivate_keyr`   N)r5   rC   r^   r   r  r2   r3   r}   r
   r«  r½   rš   )rÀ  r|   r¡  r	  rB   s        r   Ú	test_mtlsr1  �  sí   € ô Ó€EÜÓ€Eä	Ø# NÕ3°AÕ6Ð7ØØ# KÕ0÷
2õ 
2ð 67ÜØ˜!Ÿ&™&Ð!Ø  Õ-Ø˜^Õ,¨QÕ/×4Ñ4Ø˜nÕ-¨aÕ0×4Ñ4÷		6õ 	6ð :@Ø�}‰}œVŸ]š]¨7Ó3Ó4×=Ñ=Ó?ˆØ�{‰{˜5×!Ò!Ð!Ñ!÷	6÷	
2ñ 
2÷	6÷ 	6ú÷	
2÷ 
2ð 
2ús&   ÁADÂAC<	Ã*DÃ<DÄDÄD 	c                 ó@  € \         P                  P                  \         P                  ! \	        ^ R4      4      .R.R7      p \        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       p\        P                  P                  R4      pVP                  V4      w  rEV;_uu_ 4        VP                  4       pRRR4       V X8X  g   Q h RRR4       RRR4       R#   + '       g   i     L,; i  + '       g   i     L-; i  + '       g   i     R# ; i)rt  rT   r9   rõ   rh  Nru  )r>   r@   rA   r?   r5  rc  r   r  r
   rq   r©  rÂ   r½   )r€  rõ  r	  r¢   r¤   r£   r|   s          r   Útest_doexchange_getr3  ¢  sÑ   € ä�x‰x×#Ñ#Ü
�Š”�q˜)Ó$Ó%ð%àˆUð $ó €Hô 
×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ü×,Ñ,×8Ñ8¸Ó@ˆ
Ø×+Ñ+¨JÓ7‰ˆßŠVØ—O‘OÓ%ˆE÷ à˜5Ô Ð Ñ ÷ 5÷ 
 Ñ	÷ �Vú÷ 5×4ú÷ 
 ×	Ð	ús<   Á DÁ4=C9	Â1C&ÃC9	ÃDÃ&C6Ã1C9	Ã9D	ÄDÄD	c                 ó¢  € \         P                  P                  \         P                  ! \	        ^ R	4      4      .R.R7      p V P                  RR7      p\        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       p\        P                  P                  R4      pVP                  V4      w  rVT;_uu_ 4        VP                  V P                  4       V F  pVP                  V4       K  	  VP!                  4        VP#                  4       pVP$                  e   Q h\'        \)        V4      4      P+                  R4      p	VP,                  V	8X  g   Q hVP.                  P0                  ^ 8X  g   Q h RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)
rz  rT   r9   é   rÈ   rõ   ri  NrÓ   ru  )r>   r@   rA   r?   r5  r®   rc  r   r  r
   rq   r©  rÂ   rv  rp   r‚  r  rÖ  rB   r|  r  r×   r€  r˜   r™   )
rB   rÑ  rõ  r	  r¢   r¤   r£   r§   rÁ   Úexpected_bufs
             r   Útest_doexchange_putr7  ±  s^  € ä�8‰8×ÑÜ
�Š”�q˜)Ó$Ó%ð!àˆUð  ó €Dð �o‰o¨CˆoÓ0€Gä	×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ü×,Ñ,×8Ñ8¸Ó@ˆ
Ø×+Ñ+¨JÓ7‰ˆßŠVØ�L‰L˜Ÿ™Ô%Û �Ø×"Ñ" 5Ö)ñ !à×ÑÔ!Ø×%Ñ%Ó'ˆEØ—:‘:Ò%Ð%Ð%Üœs 7›|Ó,×3Ñ3°GÓ<ˆLØ×%Ñ%¨Ô5Ð5Ð5à—<‘<×,Ñ,°Ô1Ð1Ñ1÷ ÷ 5÷ 
 Ñ	÷ �Vú÷ 5×4ú÷ 
 ×	Ð	ús=   Á& F=Â=F*	ÃB9FÅ=F*	ÆF=ÆF'Æ"F*	Æ*F:Æ5F=Æ=G	c                 ó   € \         P                  P                  \         P                  ! \	        ^ R	4      4      .R.R7      p V P                  RR7      p\        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       p\        P                  P                  R4      pVP                  V4      w  rVT;_uu_ 4        \	        ^
4       Fa  p\        V4      P                  R4      pVP                  V4       VP!                  4       p	V	P"                  e   Q hV	P$                  V8X  d   Ka  Q h	  VP'                  V P(                  4       ^ p
V FŠ  pVP+                  V4       VP(                  V P(                  8X  g   Q hVP!                  4       p	V	P"                  V8X  g   Q hV	P$                  e   Q hV
^,          p
VP,                  P.                  V
8X  d   KŠ  Q h	  \1        V4       FŒ  w  r{\        V4      P                  R4      pVP3                  W¸4       VP!                  4       p	V	P"                  V8X  g   Q hV	P$                  V8X  g   Q hV
^,          p
VP,                  P.                  V
8X  d   KŒ  Q h	  RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)
zTry a DoExchange echo server.rT   r9   r5  rÈ   rõ   rg  rÓ   Nru  )r>   r@   rA   r?   r5  r®   rc  r   r  r
   rq   r©  rÂ   r|  r×   r{  rÖ  rB   r€  rv  rp   r‚  r˜   r¡   r­   r�  )rB   rÑ  rõ  r	  r¢   r¤   r£   Úir¨   rÁ   r}  r§   s               r   Útest_doexchange_echor:  É  sI  € ä�8‰8×ÑÜ
�Š”�q˜)Ó$Ó%ð!àˆUð  ó €Dð �o‰o¨CˆoÓ0€Gä	×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ü×,Ñ,×8Ñ8¸ÓAˆ
Ø×+Ñ+¨JÓ7‰ˆßŠVä˜2–Y�Ü˜!“f—m‘m GÓ,�Ø×%Ñ% cÔ*Ø×)Ñ)Ó+�Ø—z‘zÒ)Ð)Ð)Ø×)Ñ)¨SÖ0Ð0Ð0ñ ð �L‰L˜Ÿ™Ô%ØˆKÛ �Ø×"Ñ" 5Ô)Ø—}‘}¨¯©Ô3Ð3Ð3Ø×)Ñ)Ó+�Ø—z‘z UÔ*Ð*Ð*Ø×)Ñ)Ò1Ð1Ð1Ø˜qÕ �Ø—|‘|×6Ñ6¸+ÖEÐEÐEñ !ô & gÖ.‘�Ü˜!“f—m‘m GÓ,�Ø×*Ñ*¨5Ô6Ø×)Ñ)Ó+�Ø—z‘z UÔ*Ð*Ð*Ø×)Ñ)¨SÔ0Ð0Ð0Ø˜qÕ �Ø—|‘|×6Ñ6¸+ÖEÐEÐEñ /÷- ÷ 5÷ 
 Ñ	÷ �Vú÷ 5×4ú÷ 
 ×	Ð	úsQ   Á& J<Â=J)	ÃA(JÄ0B(JÇBJÉ8JÉ<J)	ÊJ<ÊJ&Ê!J)	Ê)J9Ê4J<Ê<K	c                 óÆ  € \         P                  P                  \         P                  ! \	        ^ R
4      4      .R.R7      p V P                  RR7      p\         P                  P                  \         P                  P                  P                  R7      p\        VR7      ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       p\        P                  P                  R4      pVP!                  V4      w  rgT;_uu_ 4        VP#                  V P$                  VR7       V Fd  pVP'                  V4       VP$                  V P$                  8X  g   Q hVP)                  4       p	V	P*                  V8X  g   Q hV	P,                  f   Kd  Q h	  R	R	R	4       R	R	R	4       R	R	R	4       R	#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R	# ; i)z;Try a DoExchange echo server using the V4 metadata version.rT   r9   r5  rÈ   r  ry   rõ   rg  Nru  )r>   r@   rA   r?   r5  r®   r  r  r   r!  rc  r   r  r
   rq   r©  rÂ   rv  rp   r‚  rÖ  rB   r€  )
rB   rÑ  rf   rõ  r	  r¢   r¤   r£   r§   rÁ   s
             r   Útest_doexchange_echo_v4r<  ô  si  € ä�8‰8×ÑÜ
�Š”�q˜)Ó$Ó%ð!àˆUð  ó €Dð �o‰o¨CˆoÓ0€Gä�f‰f×$Ñ$ÜŸ™×/Ñ/×2Ñ2ð %ó 4€Gä	 g×	.Õ	.°&Ü˜+ v§{¡{Ð3×4Ô4¸Ü×,Ñ,×8Ñ8¸ÓAˆ
Ø×+Ñ+¨JÓ7‰ˆßŠVà�L‰L˜Ÿ™¨gˆLÔ6Û �Ø×"Ñ" 5Ô)Ø—}‘}¨¯©Ô3Ð3Ð3Ø×)Ñ)Ó+�Ø—z‘z UÔ*Ð*Ð*Ø×)Ñ)Ô1Ð1Ð1ñ !÷ ÷ 5÷ 
/Ñ	.÷ �Vú÷ 5×4ú÷ 
/×	.Ð	.úsC   Â* GÃ
=F<	ÄA?F)ÆF)ÆF<	ÆGÆ)F9Æ4F<	Æ<GÇGÇG 	c                 óº  € \         P                  P                  \         P                  ! \	        ^ R4      4      \         P                  ! \	        ^R4      4      \         P                  ! \	        ^R4      4      .. R	OR7      p \         P                  P                  \         P                  ! \	        ^R
^4      4      .R.R7      p\        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       p\        P                  P                  R4      pVP                  V4      w  rVV;_uu_ 4        VP                  V P                  4       VP                  V 4       VP                  4        VP!                  4       pRRR4       VX8X  g   Q h RRR4       RRR4       R#   + '       g   i     L,; i  + '       g   i     L-; i  + '       g   i     R# ; i)z!Transform a table with a service.rÇ   i  i  r9   r†  rõ   rj  N)rT   rU   Úci  )r>   r@   rA   r?   r5  rc  r   r  r
   rq   r©  rÂ   rv  rp   rw  r  r½   )rB   r€  rõ  r	  r¢   r¤   r£   r|   s           r   Útest_doexchange_transformr?  	  sZ  € ä�8‰8×ÑÜ
�Š”�q˜$“Ó Ü
�Š”�q˜$“Ó Ü
�Š”�q˜$“Ó ð!ò ð	  ó €Dô
 �x‰x×#Ñ#Ü
�Š”�q˜,¨Ó*Ó+ð%àˆWð $ó €Hô 
×	Ô	 6Ü˜+ v§{¡{Ð3×4Ô4¸Ü×,Ñ,×8Ñ8¸ÓFˆ
Ø×+Ñ+¨JÓ7‰ˆßŠVØ�L‰L˜Ÿ™Ô%Ø×Ñ˜tÔ$Ø×ÑÔ!Ø—O‘OÓ%ˆE÷	 ð
 ˜5Ô Ð Ñ ÷ 5÷ 
 Ñ	÷ �Vú÷ 5×4ú÷ 
 ×	Ð	ús=   Ã G	Ã5=F6	Ä2AF#Å?F6	ÆG	Æ#F3Æ.F6	Æ6GÇG	Ç	G	c                 ó  € \        R\        4       /R7      ;_uu_ 4       p \        4       p\        RV P                  3V.R7      ;_uu_ 4       p\        VP                  \        P                  ! RR4      4      4      pVP                  P                  4       P                  R4      p\        P                  ! V4      p\        P                  P!                  4        Fv  w  rgVP#                  4       p\%        V\&        4      '       d   VP                  R4      pVP)                  V4      V8X  g   Q hVP*                  P)                  V4      V8X  d   Kv  Q h	  RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)rD  r  r¬  rõ   r   rÓ   ÚasciiN)rC  r„  rp  r   r  r�  rÛ   r
   r¨  rF  rž   r  ÚastÚliteral_evalrv  r~  rå  rÝ  ró  Úbytesr   rs  )rõ  rÞ  r	  r  Úraw_headersrF  Úheaderr  s           r   Útest_middleware_multi_headerrG  #	  s:  € ä	 ØÔ2Ó4ð-÷ 
õ 
à
Ü4Ó6ˆÜØ˜fŸk™kÐ*Ø#˜9÷&õ &à)/Ü˜F×,Ñ,¬V¯]ª]¸3ÀÓ-DÓEÓFˆHà"Ÿ-™-×2Ñ2Ó4×;Ñ;¸GÓDˆKÜ ×-Ò-¨kÓ:ˆNä"=×"FÑ"F×"LÑ"LÖ"N‘�ØŸ™›�Ü˜f¤e×,Ò,Ø#Ÿ]™]¨7Ó3�FØ%×)Ñ)¨&Ó1°VÔ;Ð;Ð;Ø×+Ñ+×/Ñ/°Ó7¸6ÖAÐAÐAñ #O÷&÷	
ñ 
÷&÷ &ú÷	
÷ 
ð 
ús*   Ÿ-E8ÁC>E%	ÅE%	ÅE8Å%E5Å0E8Å8F		c            	     óZ  € \        4       p \        V R,          R7      ;_uu_ 4       pR.p\        P                  ! RVP                  3V R,          VR7      p\
        P                  ! \        P                  4      ;_uu_ 4        VP                  \        P                  ! R4      4       RRR4       VP                  4        R	.p\        P                  ! RVP                  3V R,          VR7      p\
        P                  ! \        P                  \        P                  34      ;_uu_ 4        VP                  \        P                  ! R4      4       RRR4       VP                  4        RRR4       R#   + '       g   i     LÓ; i  + '       g   i     L=; i  + '       g   i     R# ; i)
z$Test setting generic client options.r1   r¼  rõ   r0   )rÃ  Úgeneric_optionsr`   N)zgrpc.ssl_target_name_overriderÌ  )zgrpc.max_receive_message_lengthé    )r5   r^   r
   r  r  r¬  r­  r¾  r}   r«  r  r>   rT  rQ  )rÀ  r¡  rf   r	  s       r   Útest_generic_optionsrK  9	  s  € ô Ó€Eä	¨u°^Õ/D×	EÕ	EÈàDÐEˆÜ—’ ¨a¯f©fÐ 5Ø/4°[Õ/AØ07ô9ˆô �]Š]œ6×8Ñ8×9Õ9Ø�M‰Mœ&Ÿ-š-¨Ó0Ô1÷ :à�‰Œà:Ð;ˆÜ—’ ¨a¯f©fÐ 5Ø/4°[Õ/AØ07ô9ˆô �]Š]œBŸO™O¬V×-HÑ-HÐI×JÕJØ�M‰Mœ&Ÿ-š-¨Ó0Ô1÷ Kà�‰Œ÷! 
FÑ	E÷ :×9ú÷ K×Jú÷ 
F×	EÐ	Eús=   ¦AFÂ&E3	Â(BFÄ+&F	ÅFÅ3FÅ>FÆFÆFÆF*	c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚCancelFlightServeriQ	  zA server for testing StopToken.c                óÆ   € \         P                  ! . 4      p\         P                  P                  . VR 7      p\        P
                  ! V\        P                  ! V4      4      # )r3  )r>   rp   r›   rA   r
   r“   r6  r7  )rg   rt   rz   rp   r%   s   &&&  r   r}   ÚCancelFlightServer.do_getT	  sF   € Ü—’˜2“ˆÜ�^‰^×'Ñ'¨°6Ð'Ó:ˆÜ×%Ò% f¬i×.>Ò.>¸rÓ.BÓCÐCr   c                ó  € \         P                  ! . 4      p\         P                  P                  . VR 7      pVP	                  V4       VP                  4       '       g*   VP                  V4       \        P                  ! R4       K?  R# )r3  r?  N)	r>   rp   r›   rA   rv  rD  r‚  r@  rA  )rg   rt   r¢   r£   r¤   rp   r%   s   &&&&&  r   rÂ   ÚCancelFlightServer.do_exchangeY	  sa   € Ü—’˜2“ˆÜ�^‰^×'Ñ'¨°6Ð'Ó:ˆØ�‰�VÔØ×&Ñ&×(Ò(Ø×Ñ˜rÔ"Ü�JŠJ�sŽOñ )r   r"   N)	r€   r�   r‚   rƒ   r„   r}   rÂ   r…   r†   rß   s   @r   rM  rM  Q	  s   ø‡ € Ù)òD÷
ð r   rM  c            	      ó&  aa€ \         P                  ! 4       P                  \         P                  ! 4       P                  8w  d   \        P
                  ! R 4       R o\        \        P                  3oVV3R lp \        4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  \        P                  ! R4      4      pV ! VP                  4       \        P                   P#                  R4      pVP%                  V4      w  rSV ! VP                  4        VP'                  4        RRR4       RRR4       R#   \        \        P(                  3 d     L/i ; i  + '       g   i     L;; i  + '       g   i     R# ; i)z'test only works from main Python threadc                  óz   € \         P                  ! R 4       \        P                  ! \        P                  4       R# rü  )r@  rA  ÚsignalÚraise_signalÚSIGINTr"   r   r   Úsignal_from_threadÚ*test_interrupt.<locals>.signal_from_threadg	  s   € Ü�
Š
�3ŒÜ×ÒœFŸM™MÖ*r   c                 ó@  <€   \         P                  ! SR 7      p\        P                  ! S4      ;_uu_ 4       pVP	                  4        V ! 4        RRR4       VP                  4        XP                  p\        T\        P                  \        34      '       g5   \        TP                  \        P                  \        34      '       g   Q hR# R#   + '       g   i     Lˆ; i  XP                  4        i ; i  \         d    \        P                  ! R4        L³i ; i)r  Nz2KeyboardInterrupt didn't interrupt Flight read_all)r  r  r¬  r­  r  rû  ÚKeyboardInterruptÚfailr�  ró  r>   ÚArrowCancelledÚ__context__)r½   ÚtÚexc_infor)  Ú	exc_typesrW  s   &   €€r   r  Útest_interrupt.<locals>.testm	  sØ   ø€ ð	NðÜ×$Ò$Ð,>Ô?�Ü—]’] 9×-Ô-°Ø—G‘G”IÙ”J÷ .ð —‘”ð �N‰NˆÜ˜!œb×/Ñ/Ô1BÐC×DÒDÜ�q—}‘}¤r×'8Ñ'8Ô:KÐ&L×MÒMð	Nð NÙMñ E÷ .×-ûð —‘•ûÜ ô 	Nô �KŠKÐLÖMð	Nús:   „5C$ ¹CÁC$ ÁC9 ÃC!	ÃC$ Ã$C6Ã6C9 Ã9!DÄDrõ   r   rg  N)r  Úcurrent_threadÚidentÚmain_threadr¬  rÉ  rZ  r>   r\  rM  r   r  r}   r
   r«  r½   rq   r©  rÂ   r  rQ  )r  rõ  r	  r£   r¢   r¤   r`  rW  s         @@r   Útest_interruptre  b	  s  ù€ ä×ÒÓ!×'Ñ'¬9×+@Ò+@Ó+B×+HÑ+HÔHÜ�ŠÐ=Ô>ò+ô #¤B×$5Ñ$5Ð6€IöNô$ 
×	Ô	 Ü˜+ v§{¡{Ð3×4Ô4¸à—‘œvŸ}š}¨SÓ1Ó2ˆÙˆV�_‰_Ôä×,Ñ,×8Ñ8¸ÓAˆ
Ø×+Ñ+¨JÓ7‰ˆÙˆV�_‰_Ôð	Ø�L‰LŒN÷ 5÷ 
Ñ	øô "¤6×#>Ñ#>Ð?ô 	áð	ú÷ 5×4ú÷ 
×	Ð	úsC   Â E?Â,A<E,	Ä)EÄ9E?ÅE)Å&E,	Å(E)Å)E,	Å,E<Å7E?Å?F	c                  ó|  € R p \        4       ;_uu_ 4       p\        P                  ! RVP                  34      ;_uu_ 4       p\        P
                  ! \        P                  V R7      ;_uu_ 4        VP                  \        P                  ! R4      4      P                  4        RRR4       VP                  \        P                  ! R4      4      P                  4       pVP                  ^8X  g   Q h RRR4       RRR4       R#   + '       g   i     Li; i  + '       g   i     L-; i  + '       g   i     R# ; i)z'application server implementation errorrõ   r  r   Nr2  )r0  r
   r  r  r¬  r­  r.  r}   r«  r½   rŠ  )r  rõ  r	  r|   s       r   Útest_never_sends_datarg  �	  sÄ   € à5€EÜ	#×	%Ô	%¨Ü�NŠN˜K¨¯©Ð5×6Ô6¸&Ü�]Š]œ6×3Ñ3¸5×AÖAØ�M‰Mœ&Ÿ-š-¨Ó,Ó-×6Ñ6Ô8÷ Bð
 —‘œfŸmšm¨MÓ:Ó;×DÑDÓFˆØ�~‰~ Ô"Ð"Ñ"÷ 7÷ 
&Ñ	%çA×Aú÷ 7×6ú÷ 
&×	%Ð	%ús<   •+D*Á /D	Á/4DÂ#AD	Ã2D*ÄDÄD	ÄD'Ä"D*Ä*D;	c                  óâ  € \         P                  P                  R R,          4      p \        4       ;_uu_ 4       p\         P                  ! RVP
                  34      ;_uu_ 4       p\        P                  ! \        RR7      ;_uu_ 4        VP                  V \        P                  ! . 4      4      w  r4VP                  4        RRR4       \        P                  ! \        P                  RR7      ;_uu_ 4        VP                  V 4       RRR4       RRR4       RRR4       R#   + '       g   i     Lj; i  + '       g   i     L5; i  + '       g   i     L@; i  + '       g   i     R# ; i)r‘  rõ   z%Failed to serialize Flight descriptorr  Nr’  )r
   rq   r©  r   r  r  r¬  r­  ÚOSErrorrª   r>   rp   r  rv  rÂ   )Úlarge_descriptorrõ  r	  r¤   r^  s        r   Útest_large_descriptorrk  �	  sû   € ô
 ×.Ñ.×:Ñ:Ø�ÕóÐä	×	Ô	˜vÜ�NŠN˜K¨¯©Ð5×6Ô6¸&Ü�]Š]œ7Ø!H÷Jö JàŸ™Ð&6¼¿	º	À"»ÓF‰IˆFØ�L‰LŒN÷Jô �]Š]œ2×,Ñ,Ø!H÷Jö Jà×ÑÐ/Ô0÷J÷ 7÷ 
Ñ	÷J÷ Jú÷J÷ Jú÷ 7×6ú÷ 
×	Ð	úsS   ¹+EÁ$%E
	Â	9D$Ã6E
	Ã8D7Ä
E
	ÄEÄ$D4Ä/E
	Ä7EÅE
	Å
EÅEÅE.	c                  óö  € \         P                  P                  R 4      p RR,          p\        4       ;_uu_ 4       p\         P                  ! RVP
                  34      ;_uu_ 4       p\        P                  ! \        P                  RR7      ;_uu_ 4        VP                  V \        P                  ! . 4      4      w  rEV;_uu_ 4        VP                  V4       VP                  4        RRR4       RRR4       \        P                  ! \        P                  RR7      ;_uu_ 4        VP                  V 4      w  rFV;_uu_ 4        VP                  V4       RRR4       RRR4       RRR4       RRR4       ?\        4       ;_uu_ 4       p\         P                  ! RVP
                  34      ;_uu_ 4       p\        P                  ! \         P                   RR7      ;_uu_ 4        VP#                  \         P$                  ! R 4      4      pVP'                  4        RRR4       \        P                  ! \        P(                  RR7      ;_uu_ 4        VP                  V 4      w  rFV;_uu_ 4        VP'                  4        RRR4       RRR4       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     EL‡; i  + '       g   i     EL“; i  + '       g   i     ELŸ; i  + '       g   i     EL; i  + '       g   i     L¶; i  + '       g   i     LÁ; i  + '       g   i     LÌ; i  + '       g   i     R# ; i)r   r‘  rõ   zapp_metadata size overflowr  Nr’  )r
   rq   r©  r´   r  r  r¬  r­  r>   ÚArrowCapacityErrorrª   rp   r{  r  rÂ   r�  r.  r}   r«  r½   rv  )r¢   rÒ  rõ  r	  r¤   r^  r£   s          r   Útest_large_metadata_clientrn  ¯	  sB  € ô ×(Ñ(×4Ñ4°SÓ9€JØ�{Õ#€HÜ	×	Ô	˜vÜ�NŠN˜K¨¯©Ð5×6Ô6¸&Ü�]Š]œ2×0Ñ0Ø!=÷?ö ?àŸ™ j´"·)²)¸B³-Ó@‰IˆFß’Ø×%Ñ% hÔ/Ø—‘”÷ ÷?ô �]Š]œ2×0Ñ0Ø!=÷?ö ?à#×/Ñ/°
Ó;‰NˆFß’Ø×%Ñ% hÔ/÷ ÷?÷ 7÷ 
ð 	Ü	"×	$Ô	$¨Ü�NŠN˜K¨¯©Ð5×6Ô6¸&Ü�]Š]œ6×3Ñ3Ø!=÷?ö ?à—]‘]¤6§=¢=°Ó#5Ó6ˆFØ�O‰OÔ÷?ô �]Š]œ2×,Ñ,Ø!=÷?ö ?à#×/Ñ/°
Ó;‰NˆFß’Ø—‘Ô!÷ ÷?÷ 7÷ 
%Ñ	$÷ —�ú÷?÷ ?ð ?ú÷ —�ú÷?÷ ?ð ?ú÷ 7×6Ð6ú÷ 
×	Ð	ú÷"?÷ ?ð ?ú÷ —ú÷?÷ ?ú÷ 7×6ú÷ 
%×	$Ð	$úsï   »+LÁ&/K2	Â3J6Ã"J"Ã*J6Ã26K2	Ä(KÅK
ÅKÅ K2	Å(LÆ+M'Æ6/M	Ç%6LÈ6M	ÉMÉ/L.Ê MÊM	ÊM'Ê"J3Ê-	J6Ê6KË	K2	Ë
KË	KËK/Ë)	K2	Ë2LË=	LÌL	ÌL+Ì%	M	Ì.L>Ì9MÍMÍM	ÍM$ÍM'Í'M8	c                   ó.   a € ] tR tRt o Rt. tR tRtV tR# )ÚActionNoneFlightServeriÑ	  z@A server that implements a side effect to a non iterable action.c                óì   € VP                   R 8X  d1   \        P                  ! V P                  4      P	                  R4      .# VP                   R8X  d   V P                  P                  R4       R# \        h)Ú	get_valuerÓ   rc  TN)rG   ÚjsonÚdumpsÚVALUESr×   rc  rØ   rÙ   s   &&&r   rÛ   Ú ActionNoneFlightServer.do_actionÕ	  sV   € Ø�;‰;˜+Ô%Ü—J’J˜tŸ{™{Ó+×2Ñ2°7Ó;Ð<Ð<Ø�[‰[˜HÔ$Ø�K‰K×Ñ˜tÔ$ÙÜ!Ð!r   r"   N)	r€   r�   r‚   rƒ   r„   ru  rÛ   r…   r†   rß   s   @r   rp  rp  Ñ	  s   ø‡ € ÙJØ€F÷"ð "r   rp  c            
     óò  € \        4       ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       pVP                  \        P
                  ! RR4      4       VP                  \        P
                  ! RR4      4      p\        P                  ! \        V4      P                  P                  4       4      R.8X  g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z}Ensure that actions are executed even when we don't consume iterator.

See https://issues.apache.org/jira/browse/ARROW-14255
rõ   rc  r   rr  TN)rp  r   r  rÛ   r
   r¨  rs  Úloadsr�  rF  rž   )rõ  r	  Úrs      r   Útest_none_action_side_effectrz  Þ	  s£   € ô 
 ×	!Ô	! VÜ˜+ v§{¡{Ð3×4Ô4¸Ø×ÑœŸš x°Ó5Ô6Ø×ÑœVŸ]š]¨;¸Ó<Ó=ˆÜ�zŠzœ$˜q›'Ÿ,™,×1Ñ1Ó3Ó4¸¸Ô>Ð>Ñ>÷ 5÷ 
"Ñ	!ß4×4ú÷ 
"×	!Ð	!ús#   “ C%³BC	Ã C%ÃC"ÃC%Ã%C6	c                 óò  aa€ Rp Rp\         P                  ! WR7      o\         P                  P                  R4      p\        P
                  ! R\        P                  ! 4       3.4      p ! V3R lR\         P                  4      pV! 4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       pVP                  W#4      w  poV3R	 lp\        P                  ! VR
R7      p	V	P                  4        \        P                  ! \         P                  4      ;_uu_ 4       p
 VP!                  \        P"                  ! ^..VR7      4       K,    + '       g   i     M; iX
P$                  P&                  T8X  g   Q h\        P                  ! \         P                  4      ;_uu_ 4       p
TP)                  4        RRR4       M  + '       g   i     M; iT
P$                  P&                  T8X  g   Q hT	P+                  4        TP-                  T4      w  poT3R lp\        P                  ! TR
R7      p	T	P                  4        \        P                  ! \         P                  4      ;_uu_ 4       p
 TP/                  R4       K    + '       g   i     M; iT
P$                  P&                  T8X  g   Q h\        P                  ! \         P                  4      ;_uu_ 4       p
TP)                  4        RRR4       M  + '       g   i     M; iT
P$                  P&                  T8X  g   Q hT	P+                  4        RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)zw
Ensure that exceptions during writing preserve error context.

See https://issues.apache.org/jira/browse/ARROW-16592.
rE   rÂ  )r(  r   r—  c                   ó:   <a € ] tR tRt o V3R ltV3R ltRtV tR# )Ú0test_write_error_propagation.<locals>.FailServeriù	  c                ó   <€ Shr±   r"   ©rg   rt   r¢   r£   r¤   Úexcs   &&&&&€r   rª   Ú7test_write_error_propagation.<locals>.FailServer.do_putú	  ó   ø€ ØˆIr   c                ó   <€ Shr±   r"   r  s   &&&&&€r   rÂ   Ú<test_write_error_propagation.<locals>.FailServer.do_exchangeý	  r‚  r   r"   N)r€   r�   r‚   rƒ   rª   rÂ   r…   r†   )r‰   r€  s   @€r   Ú
FailServerr}  ù	  s   ù‡ € õ	÷	ó 	r   r…  rõ   c                  ód   <€   S P                  4        K    \        P                   d     R# i ; i©TN)r'   r
   ÚFlightError©r£   s   €r   Ú_readerÚ-test_write_error_propagation.<locals>._reader
  s,   ø€ ðØØ—K‘K–MøÜ×%Ñ%ô Úðúó   ƒ –/®/Tr   r3  Nc                  ód   <€   S P                  4        K    \        P                   d     R# i ; ir‡  )rÖ  r
   rˆ  r‰  s   €r   rŠ  r‹  
  s/   ø€ ðØØ×%Ñ%Ö'øÜ×%Ñ%ô ÚðúrŒ  r‘  )r
   rQ  rq   r©  r>   rp   r—  r   r   r  rª   r  r  r  r¬  r­  r‚  r˜  r�  r(  r  rû  rÂ   r{  )Úexpected_messageÚexpected_infor¢   rp   r…  rõ  r	  r¤   rŠ  r
  r_  r€  r£   s              @@r   Útest_write_error_propagationr�  ë	  sU  ù€ ð ÐØ€MÜ
×
%Ò
%Øô4€Cä×(Ñ(×4Ñ4°SÓ9€JÜ�YŠY˜¤"§(¢(£*Ð-Ð.Ó/€F÷”V×,Ñ,ô ñ 
�Œ˜Ü˜+ v§{¡{Ð3×4Ô4¸àŸ™ zÓ:‰ˆ�õ	ô ×!Ò!¨¸Ô>ˆØ�‰Œä�]Š]œ6×6Ñ6×7Ô7¸8ØØ×"Ñ"¤2§?¢?°Q°C°5ÀÔ#HÖI÷ 8×7úð �~‰~×(Ñ(¨MÔ9Ð9Ð9ä�]Š]œ6×6Ñ6×7Ô7¸8Ø�L‰LŒN÷ 8×7×7Ð7úà�~‰~×(Ñ(¨MÔ9Ð9Ð9Ø�‰Œð  ×+Ñ+¨JÓ7‰ˆ�õ	ô ×!Ò!¨¸Ô>ˆØ�‰ŒÜ�]Š]œ6×6Ñ6×7Ô7¸8ØØ×%Ñ% dÖ+÷ 8×7úð �~‰~×(Ñ(¨MÔ9Ð9Ð9ä�]Š]œ6×6Ñ6×7Ô7¸8Ø�L‰LŒN÷ 8×7×7Ð7úà�~‰~×(Ñ(¨MÔ9Ð9Ð9Ø�‰Œ÷] 5×4×4Ð4ú÷ 
��Šús|   Â M%Â4A/M	Ä#-EÅE ÅAM	Æ,GÆ=	M	ÇGÇB#M	É4J	Ê	JÊAM	Ë%K?Ë6	M	Ë?LÌ
5M	Ì?	M%ÍMÍM%Í%M6	c                 ó2   € \         P                  ! R4       R# )zy
Ensure that the gRPC server is stopped at interpreter shutdown.

See https://issues.apache.org/jira/browse/ARROW-16597.
zarrow_16597.pyN)r	   Úinvoke_scriptr"   r   r   Útest_interpreter_shutdownr“  2
  s   € ô 	×ÒÐ'Ö(r   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚTracingFlightServeri;
  z/A server that echoes back trace context values.c                óf   € VP                  R 4      P                  pR VP                  4        4       # )Útracingc              3   óR   "  € T F  w  rV R V 2P                  R4      x € K  	  R# 5i)z: rÓ   N)r×   )Ú.0r3   r�  s   &  r   Ú	<genexpr>Ú0TracingFlightServer.do_action.<locals>.<genexpr>C
  s2   é € ð ;Ù$9‘L�Sð �5˜˜5˜'Ð"×*Ñ*¨7×3Ð3Û$9ùs   ‚%')r  Útrace_contextrå  )rg   rt   rÚ   rœ  s   &&& r   rÛ   ÚTracingFlightServer.do_action>
  s3   € Ø×.Ñ.¨yÓ9×GÑGˆñ;Ø$1×$7Ñ$7Ô$9ó;ð 	;r   r"   Nr  rß   s   @r   r•  r•  ;
  s   ø‡ € Ù9÷;ð ;r   r•  c            	      ón  € \        R \        P                  ! 4       /R7      ;_uu_ 4       p \        RV P                  34      ;_uu_ 4       p\        P
                  ! RR.R7      pVP                  RVR7       F  pK  	  RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	r—  r¬  rõ   r¥  ry   N)s   traceparents7   00-000ff00f00f0ff000f0f00ff0f00fff0-000f0000f0f00000-00)s
   tracestater   )r   r   )r•  r
   ÚTracingServerMiddlewareFactoryr   r  r   rÛ   )rõ  r	  rf   r�  s       r   Útest_tracingr   G
  s¢   € Ü	Ø”v×<Ò<Ó>ð)÷ 
õ 
à
Ü˜+ v§{¡{Ð3×4Ô4¸ô ×*Ò*ð5à ð	4
ô ˆð ×%Ñ% j¸'Ð%ÖBˆEÙñ C÷ 5÷
ñ 
÷ 5×4ú÷
÷ 
ð 
ús#   ª B#Á
4B	Á>B#ÂB ÂB#Â#B4	Úwin32z6Opentelemetry traces don't appear on stdout on Windowsc                  ór  € \        4       '       g   \        P                  ! R 4       Rp \        P                  P                  4       pRVR&   RVR&   \        P                  ! \        P                  RV .VRR7      pVP                  ^ 8X  g   Q VP                  4       hR	pR
VP                  9   g   Q V4       hR# )z"Arrow not built with OpenTelemetryaå  if 1:
        import pyarrow.flight as flight
        from pyarrow.flight import FlightServerBase, FlightClient

        class SimpleServer(FlightServerBase):
            def do_action(self, context, action):
                return []

        with SimpleServer(
            middleware={"otel": flight.TracingServerMiddlewareFactory()}
        ) as server:
            with FlightClient(('localhost', server.port)) as client:
                list(client.do_action((b"", b"")))
        ÚostreamÚARROW_TRACING_BACKENDzpyarrow-testing-serviceÚOTEL_SERVICE_NAMEz-cT)ÚenvÚcapture_outputz%Expected service name in trace outputs%   service.name: pyarrow-testing-serviceN)r   r¬  rÉ  r   r   ÚcopyÚ
subprocessÚrunÚsysÚ
executableÚ
returncodeÚstderrÚstdout)Úcoder¦  ÚresÚmsgs       r   Ú+test_tracing_server_middleware_emits_tracesr³  Z
  s    € ô
 $×%Ò%Ü�ŠÐ8Ô9ð€Dô �*‰*�/‰/Ó
€CØ#,€CÐÑ Ø8€CÐÑÜ
�.Š.œ#Ÿ.™.¨$°Ð5¸3Ø(,ô.€Cà�>‰>˜QÔÐ* §
¡
Ó*ÐØ
1€CØ3°s·z±zÔAÐFÀ3ÓFÒAr   c                  ó  € \        R RR7      p Rp\        P                  ! \        VR7      ;_uu_ 4        V P	                  \
        P                  P                  R4      RR7       RRR4       R#   + '       g   i     R# ; i)zgrpc+tls://localhost:9643TrÇ  zRArgument 'schema' has incorrect type \(expected pyarrow.lib.Schema, got NoneType\)r  rE   Nr3  )r   r¬  r­  r®  rª   r
   rq   r©  )r	  r²  s     r   Ú.test_do_put_does_not_crash_when_schema_is_nonerµ  y
  s`   € ÜÐ5Ø6:ô<€Fð<€Cä	�Š”y¨×	,Ö	,Ø�‰”f×-Ñ-×9Ñ9¸%Ó@Ø!ð 	ô 	#÷ 
-×	,×	,Ò	,ús   ´1A/Á/B 	c            	     ó@  a€  ! R R\         4      p  ! V3R lR\        4      p ! R R\        4      oV! 4       pV ! 4       ;_uu_ 4       p\        RVP                  3V.R7      ;_uu_ 4       pVP                  \        P                  P                  R	4      4       RVP                  9   g   Q hRVP                  9   g   Q hRVP                  9   g   Q hRVP                  9   g   Q h R
R
R
4       R
R
R
4       R
#   + '       g   i     L; i  + '       g   i     R
# ; i)z9Ensure that server-sent headers/trailers make it through.c                   ó&   a € ] tR tRt o R tRtV tR# )Ú:test_headers_trailers.<locals>.HeadersTrailersFlightServeri†
  c                óê   € VP                  R R4       VP                  RR4       VP                  RR4       VP                  RR4       \        P                  ! \        P
                  ! . 4      V. 4      # )úx-headerúheader-valueúx-header-binzheadervalueú	x-trailerútrailer-valueúx-trailer-binztrailervalue)Ú
add_headerÚadd_trailerr
   ro   r>   rp   r   s   &&&r   r  ÚJtest_headers_trailers.<locals>.HeadersTrailersFlightServer.get_flight_info‡
  sh   € Ø×Ñ˜z¨>Ô:Ø×Ñ˜~Ð/@ÔAØ×Ñ ¨_Ô=Ø×Ñ Ð1CÔDÜ×$Ò$Ü—	’	˜"“ØØóð r   r"   N)r€   r�   r‚   rƒ   r  r…   r†   rß   s   @r   ÚHeadersTrailersFlightServerr¸  †
  s   ø‡ € ÷		ð 		r   rÃ  c                   ó4   <a € ] tR tRt o R tV3R ltRtV tR# )Ú?test_headers_trailers.<locals>.HeadersTrailersMiddlewareFactoryi’
  c                ó   € . V n         R # r±   r¥  r¹  s   &r   rd   ÚHtest_headers_trailers.<locals>.HeadersTrailersMiddlewareFactory.__init__“
  s	   € ØˆDŽLr   c                ó   <€ S! V 4      # r±   r"   )rg   r  ÚHeadersTrailersMiddlewares   &&€r   rê  ÚJtest_headers_trailers.<locals>.HeadersTrailersMiddlewareFactory.start_call–
  s   ø€ Ù,¨TÓ2Ð2r   r¥  N)r€   r�   r‚   rƒ   rd   rê  r…   r†   )r‰   rÉ  s   @€r   Ú HeadersTrailersMiddlewareFactoryrÅ  ’
  s   ù‡ € ò	÷	3ó 	3r   rË  c                   ó,   a € ] tR tRt o R tR tRtV tR# )Ú8test_headers_trailers.<locals>.HeadersTrailersMiddlewarei™
  c                ó   € Wn         R # r±   rñ  ró  s   &&r   rd   ÚAtest_headers_trailers.<locals>.HeadersTrailersMiddleware.__init__š
  s   € Ø"ŽLr   c                ó–   € VP                  4        F4  w  r#V F)  pV P                  P                  P                  W$34       K+  	  K6  	  R # r±   )rå  rò  rÞ  rc  )rg   rÞ  r3   r  r�  s   &&   r   rú  ÚItest_headers_trailers.<locals>.HeadersTrailersMiddleware.received_headers�
  s8   € Ø&Ÿ}™}ž‘�Û#�EØ—L‘L×(Ñ(×/Ñ/°°Ö=ó $ó  /r   rñ  N)r€   r�   r‚   rƒ   rd   rú  r…   r†   rß   s   @r   rÉ  rÍ  ™
  s   ø‡ € ò	#÷	>ð 	>r   rÉ  rõ   r¬  r  N)rº  r»  )r¼  s   headervalue)r½  r¾  )r¿  s   trailervalue)
r   r   r   r   r  r  r
   rq   rr   rÞ  )rÃ  rË  rò  rõ  r	  rÉ  s        @r   Útest_headers_trailersrÒ  ƒ
  sá   ø€ ô
Ô&6ô 
÷3Ô+Bô 3ô>Ô$4ô >ñ /Ó0€GÙ	$×	&Ô	&¨&Ü˜+ v§{¡{Ð3ÀÀ	×JÕJÈfØ×Ñœv×6Ñ6×?Ñ?ÀÓCÔDØ+¨w¯©Ô>Ð>Ð>Ø3°w·±ÔFÐFÐFØ-°·±Ô@Ð@Ð@Ø5¸¿¹ÔHÐHÑH÷ K÷ 
'Ñ	&ßJ×Jú÷ 
'×	&Ð	&ús%   Á#DÁ+A;C9	Ã'DÃ9D	ÄDÄD	c                  óÆ  a	€ R \        ^^^^^ R7      R\        ^^^^ ^R7      /o	 ! V	3R lR\        4      p V ! 4       ;_uu_ 4       p\        RVP                  34      ;_uu_ 4       p\	        4       pR EF   p\
        P                  P                  V4      pVP                  V\
        P                  ! \        P                  P                  RR7      R7      R	7      w  rgV;_uu_ 4        VP                  VP                  \        P                  P                  VR 8H  R7      R	7       VP                  V4       VP!                  4        VP#                  4       pR
R
R
4       XP%                  V4      '       g   Q hVP&                  S	V,          8X  d   EK!  Q h	  R
R
R
4       R
R
R
4       R
#   + '       g   i     LZ; i  + '       g   i     L-; i  + '       g   i     R
# ; i)Údict_deltasr(  Údict_replacementc                   ó.   <a € ] tR tRt o V3R ltRtV tR# )ÚDtest_flight_dictionary_deltas_do_exchange.<locals>.DeltaFlightServeri¾
  c                ó  <€ \        4       pVP                  4       pVP                  V4      '       g   Q hVP                  SVP                  P                  4       ,          8X  g   Q hVP                  R 8X  dO   \        P                  P                  RR7      pVP                  VP                  VR7       VP                  V4       VP                  R8X  d/   VP                  VP                  4       VP                  V4       R# R# )s   dict_deltasT©Úemit_dictionary_deltasry   s   dict_replacementN)rR   r½   rš   r˜   r`  r  r>   r  r  rv  rp   rw  )	rg   rt   r¢   r£   r¤   Úexpected_tableÚreceived_tablerf   Úexpected_statss	   &&&&&   €r   rÂ   ÚPtest_flight_dictionary_deltas_do_exchange.<locals>.DeltaFlightServer.do_exchange¿
  sÑ   ø€ Ü/Ó1ˆNØ#Ÿ_™_Ó.ˆNØ!×(Ñ(¨×8Ò8Ð8Ð8Ø—<‘< >°*×2DÑ2D×2KÑ2KÓ2MÕ#NÔNÐNÐNØ×!Ñ! ^Ô3ÜŸ&™&×0Ñ0ÈÐ0ÓM�Ø—‘˜^×2Ñ2¸G�ÔDØ×"Ñ" >Ô2Ø×!Ñ!Ð%8Ô8Ø—‘˜^×2Ñ2Ô3Ø×"Ñ" >Ö2ñ 9r   r"   N)r€   r�   r‚   rƒ   rÂ   r…   r†   )r‰   rÝ  s   @€r   ÚDeltaFlightServerr×  ¾
  s   ù‡ € ÷	3ó 	3r   rß  rõ   TrÙ  )Úwrite_optionsry   N)rÔ  rÕ  )r   r^   r   r  rR   r
   rq   r©  rÂ   r   r>   r  r  rv  rp   rw  r  r½   rš   r˜   )
rß  rõ  r	  rÛ  r`  r¢   r¤   r£   rÜ  rÝ  s
            @r   Ú)test_flight_dictionary_deltas_do_exchangerá  ¬
  s›  ø€ à”yØØ Ø#$Ø"#Ø&'ô
ð 	œIØØ Ø#$Ø"#Ø&'ô
ð€N÷"3Ô0ô 3ñ 
×	Ô	 Ü˜+ v§{¡{Ð3×4Ô4¸Ü+Ó-ˆÜ:ˆGÜ×0Ñ0×<Ñ<¸WÓEˆJØ#×/Ñ/ØÜ×0Ò0Ü"$§&¡&×"8Ñ"8Ø/3ð #9ó #5ôð 0ó ‰NˆF÷ ’Ø—‘˜^×2Ñ2¼B¿F¹F×<RÑ<RØ,3°}Ñ,Dð =Só =G�ô Hà×"Ñ" >Ô2Ø×#Ñ#Ô%Ø!'§¡Ó!2�÷ ð "×(Ñ(¨×8Ò8Ð8Ð8Ø—<‘< >°'Õ#:×:Ð:Ð:ñ% ;÷ 5÷ 
Ñ	÷ —ú÷ 5×4ú÷ 
×	Ð	úsJ   Á GÁ%BF<	Ã'A0F)ÅF<	Å6F<	ÆF<	ÆGÆ)F9Æ4F<	Æ<GÇGÇG 	c                 ó2  € V P                   R 8X  d   R^RRRRRR/# V P                   R8X  dk   R^RR.R\        P                  P                  RR7      R\        P                  P	                  R	\        P                  P
                  P                  R
7      /# / # )Údefaultr  rÞ  Nrà  r~  ÚallÚzstd)ÚcompressionF)Úuse_threadsÚensure_alignment)s   abcs   def)Úparamr>   r  r  r   Ú	AlignmentÚDataTypeSpecific)Úrequests   &r   Úcall_options_argsrí  ä
  sŸ   € à‡}�}˜	Ô!à�qØ�tØ˜TØ˜Dð	
ð 	
ð 
�‰˜%Ô	à�qØÐ(Ð)ØœRŸV™V×3Ñ3ÀÐ3ÓGØœBŸF™F×1Ñ1Ø!Ü!#§¡×!1Ñ!1×!BÑ!Bð 2ó ð	
ð 	
ð ˆ	r   rí  rã  rä  T)Úindirectc                 ó¦   € \        R/ V B pVP                  4       pV P                  4        F!  w  r4Vf   W29   g   Q hK  V RV 2V9   d   K!  Q h	  R # )NÚ=r"   )r   Ú__repr__rå  )rí  Úcall_optionsr‰  r	  Úvals   &    r   Útest_call_options_reprrô  û
  s_   € ô %Ñ9Ð'8Ñ9€LØ× Ñ Ó"€Dà%×+Ñ+Ö-‰ˆØŠ;Ø”;Ð�;Ùà��a˜�uˆ~ Ö%Ð%Ð%ó .r   )ÂrB  rÅ  r6  r   r    rT  rœ   r©  r«  rV  r  r@  r)   rs  r   Únumpyrã  ÚImportErrorr¬  r   r>   Úpyarrow.libr   r   r   r   Úpyarrow.utilr   Úpyarrow.testsr	   r
   r   r   r   r   r   r   r   r   r   r   r¯  ÚmarkÚ
pytestmarkr   r#   r.   r5   rC   rR   r\   r^   r‹   r´   rÅ   rá   ré   rò   r	  r  r  r&  r0  r:  rF  rc  r”  r¯  r¿  rÎ  r×  rà  râ  rè  rý  r  r  r  r   r+  r5  r;  r?  rC  rI  rQ  rS  rY  rj  rp  rv  r„  r†  r�  r»  rë  rð  rö  rù  Úslowr  r  r  r"  Úpandasr&  r,  r.  r3  r5  r7  r9  rM  rO  rR  ÚskipifrY  r[  r_  ra  rj  rn  rp  rr  rt  rw  ry  r{  rƒ  rˆ  r–  rŠ  r�  r“  r—  r™  Ú%header_auth_server_middleware_factoryrž  r¡  r£  rª  r°  r´  r·  rº  Úrequires_testing_datarÁ  rÅ  rÊ  rÎ  rÔ  rÚ  rÜ  rß  rì  rî  rý  rÿ  r  r  r  r  r  r&  r+  r1  r3  r7  r:  r<  r?  rG  rK  rM  re  rg  Úlarge_memoryrk  rn  rp  rz  r�  r“  r•  r   Úplatformr³  rµ  rÒ  rá  Úfixturerí  Úparametrizerô  r"   r   r   Ú<module>r     sO  ðó$ Û Û Û 	Û Û Û Û Û 
Û Û Û Û Û Ý ðÛó Û ç TÓ TÝ 'Ý ðÝ÷÷ õ ð" �[‰[×Ñ€
òò
Bò
òò";ò
<ò2ôEÐ+ô EôD&Ð+ô &ôRÐ'ô ô*"Ð-ô "ô""Ð"2ô "ô""Ð.>ô "ô"0Ð*ô 0ô6+Ð.ô +ôÐ#3ô ô.Ð.ô .ô"EÐ 0ô Eô FÐ!1ô Fô&7Ð'ô 7ô*.AÐ(ô .AôbJ#Ð+ô J#ôZÐ!2ô ô0Ð!2ô ô"Ð.ô ô.Ð.ô ô$Ð'ô ò$ô
/Ð(?ô 
/ô1Ð!1ô 1ô61Ð(?ô 1ô89Ð!1ô 9ô/Ð-ô /ô9Ð.Eô 9ôÐ'7ô ôFÐ#3ô Fô*+Ð-ô +ô5Ð$;ô 5ôÐ)ô ôÐ.ô ô-Ð+Bô -ô&/Ð+Bô /ô

Ð$4ô 
ô	Ð'>ô 	ô	Ð'>ô 	ô	1Ð)@ô 	1ô2Ð"2ô 2ô.4Ð)@ô 4ô4Ð"2ô 4ô.Ð 0ô .ò"J@òZ`òF!ò$8òð ‡�×ÑØ‡�×Ññó ó ðò('ò(òDð6 ‡�×ÑñFó ðFò
ò$"ò<ò.=ò7ô$Ð(ô ò2!ò6òð ‡�×Ñ�B—G‘G˜t‘OØDð ó Fñ&óFð&ð* ‡�×Ññ#ó ð#ò*#ò #ò*#ò #ò*#ò #ò*9ò<òJò4ñ" 0Øˆ[ð7ô Ð ñ ,Øˆ[ð3ô Ð ð
 ‡�×Ññ+ó ð+ð ‡�×Ñ�B—G‘G˜t‘OØIð ó Kñ
5óKð
5ò+ò5òIñ )JÓ(KÐ %Ù$Ó&Ð ò4òEò;òò@8ò."ò+ð ‡�×ÑØ‡�×"Ò"ñ=ó #ó ð=ð ‡�×"Ò"ñ	"ó #ð	"ð ‡�×"Ò"ñó #ðð  ‡�×"Ò"ñ	2ó #ð	2ò"ò* ò@
"ò)ð, ‡�×Ññ"ó ð"ð8 ‡�×Ññ ó ð ð ‡�×ÑØ‡�×Ññ4ó ó ð4ò@ò8Oòv#òL$(òN	'ò9ò,)5òX	5ð ‡�×"Ò"ñ"ó #ð"ò$!ò2ò0(FòV2ò0!ò.Bð, ‡�×"Ò"ñó #ðô.Ð)ô ð" ‡�×Ññ)ó ð)òX#ð ‡�×ÒØ‡�×Ññ1ó ó ð1ð  ‡�×ÒØ‡�×Ññ"ó ó ð"ô@
"Ð-ô 
"ò
?ð ‡�×ÑñCó ðCòL)ô	;Ð*ô 	;òð& ‡�×Ñ�C—L’L GÑ+ØSð ó UñGóUðGò:#ò&IòR5;ðp ‡‚ñó ðð, ‡�×ÒØ˜) UÐ+°dð ó <ñ
&ó<ò
&øðsV ô Ø	ƒBðûð$ ô Ø€FØ%+¨VÐ"€LÐ"Ø+1°6Ð(ÐÐ(Ø06¸Ð-ÐÐ-Ø06¸Ð-ÐÐ-ØÓðús$   Á Z2 Á%[ Ú2	Z?Ú>Z?Û[%Û$[%