Ë
    kQêjJ; ã                  óÄ	  — d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlmZmZ ddlmZmZ ddlmZmZmZmZmZmZmZm Z m!Z!m"Z" ddl#Z$ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, dd	l-m.Z/ dd
l-m0Z1 ddl2m3Z3 ddl4m5Z5  e*ddd¬«      Z6 e*ddd¬«      Z7 e*ddd¬«      Z8d d„Z9d¡d„Z: G d„ de;«      Z<d„ Z=d„ Z>d„ Z? G d„ de'«      Z@ G d„ de@«      ZA G d„ d e@«      ZB G d!„ d"e@«      ZC G d#„ d$e@«      ZD G d%„ d&e@«      ZE G d'„ d(e@«      ZF G d)„ d*eA«      ZG G d+„ d,eA«      ZH G d-„ d.e@«      ZI G d/„ d0e@«      ZJ G d1„ d2e@«      ZK G d3„ d4e@«      ZL G d5„ d6e@«      ZM G d7„ d8e@«      ZNd¢d9„ZOeeP e)dd:¬;«       e&eO«      f   ZQ G d<„ d=e@«      ZRd£d>„ZS G d?„ d@e@«      ZT G dA„ dBeA«      ZU G dC„ dDeA«      ZV G dE„ dFeA«      ZW G dG„ dHe@«      ZX G dI„ dJe@«      ZY G dK„ dLe@«      ZZ G dM„ dNe@«      Z[ G dO„ dPe@«      Z\ ejº                  dQ«      Z^dRZ_dSZ`dTZadUZb e$jÆ                  «       df e$jÈ                  «       dVf e$jÊ                  «       dWf e$jÌ                  «       dXf e$jÎ                  «       dYf e$jÐ                  «       dZf e$jÒ                  «       d[f e$jÔ                  «       d\f e$jÖ                  «       d]f e$jØ                  «       d^f e$jÚ                  «       d_f e$jÜ                  «       d`f e$jÞ                  «       daf e$jà                  «       dbf e$jâ                  «       dcf e$jä                  «       ddf e$jæ                  «       def e$jè                  «       dfffZud¤dg„Zvd¥dh„Zwd¥di„Zxd¦dj„Zyd§dk„Zzd¨dl„Z{d©dm„Z|dªdn„Z}d«do„Z~dpdqœ	 	 	 	 	 d¬dr„Zdpdqœ	 	 	 	 	 d­ds„Z€d®dt„Z�d¯du„Z‚d°dv„Zƒd±dw„Z„dpdxœ	 	 	 	 	 	 	 	 	 d²dy„Z…d³dz„Z†d´d{„Z‡ eˆh d|£«      Z‰ eˆh d}£«      ZŠ	 	 	 	 	 	 dµd~„Z‹d¶d„ZŒd€Z�d�ZŽd‚Z�dƒZ� eˆh d„£«      Z‘ ejº                  d…«      Z’ ejº                  d†«      Z“d·d‡„Z”	 	 	 	 	 	 d¸dˆ„Z•d¹d‰„Z–dºdŠ„Z—d d‹„Z˜d»dŒ„Z™d¼d�„Zšd½dŽ„Z›d¾d�„Zœ G d�„ d‘«      Z�d¿d’„ZždÀd“„ZŸd«d”„Z dÁd•„Z¡dÂd–„Z¢dÃd—„Z£ G d˜„ d™«      Z¤e"dÄdš„«       Z¥e"	 dÅdddd›dddpd›d›d›dœœ
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dÆd�„«       Z¥	 dÅdddd›dddpd›d›d›dœœ
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dÇdž„Z¥g dŸ¢Z¦y)Èa@  Canonical Function values exchanged with LanceDB Enterprise services.

These immutable models contain client/wire state only. Catalog persistence,
environment bake, secret resolution, and execution are owned by Sophon.
``RefreshColumnResult`` is also the backend-neutral result of a local
expression-backed refresh job.
é    )ÚannotationsN)ÚMappingÚSequence)ÚdateÚdatetime)
Ú	AnnotatedÚAnyÚCallableÚLiteralÚOptionalÚUnionÚget_argsÚ
get_originÚget_type_hintsÚoverload)ÚAfterValidatorÚ	BaseModelÚ
ConfigDictÚFieldÚconintÚfield_validatorÚmodel_validatoré   )Úblob)Úis_blob_v2_field)Ú
BlobReader)ÚEnvVarSecretTi   €iÿÿÿ)ÚstrictÚgeÚlel   ÿÿ ì   ÿÿÿÿ Úboolc                ó"   — | durt        d«      ‚y)NTzruntime.gpu must be true)Ú
ValueError©Úvalues    úV/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/lancedb/functions.pyÚ_validate_gpu_wire_markerr(   B   s   € Ø�DÑÜÐ3Ó4Ð4Øó    c                óD   — t        | t        «      st        d«      ‚| rdS d S )Nzgpu must be a booleanT)Ú
isinstancer"   r$   r%   s    r'   Ú_normalize_gpu_markerr,   H   s%   € Ü�eœTÔ"ÜÐ0Ó1Ð1Ùˆ4Ð"˜dÐ"r)   c                  ó4   — e Zd Zd„ ZeZeZeZeZeZeZ	eZ
d„ Zy)Ú_FrozenDictc                ó   — t        d«      ‚)Nz%remote canonical values are immutable)Ú	TypeError©ÚselfÚargsÚkwargss      r'   Ú
_immutablez_FrozenDict._immutableO   s   € ÜÐ?Ó@Ð@r)   c                ó$   — | j                  «        y ©N)r5   )r2   Úothers     r'   Ú__ior__z_FrozenDict.__ior__Z   s   € Ø�‰Õr)   N)Ú__name__Ú
__module__Ú__qualname__r5   Ú__setitem__Ú__delitem__ÚclearÚpopÚpopitemÚ
setdefaultÚupdater9   © r)   r'   r.   r.   N   s2   „ òAð €KØ€KØ€EØ
€CØ€GØ€JØ€Fór)   r.   c           
     óî   — t        | t        «      r6t        | j                  «       D ��ci c]  \  }}|t	        |«      “Œ c}}«      S t        | t
        t        f«      rt        d„ | D «       «      S | S c c}}w )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr7   )Ú_freeze_value©Ú.0Úchilds     r'   ú	<genexpr>z _freeze_value.<locals>.<genexpr>b   s   è ø€ Ò=¨e”] 5×)Ñ=ùó   ‚)r+   r   r.   ÚitemsrG   ÚlistÚtuple©r&   ÚkeyrJ   s      r'   rG   rG   ^   s`   € Ü�%œÔ!ÜÈÏÉË×V¹*¸#¸u˜C¤¨uÓ!5Ñ5ÓVÓWÐWÜ�%œ$¤˜Ô'ÜÑ=°uÔ=Ó=Ð=Ø€Lùó Ws   ©A1
c                óx  — t        | t        «      rt        d«      ‚t        | t        «      r4t        | t        «      s$d| cxk  rdk  st        d«      ‚ t        d«      ‚| S t        | t
        «      r"| j                  «       D ]  }t        |«       Œ | S t        | t        t        f«      r| D ]  }t        |«       Œ | S )NzTfloating-point Function literals are not part of the Slice 1 canonical wire contractlûÿÿÿ         r!   z<Function integer literal is outside the canonical JSON range)
r+   Úfloatr$   Úintr"   r   ÚvaluesÚ_validate_literalrN   rO   )r&   rJ   s     r'   rV   rV   f   sÈ   € Ü�%œÔÜð&ó
ð 	
ô �%œÔ¤j°¼Ô&=Ø˜5Ô- IÒ-ÜØNóð ð .ÜØNóð ð €Lô 
�Eœ7Ô	#Ø—\‘\“^ò 	%ˆEÜ˜eÕ$ð	%ð
 €Lô 
�EœD¤%˜=Ô	)Øò 	%ˆEÜ˜eÕ$ð	%à€Lr)   c                ó4  — t        | t        «      r| j                  «       S t        | t        «      r-| j	                  «       D ��ci c]  \  }}|t        |«      “Œ c}}S t        | t        t        f«      r| D �cg c]  }t        |«      ‘Œ c}S | S c c}}w c c}w r7   )r+   Ú_RemoteValueÚ_known_dictr   rM   Ú_known_wire_valuerN   rO   rP   s      r'   rZ   rZ   z   s~   € Ü�%œÔ&Ø× Ñ Ó"Ð"Ü�%œÔ!Ø@EÇÁÃ×N±*°#°u�Ô& uÓ-Ñ-ÓNÐNÜ�%œ$¤˜Ô'Ø6;Ö<¨UÔ! %Õ(Ò<Ð<Ø€Lùó Oùâ<s   ÁBÁ8Bc                  óh   — e Zd Z edd¬«      Z ed¬«      d„ «       Zedd„«       Zdd„Z	dd	„Z
dd
„Zy)rX   ÚignoreT©ÚextraÚfrozenÚafter©Úmodec                óŠ   — | j                   j                  «       D ]%  \  }}t        j                  | |t	        |«      «       Œ' | S r7   )Ú__dict__rM   ÚobjectÚ__setattr__rG   )r2   Únamer&   s      r'   Ú_freeze_mappingsz_RemoteValue._freeze_mappings‡   s@   € àŸ=™=×.Ñ.Ó0ò 	A‰KˆD�%Ü×Ñ˜t T¬=¸Ó+?Õ@ð	Aàˆr)   c                ó$   — | j                  |«      S r7   )Úmodel_validate_json)ÚclsÚpayloads     r'   Ú	from_jsonz_RemoteValue.from_json�   s   € à×&Ñ& wÓ/Ð/r)   c                ó  — i }| j                   j                  j                  «       D ]]  \  }}t        | |«      }|€Œ|j	                  «       s+|j
                  }|�| |«       k(  rŒ>|€||j                  k(  rŒPt        |«      ||<   Œ_ |S r7   )Ú	__class__Úmodel_fieldsrM   ÚgetattrÚis_requiredÚdefault_factoryÚdefaultrZ   )r2   Úknownrg   Úfieldr&   rs   s         r'   rY   z_RemoteValue._known_dict‘   s”   € ØˆØŸ>™>×6Ñ6×<Ñ<Ó>ò 
	3‰KˆD�%Ü˜D $Ó'ˆEØˆ}ØØ×$Ñ$Ô&Ø"'×"7Ñ"7�Ø"Ð.°5¹OÓ<MÒ3MØØ"Ð*¨u¸¿¹Ò/EØÜ+¨EÓ2ˆE�$ŠKð
	3ð ˆr)   c               óŠ   — |j                  «       D ��ci c]  \  }}|t        |«      “Œ }}}| j                  |¬«      S c c}}w )N©rC   )rM   rG   Ú
model_copy)r2   rC   rg   r&   s       r'   Ú_copyz_RemoteValue._copy    s@   € Ø@FÇÁÃ×O±°°u�$œ eÓ,Ñ,ÐOˆÑOØ�‰ fˆÓ-Ð-ùó Ps   ”?c                óR   — t        j                  | j                  «       dddd¬«      S )NFT©ú,ú:)Úensure_asciiÚ	allow_nanÚ	sort_keysÚ
separators)ÚjsonÚdumpsrY   ©r2   s    r'   Úto_canonical_jsonz_RemoteValue.to_canonical_json¤   s+   € Ü�z‰zØ×ÑÓØØØØ!ô
ð 	
r)   N)rl   Ústr©Úreturnúdict[str, Any])rC   úMapping[str, Any]©r‰   r‡   )r:   r;   r<   r   Úmodel_configr   rh   Úclassmethodrm   rY   rz   r†   rD   r)   r'   rX   rX   „   sH   „ Ù H°TÔ:€Lá˜'Ô"ñó #ðð
 ò0ó ð0óó.ô
r)   rX   c                  ó,   — e Zd ZdZ edd¬«      Zdd„Zy)Ú_OpenRemoteValuezCForward-readable value whose extras stay out of canonical encoding.ÚallowTr]   c                óP   — t        | j                  xs i j                  «       «      S r7   )ÚsetÚ__pydantic_extra__Úkeysr…   s    r'   Ú_unknown_field_namesz%_OpenRemoteValue._unknown_field_names³   s!   € Ü�D×+Ñ+Ò1¨r×7Ñ7Ó9Ó:Ð:r)   N)r‰   úset[str])r:   r;   r<   Ú__doc__r   r�   r–   rD   r)   r'   r�   r�   ®   s   „ ÙMá G°DÔ9€Lô;r)   r�   c                  ó0   — e Zd ZU dZded<   ded<   ded<   y)ÚFunctionArtifactz+Content-addressed Python artifact identity.r‡   ÚkindÚdigestÚ
entrypointN©r:   r;   r<   r˜   Ú__annotations__rD   r)   r'   rš   rš   ·   s   … Ù5à
ƒIØƒKØ„Or)   rš   c                  ó&   — e Zd ZU dZded<   ded<   y)ÚFunctionArtifactContentz;Encoded artifact bytes uploaded during remote registration.r‡   ÚencodingÚdataNrž   rD   r)   r'   r¡   r¡   ¿   s   … ÙEàƒMØ
„Ir)   r¡   c                  ó&   — e Zd ZU dZded<   ded<   y)ÚPythonAdapterSpecz:Internal scalar-callable to Arrow-batch adapter selection.r‡   r›   Ú_UInt32ÚversionNrž   rD   r)   r'   r¥   r¥   Æ   s   … ÙDà
ƒIØÔr)   r¥   c                  óD   — e Zd ZU dZded<   ded<   ded<   ded<   ded	<   y
)ÚFunctionArtifactRequestz6Source artifact uploaded while registering a Function.r‡   r›   rœ   r�   r¡   Úcontentr¥   ÚadapterNrž   rD   r)   r'   r©   r©   Í   s    … Ù@à
ƒIØƒKØƒOØ$Ó$ØÔr)   r©   c                  ó:   — e Zd ZU ded<   ded<   ded<   dZded<   y)	ÚFunctionParameterr‡   rg   Ú
arrow_typer"   ÚnullableNz$Optional[Literal['bytes', 'reader']]Úblob_access)r:   r;   r<   rŸ   r°   rD   r)   r'   r­   r­   ×   s   … Ø
ƒIØƒOØƒNØ8<€KÐ5Ô<r)   r­   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)ÚFunctionResultFieldr‡   rg   r®   r"   r¯   N©r:   r;   r<   rŸ   rD   r)   r'   r²   r²   Þ   s   … Ø
ƒIØƒOØ„Nr)   r²   c                  óF   — e Zd ZU dZded<   dZded<   dZded<   d	Zd
ed<   y)ÚFunctionOutputzFScalar or ordered named-struct output; unknown kinds remain decodable.r‡   r›   NúOptional[str]r®   úOptional[bool]r¯   rD   ztuple[FunctionResultField, ...]Úfields)r:   r;   r<   r˜   rŸ   r®   r¯   r¸   rD   r)   r'   rµ   rµ   ä   s)   … ÙPà
ƒIØ $€J�Ó$Ø#€HˆnÓ#Ø.0€FÐ+Ô0r)   rµ   c                  ó*   — e Zd ZU dZded<   dZded<   y)ÚSecretReferencea~  Where a Secret lives, carried as its parts rather than as one string.

    A joined id would need a delimiter, and a delimiter has to be excluded from
    every name and segment forever, agreed on by both sides, and re-agreed each
    time either grows a new way to be configured. Naming the parts settles all
    of that: nothing here is parsed, so nothing can parse two ways.
    r‡   rg   rD   útuple[str, ...]Únamespace_pathN)r:   r;   r<   r˜   rŸ   r¼   rD   r)   r'   rº   rº   í   s   … ñð ƒIØ&(€N�OÔ(r)   rº   c                  ó8   — e Zd ZU dZded<   dZded<   dZded<   y)	ÚSecretBindinga.  How a Secret reaches the Function that binds it.

    One list rather than a field per delivery mode: a binding is the concept,
    and how it arrives is a property of one. ``kind`` is open, so a binding a
    newer service introduces decodes here instead of failing the whole
    FunctionVersion.
    r‡   r›   Nr¶   ÚvariablezOptional[SecretReference]Ú
secret_ref)r:   r;   r<   r˜   rŸ   r¿   rÀ   rD   r)   r'   r¾   r¾   ú   s#   … ñð ƒIØ"€HˆmÓ"Ø,0€JÐ)Ô0r)   r¾   c                  ó4   — e Zd ZU dZded<   ded<   dZded<   y)	ÚFunctionSignaturea  Ordered inputs, output, and initialization fields of a Function.

    ``initialization`` lists the fields of the single row each Function
    instance is created with. Values come from each binding, not from the
    Function version; the tuple is empty when the Function takes none.
    útuple[FunctionParameter, ...]Úinputsrµ   ÚoutputrD   ÚinitializationN)r:   r;   r<   r˜   rŸ   rÆ   rD   r)   r'   rÂ   rÂ     s    … ñð *Ó)ØÓØ46€NÐ1Ô6r)   rÂ   c                  ób   — e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZded<   dZ	d	ed<   y)ÚPythonEnvironmentSpecz-One Sophon-managed Python environment source.r‡   r›   rD   r»   ÚpackagesÚchannelsNr¶   ÚpathÚmodulesÚimage)
r:   r;   r<   r˜   rŸ   rÉ   rÊ   rË   rÌ   rÍ   rD   r)   r'   rÈ   rÈ     s<   … Ù7à
ƒIØ "€HˆoÓ"Ø "€HˆoÓ"Ø€Dˆ-ÓØ!€Gˆ_Ó!Ø€Eˆ=Ôr)   rÈ   c                  óÄ   — e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZded<    e	d¬«      e
d„ «       «       Z edd¬«      e
d„ «       «       Z e	d¬«      d„ «       Zy)ÚPythonRuntimeSpeczÕRemote runtime definition with environment values.

    V1 supports ``kind="python"``. Newer runtime kinds remain readable, while
    their unknown payload fields are intentionally not retained by the client.
    r‡   r›   Nr¶   Úpython_versionzOptional[PythonEnvironmentSpec]ÚenvironmentúOptional[Mapping[str, str]]Úenvr·   ÚgpuÚbeforera   c                óx   — t        |t        «      r)|j                  d«      }t        |t        «      r|dvrd|iS |S )Nr›   >   ÚpythonÚ	python_v2)r+   r   Úgetr‡   )rk   r&   r›   s      r'   Ú _discard_unknown_runtime_payloadz2PythonRuntimeSpec._discard_unknown_runtime_payload-  s=   € ô �eœWÔ%Ø—9‘9˜VÓ$ˆDÜ˜$¤Ô$¨Ð5LÑ)LØ �~Ð%Øˆr)   c                ó   — |€y t        |«      S r7   )r(   ©rk   r&   s     r'   Ú_validate_gpu_markerz&PythonRuntimeSpec._validate_gpu_marker6  s   € ð ˆ=ØÜ(¨Ó/Ð/r)   r`   c                ó  — | j                   dk(  rG| j                  €t        d«      ‚| j                  €t        d«      ‚| j                  �t        d«      ‚| S | j                   dk(  rG| j                  €t        d«      ‚| j                  €t        d«      ‚| j                  €t        d«      ‚| S t
        j                  | d	d «       t
        j                  | d
d «       t
        j                  | dd «       t
        j                  | dd «       | S )Nr×   z&python runtime requires python_versionz#python runtime requires environmentz1python runtime with gpu requires kind='python_v2'rØ   z)python_v2 runtime requires python_versionz&python_v2 runtime requires environmentzpython_v2 runtime requires gpurÐ   rÑ   rÓ   rÔ   )r›   rÐ   r$   rÑ   rÔ   re   rf   r…   s    r'   Ú_validate_runtime_kindz(PythonRuntimeSpec._validate_runtime_kind=  s  € à�9‰9˜Ò Ø×"Ñ"Ð*Ü Ð!IÓJÐJØ×ÑÐ'Ü Ð!FÓGÐGØ�x‰xÐ#Ü Ð!TÓUÐUð ˆð �Y‰Y˜+Ò%Ø×"Ñ"Ð*Ü Ð!LÓMÐMØ×ÑÐ'Ü Ð!IÓJÐJØ�x‰xÐÜ Ð!AÓBÐBð ˆô	 ×Ñ˜tÐ%5°tÔ<Ü×Ñ˜t ]°DÔ9Ü×Ñ˜t U¨DÔ1Ü×Ñ˜t U¨DÔ1Øˆr)   )r:   r;   r<   r˜   rŸ   rÐ   rÑ   rÓ   rÔ   r   rŽ   rÚ   r   rÝ   rß   rD   r)   r'   rÏ   rÏ      s“   … ñð ƒIØ$(€N�MÓ(Ø37€KÐ0Ó7Ø'+€CÐ	$Ó+Ø€CˆÓá˜(Ô#Øñó ó $ðñ �U Ô*Øñ0ó ó +ð0ñ
 ˜'Ô"ñó #ñr)   rÏ   c                  ó0   — e Zd ZU dZded<   ded<   ded<   y)	ÚFunctionImagezFA complete OCI Function image identified by its exact manifest digest.r‡   Úmanifest_digestr‹   Ú
descriptorr"   ÚsourceNrž   rD   r)   r'   rá   rá   U  s   … ÙPàÓØ!Ó!Ø„Lr)   rá   c                ó8   — t        | «      dkD  rt        d«      ‚| S )Nr!   zFunction version exceeds uint64)rT   r$   r%   s    r'   Ú_validate_object_versionræ   ]  s   € Ü
ˆ5ƒz�IÒÜÐ:Ó;Ð;Ø€Lr)   z^[1-9][0-9]*$)r   Úpatternc                  ó�   — e Zd ZU dZded<   dZded<   ded<   ded<   d	ed
<   ded<   ded<   dZded<   ded<   ded<   ded<   dd„Zy)ÚFunctionVersiona`  A pinned object revision, independent of its executable image digest.

    ``name`` and ``namespace_path`` are the Function's parts, as a
    [SecretReference][lancedb.functions.SecretReference] carries a Secret's;
    they are what [get_function][lancedb.db.DBConnection.get_function] takes.
    An empty ``namespace_path`` is the root namespace.
    r‡   rg   rD   r»   r¼   Ú	object_idÚlocationÚ_ObjectVersionr§   rá   rÍ   rÂ   Ú	signatureútuple[SecretBinding, ...]Úsecret_bindingsrT   Úcreated_at_millisúMapping[str, str]Úmetadatar"   Údisabledc           
     óŒ  — ddl m} t        d„ | j                  j                  D «       «      }| j                  j
                  D �ci c]  }|j                  |“Œ }}|D �cg c]	  }||vsŒ|‘Œ }}|j                  «       D ��cg c]  \  }}|j                  s||vr|‘Œ }	}}t        t        |«      t        |«      z
  t        |«      z
  «      }
|s|	s|
rdg }|r|j                  d|›�«       |	r|j                  d|	›�«       |
r|j                  d|
›�«       t        ddj                  |«      z   d	z   «      ‚g }|D ]W  }||   }t        ||«      r|j                  €t        d
|›d�«      ‚|j                  t!        |dd|j                  i¬«      «       ŒY i }|D ]  }||v sŒt#        |||   «      ||<   Œ t%        t'        | j                  | j(                  | j*                  | j,                  | j.                  | j0                  j2                  ¬«      t        |«      | j                  j4                  |¬«      S c c}w c c}w c c}}w )aà  Bind this exact version to named table columns.

        Every input must be a direct [lancedb.col][lancedb.expr.col]
        reference. A Function that declares initialization fields takes their
        values as further keyword arguments; they are constants of this
        binding, fixed for every row, and every instance the binding runs is
        created with them. A non-nullable field without a default must be
        given; an omitted nullable field is null, and the Function's own
        default applies to a null value.

        The returned application is immutable and retains a named-struct
        output as one binding, so every row's sibling values come from one
        logical Function evaluation. Map result fields to table columns with
        [FunctionApplication.rename][lancedb.functions.FunctionApplication.rename],
        then pass the application to
        [Table.add_columns][lancedb.table.Table.add_columns].

        Examples
        --------
        >>> from lancedb import col
        >>> application = function(  # doctest: +SKIP
        ...     title=col("title"),
        ...     body=col("body"),
        ... ).rename(columns={
        ...     "normalized_text": "search_text",
        ...     "token_count": "search_token_count",
        ... })
        >>> table.add_columns(application)  # doctest: +SKIP
        >>> table.add_columns({  # doctest: +SKIP
        ...     "embedding": embed(text=col("body"), model="small", dimensions=512)
        ... })
        r   ©ÚExprc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr7   ©rg   ©rI   Ú	parameters     r'   rK   z+FunctionVersion.__call__.<locals>.<genexpr>¢  s   è ø€ ÒQ¨i˜9Ÿ>�>ÑQùó   ‚zmissing inputs: zmissing initialization: zunknown arguments: zinvalid Function arguments (z; ú)zFunction input z$ must be a direct col(...) referenceÚcolumnrË   )rú   r›   r&   )rg   r¼   rê   rë   r§   râ   )ÚfunctionrÄ   rÅ   rÆ   )Úlancedb.exprrö   rO   rí   rÄ   rÆ   rg   rM   r¯   Úsortedr“   Úappendr0   Újoinr+   Ú_column_pathÚApplicationInputÚ_initialization_valueÚFunctionApplicationÚFunctionVersionRefr¼   rê   rë   r§   rÍ   râ   rÅ   )r2   Ú	argumentsrö   Ú
parametersrv   r¸   rú   Úmissingrg   Úmissing_initializationÚunknownÚdetailsÚbindingsr&   rÆ   s                  r'   Ú__call__zFunctionVersion.__call__  sM  € õB 	&äÑQ¸4¿>¹>×;PÑ;PÔQÓQˆ
Ø15·±×1NÑ1NÖO¨�%—*‘*˜eÑ#ÐOˆÐOØ.8ÖW ¸IÈYÒ<V’9ÐWˆÐWð  &Ÿ|™|›~÷"
á��eØ—>’> d°)Ñ&;ò ð"
Ðñ "
ô
 œ˜Y›¬#¨j«/Ñ9¼CÀ»KÑGÓHˆÙÑ,±ØˆGÙØ—‘Ð!1°'°Ð=Ô>Ù%Ø—‘Ð!9Ð:PÐ9SÐTÔUÙØ—‘Ð!4°W°KÐ@ÔAÜÐ:¸T¿Y¹YÀwÓ=OÑOÐRUÑUÓVÐVàˆØ#ò 	ˆIØ˜iÑ(ˆEÜ˜e TÔ*¨e×.@Ñ.@Ð.HÜØ% i ]Ð2VÐWóð ð �O‰OÜ Ø'Ø!Ø! 5×#5Ñ#5Ð6ôõð	ð ˆØò 	TˆDØ�yÒ Ü'<¸TÀ9ÈTÁ?Ó'S�˜tÒ$ð	Tô #Ü'Ø—Y‘YØ#×2Ñ2ØŸ.™.ØŸ™ØŸ™Ø $§
¡
× :Ñ :ôô ˜“?Ø—>‘>×(Ñ(Ø)ô
ð 	
ùòI PùÚWùó"
s   ÁH6Á	H;Á)H;ÂI N)r  r	   r‰   r  )r:   r;   r<   r˜   rŸ   r¼   rï   r  rD   r)   r'   ré   ré   j  sV   … ñð ƒIØ&(€N�OÓ(ØƒNØƒMØÓØÓØ Ó Ø13€OÐ.Ó3ØÓØÓØƒNôT
r)   ré   c                ó2   ‡ ‡‡— ddl mŠ ˆˆ ˆfd„Š ‰|«      S )zDOne initialization value as plain JSON; the service checks its type.r   rõ   c                ó:  •— t        | ‰«      rt        d‰›d�«      ‚| �t        | «      t        t        t
        fv r| S t        | «      t        u r(t        j                  | «      st        d‰›d| ›�«      ‚| S t        | t        t        f«      r| D �cg c]
  } ‰|«      ‘Œ c}S t        | t        «      r<t        d„ | D «       «      r*| j                  «       D ��ci c]  \  }}| ‰|«      “Œ c}}S t        d‰›dt        | «      j                  › �«      ‚c c}w c c}}w )Nzinitialization field z\ takes a constant, not a column expression; every row of a binding shares one initializationz must be finite, got c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr7   ©r+   r‡   )rI   rQ   s     r'   rK   z7_initialization_value.<locals>.plain.<locals>.<genexpr>ê  s   è ø€ Ò-TÀs¬j¸¼c×.BÑ-Tùs   ‚zI takes booleans, numbers, strings, lists, and string-keyed mappings, got )r+   r0   Útyper"   rT   r‡   rS   ÚmathÚisfiniter$   rN   rO   r   ÚallrM   r:   )r&   rJ   rQ   rö   rg   Úplains      €€€r'   r  z$_initialization_value.<locals>.plainÚ  s  ø€ Ü�e˜TÔ"ÜØ'¨ xð 0Oð Oóð ð ˆ=œD ›K¬D´#´sÐ+;Ñ;ØˆLÜ�‹;œ%ÑÜ—=‘= Ô'Ü Ø+¨D¨8Ð3HÈÈ	ÐRóð ð ˆLÜ�eœd¤E˜]Ô+Ø.3Ö4 U‘E˜%•LÒ4Ð4Ü�eœWÔ%¬#Ñ-TÈeÔ-TÔ*TØ8=¿¹»×F©*¨#¨u�C™˜u›Ñ%ÓFÐFÜØ# D 8ð ,5Ü59¸%³[×5IÑ5IÐ4JðLó
ð 	
ùò 5ùãFs   ÂDÃD)rÿ   rö   )rg   r&   rö   r  s   ` @@r'   r  r  Ö  s   ú€ å!ö
ñ. �‹<Ðr)   c                  óH   — e Zd ZU dZded<   ded<   ded<   ded	<   d
Zded<   y)ÚFunctionRegistrationRequesta&  Stable remote registration envelope produced by :func:`udf`.

    Credential values deliberately have no field here. The only secret-shaped
    thing a client sends is ``secret_bindings``: the name of a Secret the
    database already holds, which the remote service resolves at execution.
    r‡   rg   r©   ÚartifactrÂ   rí   rÏ   ÚruntimerD   rî   rï   N)r:   r;   r<   r˜   rŸ   rï   rD   r)   r'   r  r  ô  s+   … ñð ƒIØ%Ó%Ø Ó ØÓØ13€OÐ.Ô3r)   r  c                  óN   — e Zd ZU ded<   dZded<   ded<   ded<   ded	<   ded
<   y)r  r‡   rg   rD   r»   r¼   rê   rë   rì   r§   râ   N)r:   r;   r<   rŸ   r¼   rD   r)   r'   r  r    s'   … Ø
ƒIØ&(€N�OÓ(ØƒNØƒMØÓØÔr)   r  c                  óV   — e Zd ZU dZded<   ded<   ded<    ed«      ed„ «       «       Zy)	r  zðOne parameter value.

    Slice 1 freezes integers, strings, booleans, nulls, arrays, and objects.
    Floating-point literal encoding is deferred until Python authoring is
    introduced with a language-neutral numeric representation.
    r‡   rú   r›   r	   r&   c                ó   — t        |«      S r7   )rV   rÜ   s     r'   Ú_validate_valuez ApplicationInput._validate_value  s   € ô ! Ó'Ð'r)   N)r:   r;   r<   r˜   rŸ   r   rŽ   r   rD   r)   r'   r  r    s7   … ñð ƒNØ
ƒIØƒJá�WÓØñ(ó ó ñ(r)   r  c                  óŒ   ‡ — e Zd ZU dZded<   ded<   ded<    ee¬«      Zd	ed
<    ee¬«      Zded<   dˆ fd„Z	dd„Z
dd„Zˆ xZS )r  ak  Immutable pre-declaration application of an exact Function version.

    A named-struct output remains one application through table
    declaration and execution.
    [FunctionApplication.rename][lancedb.functions.FunctionApplication.rename]
    records the result-field to table-column mapping without splitting sibling
    outputs into separate UDF calls.
    r  rþ   ztuple[ApplicationInput, ...]rÄ   rµ   rÅ   )rs   rñ   Úcolumnsr‹   rÆ   c                ór   •— t         ‰| �  «       }| j                  «       D ]  }|j                  |d «       Œ |S r7   )ÚsuperrY   r–   r@   )r2   r&   rg   ro   s      €r'   rY   zFunctionApplication._known_dict1  s;   ø€ Ü‘Ñ#Ó%ˆØ×-Ñ-Ó/ò 	"ˆDØ�I‰I�d˜DÕ!ð	"àˆr)   c                ój  ‡— | j                  «       D �ch c]  }d|› �’Œ	 }}|j                  d„ | j                  j                  «       D «       «       t        | j                  «      D ]-  \  Š}|j                  ˆfd„|j                  «       D «       «       Œ/ |j                  d„ | j
                  j                  «       D «       «       t        | j
                  j                  «      D ]-  \  Š}|j                  ˆfd„|j                  «       D «       «       Œ/ |rt        dt        |«      ›�«      ‚y c c}w )Nzapplication.c              3  ó&   K  — | ]	  }d |› �–— Œ y­w)z	function.NrD   ©rI   rg   s     r'   rK   z9FunctionApplication._ensure_declarable.<locals>.<genexpr>9  s   è ø€ ò 
Ø#'ˆi˜�vÔñ
ùó   ‚c              3  ó.   •K  — | ]  }d ‰› d|› �–— Œ y­w)zinputs[ú].NrD   ©rI   rg   Úindexs     €r'   rK   z9FunctionApplication._ensure_declarable.<locals>.<genexpr>=  s#   øè ø€ ò Ø.2�'˜%˜  4 &Ô)ñùó   ƒc              3  ó&   K  — | ]	  }d |› �–— Œ y­w)zoutput.NrD   r'  s     r'   rK   z9FunctionApplication._ensure_declarable.<locals>.<genexpr>@  s   è ø€ ÒW¨D˜  Ô'ÑWùr(  c              3  ó.   •K  — | ]  }d ‰› d|› �–— Œ y­w)zoutput.fields[r*  NrD   r+  s     €r'   rK   z9FunctionApplication._ensure_declarable.<locals>.<genexpr>B  s&   øè ø€ ò àð !   r¨$¨Ô0ñùr-  z<Function application contains fields from a newer contract: )	r–   rC   rþ   Ú	enumeraterÄ   rÅ   r¸   r$   r   )r2   rg   r  Úinput_valuerv   r,  s        @r'   Ú_ensure_declarablez&FunctionApplication._ensure_declarable7  s!  ø€ Ø59×5NÑ5NÓ5PÖQ¨T�\ $ Ò(ÐQˆÐQØ�‰ñ 
Ø+/¯=©=×+MÑ+MÓ+Oô
ô 	
ô #,¨D¯K©KÓ"8ò 	ÑˆE�;Ø�N‰Nó Ø6A×6VÑ6VÓ6Xôõ ð	ð 	�‰ÑW°D·K±K×4TÑ4TÓ4VÔWÔWÜ% d§k¡k×&8Ñ&8Ó9ò 	‰LˆE�5Ø�N‰Nó à!×6Ñ6Ó8ôõ ð	ñ
 ÜØNÜ˜'“?Ð%ð'óð ð ùò Rs   ”D0c               ó  ‡— | j                   j                  dk7  rt        d«      ‚| j                   j                  D �ch c]  }|j                  ’Œ }}t        |«      |z
  }|rt        dt        |«      ›�«      ‚t        | j                  «      Š‰j                  |«       t        ˆfd„| j                   j                  D «       «      }t        t        |«      «      t        |«      k7  rt        d«      ‚| j                  d‰i¬«      S c c}w )z8Return a copy with result-field to table-column aliases.Únamed_structz7rename(columns=...) requires a named-struct applicationz unknown Function result fields: c              3  ój   •K  — | ]*  }‰j                  |j                  |j                  «      –— Œ, y ­wr7   )rÙ   rg   )rI   rv   Úmergeds     €r'   rK   z-FunctionApplication.rename.<locals>.<genexpr>V  s)   øè ø€ ò 
Ø38ˆF�J‰J�u—z‘z 5§:¡:×.ñ
ùs   ƒ03z6FunctionApplication rename destinations must be uniquer"  rx   )rÅ   r›   r$   r¸   rg   r“   r   Údictr"  rC   rO   Úlenrz   )r2   r"  rv   Úresult_fieldsr  Údestinationsr6  s         @r'   ÚrenamezFunctionApplication.renameL  sç   ø€ à�;‰;×Ñ˜~Ò-ÜÐVÓWÐWØ15·±×1CÑ1CÖD¨˜Ÿ›ÐDˆÐDÜ�g“, Ñ.ˆÙÜÐ?ÄÀwÃÐ?RÐSÓTÐTÜ�d—l‘lÓ#ˆØ�‰�gÔÜó 
Ø<@¿K¹K×<NÑ<Nô
ó 
ˆô Œs�<Ó Ó!¤S¨Ó%6Ò6ÜÐUÓVÐVØ�z‰z )¨VÐ!4ˆzÓ5Ð5ùò Es   ¾Drˆ   )r‰   ÚNone)r"  rñ   r‰   r  )r:   r;   r<   r˜   rŸ   r   r7  r"  rÆ   rY   r2  r;  Ú__classcell__)ro   s   @r'   r  r    sM   ø… ñð !Ó Ø(Ó(ØÓÙ!&°tÔ!<€GÐÓ<ñ ).¸dÔ(C€NÐ%ÓCõó÷*6r)   r  c                  ó@   — e Zd ZU ded<   ded<   ded<   ded<   ded<   y	)
ÚInputBindingr‡   rú   Ú_Int32Úfield_idÚ
field_pathr®   r"   r¯   Nr³   rD   r)   r'   r?  r?  ^  s   … ØƒNØÓØƒOØƒOØ„Nr)   r?  c                  óN   — e Zd ZU dZded<   ded<   ded<   ded<   ded	<   d
ed<   y)ÚOutputMappingz One stable result-field mapping.r‡   Úresult_fieldÚoutput_namer@  Úoutput_field_idr¦   Úoutput_ordinalr®   r"   r¯   Nrž   rD   r)   r'   rD  rD  f  s'   … Ù*àÓØÓØÓØÓØƒOØ„Nr)   rD  c                  ó&   — e Zd ZU dZded<   ded<   y)ÚAssignmentMappingz>Internal physical column preserving flattened struct validity.r‡   rF  r@  rG  Nrž   rD   r)   r'   rJ  rJ  q  s   … ÙHàÓØÔr)   rJ  c                  ó|   — e Zd ZU dZded<   ded<   ded<   ded	<   d
Zded<   d
Zded<   d
Zded<   d
Zded<   	 dd„Z	y
)ÚFunctionBindingzEImmutable Function binding persisted by the Enterprise table service.r‡   Ú
binding_idr  rþ   ztuple[InputBinding, ...]rÄ   ztuple[OutputMapping, ...]ÚoutputsNzOptional[AssignmentMapping]Ú
assignmentzOptional[Mapping[str, Any]]Úinput_schemaÚoutput_schemar¶   rÆ   c                óÖ   — | j                   €yt        j                  j                  t	        j
                  | j                   «      «      }|j                  «       j                  «       d   S )z>The initialization values this binding creates instances with.Nr   )rÆ   ÚpaÚipcÚopen_streamÚbase64Ú	b64decodeÚread_allÚ	to_pylist)r2   Úreaders     r'   Úinitialization_rowz"FunctionBinding.initialization_row…  sQ   € à×ÑÐ&ØÜ—‘×#Ñ#¤F×$4Ñ$4°T×5HÑ5HÓ$IÓJˆØ�‰Ó ×*Ñ*Ó,¨QÑ/Ð/r)   )r‰   zOptional[dict[str, Any]])
r:   r;   r<   r˜   rŸ   rO  rP  rQ  rÆ   r[  rD   r)   r'   rL  rL  x  sO   … ÙOàƒOØ Ó Ø$Ó$Ø&Ó&Ø.2€JÐ+Ó2Ø04€LÐ-Ó4Ø15€MÐ.Ó5Ø$(€N�MÓ(ØSô0r)   rL  c                  ól   — e Zd ZU dZded<   ded<   ded<   ded<   dZded	<   edd
„«       Zedd„«       Zy)ÚRefreshColumnResultzàTerminal result of an expression-backed or Function-backed refresh Job.

    Local jobs produce this value in process. LanceDB Cloud and Enterprise
    decode the same value from the durable server-job terminal payload.
    Ú_UInt64Úrows_assignedÚrows_failedÚrows_remainingÚsource_versionNzOptional[_UInt64]Úpublished_versionc                ó   — | j                   S )z9Deprecated compatibility alias for :attr:`rows_assigned`.)r_  r…   s    r'   Úrows_filledzRefreshColumnResult.rows_filledš  s   € ð ×!Ñ!Ð!r)   c                ó   — | j                   S )z=Deprecated compatibility alias for :attr:`published_version`.)rc  r…   s    r'   r§   zRefreshColumnResult.versionŸ  s   € ð ×%Ñ%Ð%r)   )r‰   rT   )r‰   zOptional[int])	r:   r;   r<   r˜   rŸ   rc  Úpropertyre  r§   rD   r)   r'   r]  r]  �  sS   … ñð ÓØÓØÓØÓØ+/ÐÐ(Ó/àò"ó ð"ð ò&ó ñ&r)   r]  z^[A-Za-z_][A-Za-z0-9_.-]*$Úblob_v2zARROW:extension:namezlance.blob.v2zmunsupported Arrow type for Function signature: Blob v2 fields nested under collection types are not supportedÚint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Úfloat32Úfloat64Úutf8Ú
large_utf8ÚbinaryÚlarge_binaryÚdate32Údate64c                óh   — t        | «      }|�|S t        | «      }t        j                  |ddd¬«      S )zGThe compact Function grammar, or canonical exact JSON for nested types.FTr|   ©r   r�   r‚   )Ú_grammar_arrow_typeÚ_exact_arrow_typerƒ   r„   )Ú	data_typeÚgrammarÚexacts      r'   Ú_canonical_arrow_typer�  Æ  s6   € ä! )Ó,€GØÐØˆÜ˜iÓ(€EÜ�:‰:�e¨%¸4ÈJÔWÐWr)   c                ó¼  — t         D ]  \  }}| |k(  sŒ|c S  t        j                  j                  | «      st        j                  j	                  | «      r9t        | «      }|€y t        j                  j                  | «      rdnd}|› d|› d�S t        j                  j                  | «      r/| j                  dkD  r t        | «      }|�d|› d| j                  › d�S y )NrN   Ú
large_listú<ú>r   zfixed_size_list<ú, )Ú_GRAMMAR_PRIMITIVESrS  ÚtypesÚis_listÚis_large_listÚ_grammar_list_itemÚis_fixed_size_listÚ	list_size)r~  Ú	candidaterg   ÚitemÚprefixs        r'   r|  r|  Ï  sÒ   € Ü.ò ‰ˆ	�4Ø˜	Ó!ØŠKðô 
‡x�x×Ñ˜	Ô"¤b§h¡h×&<Ñ&<¸YÔ&GÜ! )Ó,ˆØˆ<ØÜŸ8™8×+Ñ+¨IÔ6‘¸LˆØ�˜˜4˜& Ð"Ð"Ü	‡x�x×"Ñ" 9Ô-°)×2EÑ2EÈÒ2IÜ! )Ó,ˆØÐØ% d V¨2¨i×.AÑ.AÐ-BÀ!ÐDÐDØr)   c                ó”   — | j                   }|j                  dk7  s|j                  s|j                  ryt	        |j
                  «      S )z‹The grammar names only the item type; it always means a non-nullable
    child called `item`, so other child properties require exact JSON.r�  N)Úvalue_fieldrg   r¯   rò   r|  r  )r~  rJ   s     r'   r‹  r‹  à  s9   € ð ×!Ñ!€EØ‡z�z�VÒ˜uŸ~š~°·²ØÜ˜uŸz™zÓ*Ð*r)   c           	     óØ  — | j                   st        d«      ‚t        | «      r¨t        | «      st        d| › �«      ‚| j                  xs i j                  «       D ��ci c]H  \  }}t        |t        «      r|j                  «       n|t        |t        «      r|j                  «       n|“ŒJ }}}|r|t        t        ik7  rt        d«      ‚y y | j                  rt        d| › �«      ‚y c c}}w )NzLunsupported Arrow type for Function signature: field names must not be emptyzkunsupported Arrow type for Function signature: lance.blob.v2 requires a supported Blob storage layout, got z|unsupported Arrow type for Function signature: lance.blob.v2 field metadata must contain only its canonical extension markerzTunsupported Arrow type for Function signature: field metadata is not supported, got )rg   r0   Ú_is_blob_v2_fieldÚ_has_supported_blob_v2_layoutrò   rM   r+   ÚbytesÚdecodeÚ_ARROW_EXTENSION_NAME_KEYÚ_BLOB_V2_EXTENSION_NAME)rv   rQ   r&   rò   s       r'   Ú_validate_exact_arrow_fieldrš  é  s  € Ø�:Š:Üð ó
ð 	
ô ˜ÔÜ,¨UÔ3ÜðAØAFÀðIóð ð  %Ÿ~™~Ò3°×:Ñ:Ó<÷	
ñ ��Uô (¨¬UÔ3ˆS�Z‰ZŒ\¸Ü",¨U´EÔ":�—‘”ÀñFð
ˆñ 
ñ ˜Ü%Ô'>ð%
ò 
ô ðRóð ð
ˆ8ð 
�ŠÜð%Ø%* Gð-ó
ð 	
ð 
ùó
s   ÁAC&c                óø  ‡— | j                   }t        |t        j                  «      r|j                  }t        j
                  j                  |«      syt        |«      Šdˆfd„}dt        j                  «       dfdt        j                  «       dff}|dt        j                  «       dfdt        j                  «       dffz   }dt        j                  «       dfdt        j                  «       dfdt        j                  «       dfd	t        j                  «       dfd
t        j                  «       dfdt        j                  «       dff}dt        j                  «       dfdt        j                  «       dfdt        j                  «       dfd	t        j                  «       dfdt        j                  «       dff} ||d«      xs7  ||d«      xs,  ||dt        |«      z  «      xs  ||dt        |«      z  «      S )NFc                óp   •— t        ‰«      t        | «      k(  xr t        d„ t        ‰| |«      D «       «      S )Nc              3  ó˜   K  — | ]B  \  }\  }}}}|j                   |k(  xr% |j                  |k(  xr | xs |j                  |k(  –— ŒD y ­wr7   )rg   r  r¯   )rI   Úactualrg   Úexpected_typer¯   Úcheck_nullables         r'   rK   zA_has_supported_blob_v2_layout.<locals>.matches.<locals>.<genexpr>  sc   è ø€ ò 0
ñ H�Ñ7˜˜}¨h¸ð �K‰K˜4Ñò DØ—‘˜}Ñ,òDà#Ð#ÒB v§¡¸(Ñ'BóDñ0
ùs   ‚AA
)r8  r  Úzip)ÚspecÚcompare_nullabler¸   s     €r'   Úmatchesz._has_supported_blob_v2_layout.<locals>.matches  sC   ø€ Ü�6‹{œc $›iÑ'ò 
¬Cñ 0
ô LOØ˜Ð.óLô	0
ó -
ð 	
r)   r£   TÚuriÚpositionÚsizer›   Úblob_idÚ	blob_sizeÚblob_uri)TT)TTFF)T)F)r‰   r"   )r  r+   rS  ÚExtensionTypeÚstorage_typerˆ  Ú	is_structrO   rw  rt  rp  rm  ro  r8  )rv   r~  r¤  Úlogical_minimalÚlogical_fullÚpreparedrã   r¸   s          @r'   r•  r•  	  s¼  ø€ Ø—
‘
€IÜ�)œR×-Ñ-Ô.Ø×*Ñ*ˆ	Ü�8‰8×Ñ˜iÔ(Øä�9Ó€Fõ
ð 
”—‘Ó" DÐ)Ø	”—‘“	˜4Ð ð€Oð #Ø	”R—Y‘Y“[ $Ð'Ø	”—‘“˜dÐ#ð&ñ €Lð
 
”—‘“˜TÐ"Ø	”—‘Ó" DÐ)Ø	”—‘“	˜4Ð Ø	”B—I‘I“K Ð&Ø	”b—i‘i“k 4Ð(Ø	”R—Y‘Y“[ $Ð'ð€Hð 
”—‘“˜UÐ#Ø	”R—Y‘Y“[ %Ð(Ø	”—‘“˜eÐ$Ø	”B—I‘I“K Ð'Ø	”R—W‘W“Y Ð&ð€Jñ 	� Ó.ò 	;Ù�<Ð!;Ó<ò	;á�8˜W¤s¨8£}Ñ4Ó5ò	;ñ �:˜x¬#¨j«/Ñ9Ó:ð	r)   c                ód   — t        | «       t        | «      rt        S t        | j                  «      S r7   )rš  r”  Ú_FUNCTION_BLOB_V2_TYPEr�  r  )rv   s    r'   Ú_canonical_arrow_fieldr³  ;  s'   € Ü Ô&Ü˜ÔÜ%Ð%Ü  §¡Ó,Ð,r)   c                ój   — | j                   }t        |t        j                  «      r|j                  S |S r7   )r  r+   rS  r«  r¬  )rv   r~  s     r'   Ú_blob_storage_typerµ  B  s-   € Ø—
‘
€IÜ�)œR×-Ñ-Ô.Ø×%Ñ%Ð%ØÐr)   c           	     óò   — t        | «      }t        j                  j                  |«      st	        d«      ‚d|D �cg c]/  }|j
                  |j                  t        |j                  «      dœ‘Œ1 c}dœS c c}w )NzTunsupported Arrow type for Function signature: lance.blob.v2 requires struct storageÚstruct©rg   r¯   r  ©r  r¸   )	rµ  rS  rˆ  r­  r0   rg   r¯   r}  r  )rv   ÚstoragerJ   s      r'   Ú_exact_blob_storage_typer»  I  sz   € Ü  Ó'€GÜ�8‰8×Ñ˜gÔ&Üð&ó
ð 	
ð
 ð !ö
ð ð	 Ÿ
™
Ø!ŸN™NÜ)¨%¯*©*Ó5óò
ñ
ð 
ùò
s   »4A4c                ó
  — t         j                  j                  | «      rt        d„ | D «       «      S t         j                  j	                  | «      s>t         j                  j                  | «      st         j                  j                  | «      r.| j                  }t        |«      xs t        |j                  «      S t         j                  j                  | «      r(t        d„ | j                  | j                  fD «       «      S y)Nc              3  ó`   K  — | ]&  }t        |«      xs t        |j                  «      –— Œ( y ­wr7   ©r”  Ú_data_type_has_blob_v2r  ©rI   rv   s     r'   rK   z)_data_type_has_blob_v2.<locals>.<genexpr>_  ó/   è ø€ ò 
àô ˜eÓ$ÒJÔ(>¸u¿z¹zÓ(JÓJñ
ùó   ‚,.c              3  ó`   K  — | ]&  }t        |«      xs t        |j                  «      –— Œ( y ­wr7   r¾  rÀ  s     r'   rK   z)_data_type_has_blob_v2.<locals>.<genexpr>k  rÁ  rÂ  F)rS  rˆ  r­  Úanyr‰  rŠ  rŒ  r’  r”  r¿  r  Úis_mapÚ	key_fieldÚ
item_field)r~  rv   s     r'   r¿  r¿  ]  sË   € Ü	‡x�x×Ñ˜)Ô$Üñ 
à"ô
ó 
ð 	
ô
 	�‰×Ñ˜Ô#Ü�8‰8×!Ñ! )Ô,Ü�8‰8×&Ñ& yÔ1à×%Ñ%ˆÜ  Ó'ÒMÔ+AÀ%Ç*Á*Ó+MÐMÜ	‡x�x‡��yÔ!Üñ 
à#×-Ñ-¨y×/CÑ/CÐDô
ó 
ð 	
ð r)   F©Úinside_collectionc               ó  — t        | «       t        | «      r?|rt        t        «      ‚| j                  | j
                  t        | «      t        t        idœS | j                  | j
                  t        | j                  |¬«      dœ}|S )N)rg   r¯   r  rò   rÈ  r¸  )rš  r”  r0   Ú_NESTED_BLOB_COLLECTION_ERRORrg   r¯   r»  r˜  r™  r}  r  )rv   rÉ  r&   s      r'   Ú_exact_arrow_fieldrÌ  r  s{   € ô   Ô&Ü˜ÔÙÜÔ9Ó:Ð:à—J‘JØŸ™Ü,¨UÓ3ä)Ô+Bðñ	
ð 	
ð —
‘
Ø—N‘NÜ! %§*¡*Ð@QÔRñ€Eð
 €Lr)   c               ó†  — t         D ]  \  }}| |k(  sŒd|ic S  t        j                  j                  | «      rot	        | «      }|D �cg c]  }|j
                  ‘Œ }}|r t        t        |«      «      t        |«      k7  rt        d«      ‚d|D �cg c]  }t        ||¬«      ‘Œ c}dœS t        j                  j                  | «      s>t        j                  j                  | «      st        j                  j                  | «      rít        j                  j                  | «      rA| j                  j
                  dk7  rt        d«      ‚| j                  dk  rt        d	| › �«      ‚t        j                  j                  | «      rd
n"t        j                  j                  | «      rdndt        | j                  d¬«      gdœ}t        j                  j                  | «      r| j                  |d<   |S t        j                  j                  | «      rt!        | «      rt        t"        «      ‚t        d	| › �«      ‚c c}w c c}w )Nr  zaunsupported Arrow type for Function signature: structs must have non-empty, uniquely named fieldsr·  rÈ  r¹  r�  zYunsupported Arrow type for Function signature: fixed-size list items must be named 'item'r   z/unsupported Arrow type for Function signature: rN   rƒ  Úfixed_size_listTÚlength)r‡  rS  rˆ  r­  rN   rg   r8  r“   r0   rÌ  r‰  rŠ  rŒ  r’  r�  rÅ  r¿  rË  )r~  rÉ  rŽ  rg   r¸   rv   Únamesr&   s           r'   r}  r}  ‰  s  € ô /ò "‰ˆ	�4Ø˜	Ó!Ø˜D�>Ò!ð"ô 
‡x�x×Ñ˜)Ô$Ü�i“ˆØ)/Ö0 �—“Ð0ˆÐ0ÙœœS ›Z›¬C°«JÒ6Üð3óð ð
 ð $öàô # 5Ð<MÖNòñ
ð 	
ô 	�‰×Ñ˜Ô#Ü�8‰8×!Ñ! )Ô,Ü�8‰8×&Ñ& yÔ1ä�8‰8×&Ñ& yÔ1Ø×$Ñ$×)Ñ)¨VÒ3Üð1óð ð ×"Ñ" aÒ'ÜØEÀiÀ[ÐQóð ô —8‘8×#Ñ# IÔ.ñ ô —8‘8×)Ñ)¨)Ô4ñ "à&ô # 9×#8Ñ#8ÈDÔQðñ!
ˆô �8‰8×&Ñ& yÔ1Ø'×1Ñ1ˆE�(‰OØˆÜ	‡x�x‡��yÔ!Ô&<¸YÔ&GÜÔ5Ó6Ð6Ü
ÐEÀiÀ[ÐQÓ
RÐRùò[ 1ùòs   ÁH9ÂH>c                óX   — t        j                  t        j                  d| d¬«      «      S )Nr�  F©r¯   )rS  Úlist_rv   )r�  s    r'   Ú_list_ofrÔ  Á  s   € Ü�8‰8”B—H‘H˜V T°EÔ:Ó;Ð;r)   c                óø  — d}t        | «      }|t        t        j                  fv rWt	        | «      }t        d„ |D «       «      }t        |«      dk7  st        |«      t        |«      k(  rt        d| ›�«      ‚|d   } d}t        | «      }|t        u r…t	        | «      ^}}|D �cg c]  }t        |t        j                  «      sŒ|‘Œ! }}t        |«      dk7  rt        d«      ‚|t        u st        |«      t        u rd}	nt        |«      \  }
}	|d   |xs |	fS t        | t        j                  «      r| |fS | t        u rt        j                  «       |fS | t         u rt        j"                  «       |fS | t$        u rt        j&                  «       |fS | t(        u rt        j*                  «       |fS | t,        u rt        j.                  «       |fS | t0        u rt        j2                  «       |fS | t4        u rt        j6                  d«      |fS t        | «      t8        u rRt	        | «      }t        |«      dk7  rt        d	| ›�«      ‚t        |d   «      \  }}|rt        d
«      ‚t;        |«      |fS t        d| ›�«      ‚c c}w )NFc              3  ó<   K  — | ]  }|t        d «      usŒ|–— Œ y ­wr7   )r  )rI   Úarguments     r'   rK   z#_annotation_type.<locals>.<genexpr>Ê  s    è ø€ ò 
Ø!°(Ä$ÀtÃ*Ò2LŒHñ
ùs   ‚•r   zunsupported union annotation: r   Tz=Annotated Function types require exactly one PyArrow DataTypeÚuszunsupported list annotation: z1nullable Function list elements are not supportedz!unsupported Function annotation: )r   r   rˆ  Ú	UnionTyper   rO   r8  r0   r   r+   rS  ÚDataTyper7  Ú_annotation_typer"   Úbool_rT   rl  rS   rs  r‡   Ústringr–  rv  r   rx  r   Ú	timestamprN   rÔ  )Ú
annotationr¯   Úoriginr  Únon_noneÚbaserò   r&   Úarrow_typesÚbase_nullableÚ_Ú
value_typeÚvalue_nullables                r'   rÛ  rÛ  Å  sh  € Ø€HÜ˜
Ó#€FØ”%œŸ™Ð)Ñ)Ü˜ZÓ(ˆ	Üñ 
Ø%.ô
ó 
ˆô ˆx‹=˜AÒ¤ X£´#°i³.Ò!@ÜÐ<¸Z¸NÐKÓLÐLØ˜a‘[ˆ
Øˆä˜
Ó#€FØ”ÑÜ" :Ó.ˆˆˆxØ*2ÖU ´jÀÌÏÉÕ6T’uÐUˆÐUÜˆ{Ó˜qÒ ÜØOóð ð
 ”4‰<œ: dÓ+¬tÑ3Ø!‰Mä/°Ó5ÑˆAˆ}Ø˜1‰~˜xÒ8¨=Ð8Ð8ä�*œbŸk™kÔ*Ø˜8Ð#Ð#Ø”TÑÜ�x‰x‹z˜8Ð#Ð#Ø”SÑÜ�x‰x‹z˜8Ð#Ð#Ø”UÑÜ�z‰z‹|˜XÐ%Ð%Ø”SÑÜ�y‰y‹{˜HÐ$Ð$Ø”UÑÜ�y‰y‹{˜HÐ$Ð$Ø”TÑÜ�y‰y‹{˜HÐ$Ð$Ø”XÑÜ�|‰|˜DÓ! 8Ð+Ð+Ü�*Ó¤Ñ%Ü˜ZÓ(ˆ	Üˆy‹>˜QÒÜÐ;¸J¸>ÐJÓKÐKÜ%5°iÀ±lÓ%CÑ"ˆ
�NÙÜÐOÓPÐPÜ˜
Ó# XÐ-Ð-Ü
Ð7¸
°~ÐFÓ
GÐGùòK Vs   Â!I7ÃI7c                óª  — t        t        j                  | «      j                  j	                  «       «      }|D ]—  }|j
                  t        j                  j                  t        j                  j                  t        j                  j                  fv rt        d«      ‚|j                  t        j                  j                  usŒŽt        d«      ‚ |S )Nz9Function callables require named, non-variadic parametersz,Function callable defaults are not supported)rO   Úinspectrí   r	  rU   r›   Ú	ParameterÚPOSITIONAL_ONLYÚVAR_POSITIONALÚVAR_KEYWORDr0   rt   Úempty)rþ   r	  rú   s      r'   Ú_callable_parametersrï  ý  s±   € Ü”w×(Ñ(¨Ó2×=Ñ=×DÑDÓFÓG€JØò Lˆ	Ø�>‰>Ü×Ñ×-Ñ-Ü×Ñ×,Ñ,Ü×Ñ×)Ñ)ð
ñ 
ô
 ÐWÓXÐXØ×Ñ¤G×$5Ñ$5×$;Ñ$;Ò;ÜÐJÓKÐKðLð Ðr)   c                óB  — t        | t        j                  «      r$| j                  rt	        d«      ‚t        | «      }�n]t        | t        j                  «      rlt        | «      sat        j                  j                  | j                  «      r8t        | «       | j                  rt        d«      ‚t        | j                  «      }n×t        | t        j                  «      r+t        j                  j                  | «      rt        | «      }n’t        | t        j                  «      r| nt        j                  d| d¬«      }t        |t        j                  «      st	        d«      ‚t        |«       |j                  rt        d«      ‚t!        dt#        |«      d¬«      S |st        d	«      ‚|D ]  }t        |«       Œ |D �cg c]  }|j$                  ‘Œ }}t'        t)        |«      «      t'        |«      k7  rt        d
«      ‚t!        dt        d„ |D «       «      ¬«      S c c}w )Nz0Function output schema metadata is not supportedú$Function output must be non-nullableÚresultFrÒ  z:output_schema must be a PyArrow DataType, Field, or SchemaÚscalar)r›   r®   r¯   z<named-struct Function output must contain at least one fieldz*Function output field names must be uniquer4  c              3  ór   K  — | ]/  }t        |j                  t        |«      |j                  ¬ «      –— Œ1 y­w)©rg   r®   r¯   N)r²   rg   r³  r¯   rÀ  s     r'   rK   z#_function_output.<locals>.<genexpr>7  s:   è ø€ ò 
ð ô  Ø—Z‘ZÜ1°%Ó8ØŸ™÷ð ñ
ùs   ‚57)r›   r¸   )r+   rS  ÚSchemarò   r0   rO   r   r”  rˆ  r­  r  rš  r¯   r$   rÚ  rv   rµ   r³  rg   r8  r“   )rÅ   r¸   rv   rÐ  s       r'   Ú_function_outputr÷    s¶  € Ü�&œ"Ÿ)™)Ô$Ø�?Š?ÜÐNÓOÐOÜ�v“Šä�6œ2Ÿ8™8Ô$Ü! &Ô)Ü�H‰H×Ñ˜vŸ{™{Ô+ä# FÔ+Ø�?Š?ÜÐCÓDÐDÜ�v—{‘{Ó#‰Ü	�FœBŸK™KÔ	(¬R¯X©X×-?Ñ-?ÀÔ-GÜ�v“‰ô ˜&¤"§(¡(Ô+ñ ä—‘˜( F°UÔ;ð 	ô
 ˜%¤§¡Ô*ÜØLóð ô 	$ EÔ*Ø�>Š>ÜÐCÓDÐDÜØÜ-¨eÓ4Øô
ð 	
ñ ÜÐWÓXÐXØò +ˆÜ# EÕ*ð+à%+Ö,˜EˆU�Z‹ZÐ,€EÐ,Ü
Œ3ˆu‹:ƒœ#˜e›*Ò$ÜÐEÓFÐFÜØÜñ 
ð  ô
ó 
ô
ð 
ùò -s   Æ?H©Úmethodc          
     óT  ‡‡— t        | «      }|r|dd  }|d u |d u k7  rt        d«      ‚	 t        | d¬«      Šˆfd„Š|�µt        |t        j                  «      st	        d«      ‚|j                  rt	        d«      ‚|D ]  }t        |«       Œ t        d	„ |D «       «      }t        |j                  «      }||k7  rt        d
|›d|›�«      ‚t        ˆfd„|D «       «      }	t        |	t        |«      ¬«      S |D �
cg c]  }
|
j                  ‰vsŒ|
j                  ‘Œ }}
|sd‰vr|d‰v rg ndgz   }t	        d|›�«      ‚g }	|D ]ë  }
‰|
j                     }|}d}t        |«      t         t"        j$                  fv r;t'        |«      D �cg c]  }|t)        d «      usŒ|‘Œ }}t+        |«      dk(  r|d   d}}|t,        u r-|	j/                   ‰t1        |
j                  |¬«      «      «       Œ§t3        |«      \  }}|	j/                   ‰t        j4                  |
j                  ||¬«      «      «       Œí t3        ‰d   «      \  }}|rt        d«      ‚t        t        |	«      t        t        j4                  d|d¬«      «      ¬«      S # t        $ r}t	        d|› �«      |‚d }~ww xY wc c}
w c c}w )Nr   z8input_schema and output_schema must be provided togetherT©Úinclude_extrasz(failed to resolve Function annotations: c                óÈ  •—  ‰j                   | j                  «      }t        |«      t        t        j
                  fv r9t        |«      D �cg c]  }|t        d «      usŒ|‘Œ }}t        |«      dk(  r|d   }t        | «      }|t        u r%|t        k7  rt        d| j                  › d�«      ‚d}nŒ|t        u rw|t        k7  rkt        j                  j                  | j                  «      sBt        j                  j!                  | j                  «      st        d| j                  › d�«      ‚d}n|t        k(  rdnd }t#        | j                  || j$                  |¬	«      S c c}w )
Nr   r   zBlobReader input 'z' requires a Blob V2 fieldrZ  zbytes input 'z' requires binary or Blob V2r–  )rg   r®   r¯   r°   )rÙ   rg   r   r   rˆ  rÙ  r   r  r8  r³  r   r²  r0   r–  rS  Ú	is_binaryÚis_large_binaryr­   r¯   )rv   rß  r&   Úchoicesr®   Úaccessr   s         €r'   Úinput_parameterz)_infer_signature.<locals>.input_parameterT  sD  ø€ Ø$�[—_‘_ U§Z¡ZÓ0ˆ
Ü�jÓ!¤e¬U¯_©_Ð%=Ñ=ä#+¨JÓ#7öØ¸5ÌÈTË
Ò;R’ðˆGð ô �7‹|˜qÒ Ø$ Q™Z�
Ü+¨EÓ2ˆ
ØœÑ#ØÔ3Ò3ÜØ(¨¯©¨Ð4NÐOóð ð ‰FØœ5Ñ ØÔ3Ò3Ü—‘×"Ñ" 5§:¡:Ô.´"·(±(×2JÑ2JÈ5Ï:É:Ô2VäØ# E§J¡J <Ð/KÐLóð ð ‰Fà *Ô.DÒ D‘WÈ$ˆFÜ Ø—‘Ø!Ø—^‘^Øô	
ð 	
ùò-s   ÁEÁEz%input_schema must be a PyArrow Schemaz/Function input schema metadata is not supportedc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr7   rø   rù   s     r'   rK   z#_infer_signature.<locals>.<genexpr>{  s   è ø€ ÒD¨I˜Ÿ�ÑDùrû   zNinput_schema fields must exactly match callable parameters in order: expected z, got c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr7   rD   )rI   rv   r  s     €r'   rK   z#_infer_signature.<locals>.<genexpr>‚  s   øè ø€ ÒH°%‘ u×-ÑHùr-  )rÄ   rÅ   r‰   zmissing Function annotations: Fr   rÒ  rñ  rò  )rï  r$   r   Ú	Exceptionr0   r+   rS  rö  rò   rš  rO   rÐ  rÂ   r÷  rg   r   r   rˆ  rÙ  r   r  r8  r   r  Ú_blob_fieldrÛ  rv   )rþ   rP  rQ  rù  r	  Úerrorrv   Úexpectedrž  rÄ   rú   r
  rÐ  rß  râ  r¯   r&   r   r~  Úoutput_typeÚoutput_nullabler   r  s                        @@r'   Ú_infer_signaturer  B  sÐ  ù€ ô & hÓ/€JÙØ  �^ˆ
Ø˜Ð -°4Ð"7Ò8ÜÐSÓTÐTðWÜ$ X¸dÔCˆô
ð@ ÐÜ˜,¬¯	©	Ô2ÜÐCÓDÐDØ× Ò ÜÐMÓNÐNØ!ò 	/ˆEÜ'¨Õ.ð	/äÑD¸ÔDÓDˆÜ�|×)Ñ)Ó*ˆØ�XÒÜðØ$˜< v¨f¨Zð9óð ô ÓH¸<ÔHÓHˆÜ ¨Ô7GÈÓ7VÔWÐWð )3öØ$°i·n±nÈKÒ6Wˆ	�‹ð€Gð ñ �( +Ñ-Ø ¨[Ñ!8™2¸x¸jÑIˆÜÐ8¸¸	ÐBÓCÐCØ€FØò 
ˆ	Ø  §¡Ñ0ˆ
ØˆØˆÜ�dÓ¤¤u§¡Ð7Ñ7Ü*2°4«.ÖT ¸EÌÈdËÒ<S’uÐTˆGÐTÜ�7‹|˜qÒ Ø!(¨¡¨T�h�Ø”:ÑØ�M‰MÙ¤¨I¯N©NÀXÔ NÓOôð Ü.¨zÓ:Ñˆ	�8Ø�‰ÙœBŸH™H Y§^¡^°YÈÔRÓSõ	
ð
ô" $4°KÀÑ4IÓ#JÑ €K�ÙÜÐ?Ó@Ð@ÜÜ�V‹}Ü¤§¡¨°;ÈÔ OÓPôð øô_ ò WÜÐBÀ5À'ÐJÓKÐQVÐVûðWüòhùò Us/   ªJ  Ã7J ÄJ ÆJ%ÆJ%Ê 	JÊ	JÊJc                óþ   — t        | t        j                  «      r| j                  } t        | t        j                  «      xr | j
                  dk(  xs+ t        | t        j                  «      xr | j                  dk(  S )NÚudf)r+   ÚastÚCallÚfuncÚNameÚidÚ	AttributeÚattr)Únodes    r'   Ú_is_udf_decoratorr  ¦  s[   € Ü�$œŸ™Ô!Ø�y‰yˆÜ�tœSŸX™XÓ&Ò;¨4¯7©7°eÑ+;ò Ü�4œŸ™Ó'Ò>¨D¯I©I¸Ñ,>ðr)   c                ó†  — | �!t        | «      t        t        t        t        fv rt        | «      S t        | «      t        u r t        j                  | «      rt        | «      S t        | «      t        u r1dj                  d„ | D «       «      }t        | «      dk(  r|dz  }d|› d�S t        dt        | «      j                  › �«      ‚)Nr†  c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr7   )Ú_literal_sourcerH   s     r'   rK   z"_literal_source.<locals>.<genexpr>´  s   è ø€ ÒG¸œ_¨U×3ÑGùrL   r   r}   ú(rü   z?Function source references an unsupported global value of type )r  r"   rT   r‡   r–  ÚreprrS   r  r  rO   r  r8  r0   r:   )r&   Úchildrens     r'   r  r  ®  s­   € Ø€}œ˜U›¬¬c´3¼Ð'>Ñ>Ü�E‹{ÐÜˆEƒ{”eÑ¤§¡¨eÔ 4Ü�E‹{ÐÜˆEƒ{”eÑØ—9‘9ÑGÀÔGÓGˆÜˆu‹:˜Š?Ø˜‰OˆHØ�8�*˜AˆÐÜ
ØIÜ�‹;×ÑÐ
 ð	"óð r)   >   ÚevalÚexecÚvarsÚlocalsÚcompileÚglobalsÚ
__import__>   ÚgcÚsysrˆ  Úctypesré  ÚbuiltinsÚ	importlibc                óº  — t        |t        z  «      }t        j                  | «      D ]§  }t	        |t        j
                  «      r#|j                  d„ |j                  D «       «       Œ@t	        |t        j                  «      sŒ[|j                  sŒh|j                  j                  d«      d   t        v sŒ�|j                  |j                  «       Œ© t        |«      S )Nc              3  ó|   K  — | ]4  }|j                   j                  d «      d   t        v r|j                   –— Œ6 y­w)ú.r   N)rg   ÚsplitÚ_NAMESPACE_MODULES)rI   Úaliass     r'   rK   z)_namespace_acquisition.<locals>.<genexpr>Ï  s9   è ø€ ò àØ—:‘:×#Ñ# CÓ(¨Ñ+Ô/AÑAð —
•
ñùs   ‚:<r+  r   )r“   Ú_DYNAMIC_NAMESPACE_ACCESSr  Úwalkr+   ÚImportrC   rÐ  Ú
ImportFromÚmoduler,  r-  Úaddr   )Ú
definitionÚ
referencesÚfoundr  s       r'   Ú_namespace_acquisitionr8  É  s¦   € ô �
Ô6Ñ6Ó7€EÜ—‘˜Ó$ò 	'ˆÜ�dœCŸJ™JÔ'Ø�L‰Lñ à!ŸZ™Zôõ ô
 ˜œcŸn™nÕ-°$·+³+Ø�{‰{× Ñ  Ó% aÑ(Ô,>Ò>Ø—	‘	˜$Ÿ+™+Õ&ð	'ô �%‹=Ðr)   c                ó`  ‡— dˆfd„Št        «       }t        j                  | dd«      }|j                  «       D ]T  }|j                  «       sŒ|j	                  «       rŒ%|j                  «       rŒ6|j                  |j                  «       «       ŒV |j                  «       D ]  } ‰||«       Œ |S )ao  Names `module_source` loads from module scope, by Python's own scope
    analysis on the exact text that ships: loads inside any definition, plus
    what the definition statement itself evaluates at module scope (bases,
    decorators, defaults). Free variables belong to an enclosing scope inside
    the definition, and postponed annotations are not runtime loads.c                ó  •— | j                  «       D ]S  }|j                  «       sŒ|j                  «       s|j                  «       sŒ5|j	                  |j                  «       «       ŒU | j                  «       D ]  } ‰||«       Œ y r7   )Úget_symbolsÚ	is_globalÚis_referencedÚis_declared_globalr4  Úget_nameÚget_children)Útabler7  ÚsymbolrJ   Úvisits       €r'   rC  z!_module_references.<locals>.visitá  su   ø€ Ø×'Ñ'Ó)ò 	-ˆFØ×ÑÕ!Ø×$Ñ$Ô&¨&×*CÑ*CÕ*Eà—	‘	˜&Ÿ/™/Ó+Õ,ð		-ð
 ×'Ñ'Ó)ò 	 ˆEÙ�%˜Õñ	 r)   z<udf>r  )rA  zsymtable.SymbolTabler7  r—   r‰   r<  )	r“   Úsymtabler;  r=  Úis_assignedÚis_importedr4  r?  r@  )Úmodule_sourcer7  r3  rB  rA  rC  s        @r'   Ú_module_referencesrH  Ú  s�   ø€ õ ô “e€EÜ×Ñ˜}¨g°vÓ>€FØ×$Ñ$Ó&ò )ˆà× Ñ Õ"Ø×&Ñ&Õ(Ø×&Ñ&Õ(à�I‰I�f—o‘oÓ'Õ(ð)ð ×$Ñ$Ó&ò ˆÙˆe�UÕðà€Lr)   z"from __future__ import annotationszuser_function.pyÚpython_callableÚpython_bundle>   Ú
lance_blobÚlance_sourceÚuser_functionÚlance_callablez[A-Za-z_][A-Za-z0-9_]*z[A-Za-z0-9][A-Za-z0-9._-]*c           	     óf  — t        | «      j                  «       D �]k  }t        |t        t        f«      r|j
                  }t        |«      r t        t        j                  |«      dd«      nd}|€ŒVt        j                  |j                  «      }	 t        j                  dj                  |«      «      }|j"                  D ]Ã  }t        |t        j$                  «      sŒ|j&                  | j(                  k(  sŒ8|j*                  |j,                  cxk  r|j.                  k  sŒbn Œet1        |j*                  g|j2                  D �cg c]  }|j*                  ‘Œ c}z   «      }dj                  ||dz
  |j.                   «      c c S  �Œn t        j4                  | «      S # t         $ r Y �Œ�w xY wc c}w )zûSource of a module-level class.

    `inspect.getsource` finds a class through its module's file, which a
    notebook cell or a doctest does not have. A method's code object records
    where the class body really is, so that is consulted first.
    Ú__code__NÚ r   )r  rU   r+   ÚstaticmethodrŽ   Ú__func__Úcallablerq   ré  ÚunwrapÚ	linecacheÚgetlinesÚco_filenamer  Úparser  ÚSyntaxErrorÚbodyÚClassDefrg   r:   ÚlinenoÚco_firstlinenoÚ
end_linenoÚminÚdecorator_listÚ	getsource)rk   ÚmemberÚcodeÚlinesr3  r  Ú	decoratorÚstarts           r'   Ú_class_sourcerh    sm  € ô �s“)×"Ñ"Ó$ó CˆÜ�fœ|¬[Ð9Ô:Ø—_‘_ˆFô ˜Ôô ”G—N‘N 6Ó*¨J¸Ô=àð 	ð
 ˆ<ØÜ×"Ñ" 4×#3Ñ#3Ó4ˆð	Ü—Y‘Y˜rŸw™w u›~Ó.ˆFð —K‘Kò 
	CˆDä˜4¤§¡Õ.Ø—I‘I §¡Ó-Ø—K‘K 4×#6Ñ#6ÔI¸$¿/¹/ÖIäØ—[‘[�MØ9=×9LÑ9LÖM¨I�y×'Ó'ÒMñNó�ð —w‘w˜u U¨Q¡Y°·±ÐAÓBÔBò
	CðCô4 ×Ñ˜SÓ!Ð!øô ò 	Úð	üò Ns   Â$FÅF.Æ	F+Æ*F+c               ó$  — 	 t        j                  t        j                  | «      rt	        | «      nt        j
                  | «      «      }t        j                  |«      }t        j                  | «      }|j                  D �cg c]Z  }t        ||rt        j                  fnt        j                  t        j                   f«      r|j"                  | j$                  k(  r|‘Œ\ }}t'        |«      dk7  st        |d   t        j                   «      rt        d|rdz   «      ‚dz   «      ‚|d   }|r.t)        d„ |j*                  D «       «      rt        d«      ‚g |_        |S # t        t        f$ r}t        d| j                  ›�«      |‚d }~ww xY wc c}w )	Nz,@udf requires inspectable Python source for r   r   z%@udf source must contain exactly one Úclasszsynchronous functionc              3  ó4   K  — | ]  }t        |«       –— Œ y ­wr7   )r  )rI   rf  s     r'   rK   z#_definition_node.<locals>.<genexpr>H  s   è ø€ ò 
Ø1:Ô! )Ó,Ô,ñ
ùrû   z0@udf cannot package additional Python decorators)ÚtextwrapÚdedentré  Úisclassrh  rb  ÚOSErrorr0   r$   r<   r  rY  r[  r+   r\  ÚFunctionDefÚAsyncFunctionDefrg   r:   r8  rÄ  ra  )	ÚtargetÚentryrä   r  r3  Úis_classr  Údefinitionsr5  s	            r'   Ú_definition_noderv  )  s„  € ð	Ü—‘ä�‰˜vÔ&ô ˜&Ô!ä×"Ñ" 6Ó*ó
ˆô �Y‰Y�vÓ€FÜ�‰˜vÓ&€Hð —K‘KöàÜØÙ'ŒS�\‰\‰O¬c¯o©o¼s×?SÑ?SÐ-Tô
ð �I‰I˜Ÿ™Ò(ò 	ð€Kð ô ˆ;Ó˜1Ò¤
¨;°q©>¼3×;OÑ;OÔ PÜØ3Ù"ˆwñ@ó
ð 	
à(>ñ@ó
ð 	
ð ˜Q‘€JÙÜñ 
Ø>H×>WÑ>Wô
ô 
ô ÐOÓPÐPØ$&ˆ
Ô!ØÐøô7 ”YÐò ÜØ:¸6×;NÑ;NÐ:QÐRó
àð	ûðüòs   ‚AE ÂAFÅF
Å,FÆF
c                ó°  — t        j                  | «      rŒt        j                  j	                  | j
                  «      }|€t        d| j                  ›�«      ‚t        |«      }|j	                  dt        «      }t        |t        j                  «      rt        |«      n|}n| j                  }| j                  }|t        t        «      urt        d«      ‚|S )zAThe module namespace a function or class resolves its globals in.z"@udf cannot resolve the module of Ú__builtins__z7@udf cannot package a non-standard builtins environment)ré  rn  r%  rÌ   rÙ   r;   r$   r<   r  r'  r+   rˆ  Ú
ModuleTypeÚ__globals__rx  )rr  r3  Ú	namespacerÑ   s       r'   Ú_definition_namespacer|  P  sÀ   € ä‡��vÔÜ—‘—‘ ×!2Ñ!2Ó3ˆØˆ>ÜØ4°V×5HÑ5HÐ4KÐLóð ô ˜“Lˆ	Ø—m‘m N´HÓ=ˆô ˜+¤u×'7Ñ'7Ô8ô �Ôàñ 	ð ×&Ñ&ˆ	Ø×)Ñ)ˆð œ$œx›.Ñ(ÜÐRÓSÐSØÐr)   c                ó’   — || j                   k7  ry|j                  || «      }|| u ryt        |«      t        u xr |j                  | u S )zt`name` inside the definition means the definition itself unless the
    module has since bound it to something else.FT)r:   rÙ   r  ÚUdfDefinitionÚ	_function)rr  r{  rg   Úbounds       r'   Ú_is_self_referencer�  i  sL   € ð ˆv�‰ÒØØ�M‰M˜$ Ó'€EØ��Øô �‹;œ-Ð'ÒE¨E¯O©O¸vÐ,EÐEr)   c                óÂ   — t        j                  | «      st        j                  | «      syt        | dd«      dk7  ry| j                  }d|v sd|v rt        d|›d�«      ‚y	)
z�Functions and classes defined in `__main__` -- notebook cells and
    scripts -- have no module a worker can import, so their source travels.Fr;   NÚ__main__r„  r+  ú@udf cannot package zn: only module-level functions and classes travel with a Function, not lambdas, closures, or nested definitionsT)ré  Ú
isfunctionrn  rq   r<   r$   )r&   Úqualnames     r'   Ú_packaged_by_sourcer‡  v  so   € ô ×Ñ˜uÔ%¬¯©¸Ô)?ØÜˆu�l DÓ)¨ZÒ7ØØ×!Ñ!€HØ
ˆh�˜# ™/ÜØ" 8 ,ð /ð ó
ð 	
ð
 r)   c                ó´   — | j                  d«      d   } t        j                  | j                  «       «      }t	        |r|j                  d«      «      S | «      S )Nz::é   r   )Ú
rpartitionÚ_REQUIREMENT_NAMEÚmatchÚstripÚ_normalized_distributionÚgroup)ÚrequirementrŒ  s     r'   Ú_requirement_namer‘  ‡  sM   € Ø×(Ñ(¨Ó.¨qÑ1€KÜ×#Ñ# K×$5Ñ$5Ó$7Ó8€EÜ#±e E§K¡K°£NÓMÐMÀÓMÐMr)   c                óL   — t        j                  dd| «      j                  «       S )Nz[-_.]+rå  )ÚreÚsubÚlowerrø   s    r'   rŽ  rŽ  �  s   € Ü�6‰6�)˜S $Ó'×-Ñ-Ó/Ð/r)   c                 ó  ‡— dd l Šdd l} dd l}t        | j	                  «       «      }|j                  | j                  «       «       |j                  «       }dD ]  }||v sŒ|j                  ||   «       Œ t        ˆfd„|D «       «      S )Nr   )ÚpurelibÚplatlibÚstdlibÚ
platstdlibc              3  ón   •K  — | ],  }‰j                   j                  |«      ‰j                  z   –— Œ. y ­wr7   )rË   ÚrealpathÚsep)rI   ÚrootÚoss     €r'   rK   z#_installed_roots.<locals>.<genexpr>œ  s)   øè ø€ ÒC°T�—‘×!Ñ! $Ó'¨"¯&©&Õ0ÑCùs   ƒ25)	rŸ  ÚsiteÚ	sysconfigr“   Úgetsitepackagesr4  ÚgetusersitepackagesÚ	get_pathsrO   )r   r¡  ÚrootsÚpathsrQ   rŸ  s        @r'   Ú_installed_rootsr§  ‘  s{   ø€ ÛÛÛä�×$Ñ$Ó&Ó'€EØ	‡I�Iˆd×&Ñ&Ó(Ô)Ø×ÑÓ!€EØ=ò "ˆØ�%Š<Ø�I‰I�e˜C‘jÕ!ð"ô ÓC¸UÔCÓCÐCr)   c                ó    ‡— dd l Št        | dd «      }|r‰j                  j                  |«      fS t	        ˆfd„t        | dd«      D «       «      S )Nr   Ú__file__c              3  óT   •K  — | ]  }‰j                   j                  |«      –— Œ! y ­wr7   )rË   rœ  )rI   rË   rŸ  s     €r'   rK   z$_module_locations.<locals>.<genexpr>¥  s    øè ø€ ÒT¨D�—‘×!Ñ! $×'ÑTùs   ƒ%(Ú__path__rD   )rŸ  rq   rË   rœ  rO   )r3  ÚfilerŸ  s     @r'   Ú_module_locationsr­  Ÿ  sJ   ø€ Ûä�6˜: tÓ,€DÙØ—‘× Ñ  Ó&Ð(Ð(ÜÓT´G¸FÀJÐPRÓ4SÔTÓTÐTr)   c                  óH   — e Zd ZdZd
d„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
y	)Ú_SourcePackageraH  Builds the entry module of a Function artifact.

    The module holds the definition plus exactly the module-level names it
    references: modules as imports, importable classes and functions as
    imports, literals inline, and functions and classes defined in
    ``__main__`` by source, recursively, dependencies first.
    c                óh   — || _         || _        i | _        g | _        t	        «       | _        i | _        y r7   )Ú_code_modulesÚ_requirementsÚ_importsÚ_definitionsr“   Ú	_packagedÚ_names)r2   Úcode_modulesÚrequirementss      r'   Ú__init__z_SourcePackager.__init__±  s1   € Ø)ˆÔØ)ˆÔØ(*ˆŒØ')ˆÔÜ#&£5ˆŒØ&(ˆ�r)   c                óB  ‡ — ‰ j                  |d¬«      }t        g}‰ j                  r0|j                  dgˆ fd„t	        ‰ j                  «      D «       ¢«       ‰ j
                  D ]  }|j                  d|g«       Œ |j                  d|dg«       dj                  |«      S )NT©rs  rQ  c              3  ó<   •K  — | ]  }‰j                   |   –— Œ y ­wr7   )r³  )rI   rg   r2   s     €r'   rK   z*_SourcePackager.package.<locals>.<genexpr>½  s   øè ø€ ÒV¸ §¡¨dÕ 3ÑVùs   ƒú
)Ú_definitionÚ_SOURCE_HEADERr³  Úextendr   r´  r  )r2   rr  rs  Úpartsr5  s   `    r'   Úpackagez_SourcePackager.package¹  s‘   ø€ Ø× Ñ  ¨tÐ Ó4ˆÜÐ ˆØ�=Š=Ø�L‰L˜"ÐWÓVÄÀtÇ}Á}Ó@UÔVÐWÔXØ×+Ñ+ò 	+ˆJØ�L‰L˜"˜jÐ)Õ*ð	+à�‰�b˜% �_Ô%Ø�y‰y˜ÓÐr)   c               óê  — t        ||¬«      }t        j                  |«      s*t        j                  |«      j                  rt        d«      ‚t        j                  |«      }t        t        › d|› d�«      }t        ||«      }|rt        d|›�«      ‚t        |«      }| j                  j                  t        |«      «       | j                  |j                   dt        |«      f«       g }t#        |«      D ]j  }	|	|j                   k(  rt%        |||	«      st        d|	›d�«      ‚Œ/|	|v r| j'                  |	||	   «       ŒIt)        t*        |	«      rŒZ|j-                  |	«       Œl |rt        d	|›�«      ‚|S )
Nr»  z9@udf cannot package functions that capture closure valuesz

r½  ú.@udf cannot package dynamic namespace access: r5  r„  z_: the module binds that name to another value, which the artifact's own definition would shadowz.@udf source contains unresolved global names: )rv  ré  rn  ÚgetclosurevarsÚ	nonlocalsr$   r  ÚunparserH  r¿  r8  r|  rµ  r4  r  Ú_claimr:   r   r�  Ú_bindÚhasattrr'  r  )
r2   rr  rs  r5  rä   r6  Údynamicr{  Ú
unresolvedrg   s
             r'   r¾  z_SourcePackager._definitionÃ  sq  € Ü% f°EÔ:ˆ
Ü�‰˜vÔ&¬7×+AÑ+AÀ&Ó+I×+SÒ+SÜØKóð ô —‘˜ZÓ(ˆÜ'¬>Ð*:¸$¸v¸hÀbÐ(IÓJˆ
Ü(¨°ZÓ@ˆÙÜØ@ÀÀÐLóð ô *¨&Ó1ˆ	Ø�‰×Ñœ2˜f›:Ô&Ø�‰�F—O‘O l´B°v³JÐ%?Ô@Øˆ
Ü˜:Ó&ò 	(ˆDØ�v—‘Ò&Ü)¨&°)¸TÔBÜ$Ø.¨t¨hð 7'ð 'óð ð
 Ø�yÑ Ø—
‘
˜4 ¨4¡Õ1ÜœX tÕ,Ø×!Ñ! $Õ'ð	(ñ ÜØ@ÀÀÐOóð ð ˆr)   c                ód   — | j                   j                  ||«      }||k7  rt        d|›d�«      ‚y )Nr„  z9: packaged definitions bind that name to different values)r¶  rB   r$   )r2   rg   ÚmeaningÚclaimeds       r'   rÈ  z_SourcePackager._claimç  sC   € Ø—+‘+×(Ñ(¨¨wÓ7ˆØ�gÒÜØ& t hð /+ð +óð ð r)   c                ó–  — t        |«      r‹|j                  |k7  rt        d|j                  ›d|›�«      ‚t	        |«      | j
                  vr,| j                  j                  | j                  |d¬«      «       | j                  |dt	        |«      f«       y | j                  ||«      }| j                  ||«       || j                  |<   y )Nz@udf packages z: by source, so it must be referenced by its own name, not Fr»  r5  )r‡  r:   r$   r<   r  rµ  r´  r  r¾  rÈ  Ú_global_sourcer³  )r2   rg   r&   Úlines       r'   rÉ  z_SourcePackager._bindï  s¿   € Ü˜uÔ%Ø�~‰~ Ò%Ü Ø$ U×%7Ñ%7Ð$:ð ;7Ø7;°hð@óð ô �%‹y §¡Ñ.Ø×!Ñ!×(Ñ(¨×)9Ñ)9¸%ÀuÐ)9Ó)MÔNØ�K‰K˜˜|¬R°«YÐ7Ô8ØØ×"Ñ" 4¨Ó/ˆØ�‰�D˜$ÔØ"ˆ�‰�dÒr)   c                ó  — |t         u rd|› �S t        |t        j                  «      r¨|j                  j                  d«      d   t        v rt        d|j                  ›�«      ‚	 t        j                  |j                  «      }||urt        d|›d|j                  ›�«      ‚| j                  |j                  «       d|j                  › d	|› �S t        |d
d«      }t        |dd«      }t        |t        «      r]t        |t        «      rM|dk7  rHd|vrDd|vr@	 t        t        j                  |«      |«      }||u r| j                  |«       d|› d|› d	|› �S |› dt!        |«      › �S # t        $ r d}Y Œðw xY w# t        t        f$ r d}Y ŒTw xY w)z¢One module-level line that rebinds `name` to `value` in the artifact:
        an import for modules and importable classes/functions, a literal
        otherwise.z%from lance_blob import BlobReader as r+  r   rÄ  Nz"Function source references module z that does not import as zimport z as r;   r<   rƒ  r„  zfrom z import z = )r   r+   rˆ  ry  r:   r,  r-  r$   r(  Úimport_moduleÚImportErrorr0   Ú_require_importablerq   r‡   ÚAttributeErrorr  )r2   rg   r&   ÚimportedÚmodule_namer†  s         r'   rÑ  z_SourcePackager._global_sourceþ  s¶  € ð ”JÑØ:¸4¸&ÐAÐAÜ�eœU×-Ñ-Ô.Ø�~‰~×#Ñ# CÓ(¨Ñ+Ô/AÑAÜ ØDÀUÇ^Á^ÐDVÐWóð ð Ü$×2Ñ2°5·>±>ÓB�ð ˜uÑ$ÜØ8¸¸ð A!Ø!&§¡Ð 2ð4óð ð ×$Ñ$ U§^¡^Ô4Ø˜UŸ^™^Ð,¨D°°Ð7Ð7Ü˜e \°4Ó8ˆÜ˜5 .°$Ó7ˆä�{¤CÔ(Ü˜8¤SÔ)Ø˜zÒ)Ø˜8Ñ#Ø˜8Ñ#ð Ü"¤9×#:Ñ#:¸;Ó#GÈÓR�ð ˜5Ñ Ø×(Ñ(¨Ô5Ø˜{˜m¨8°H°:¸TÀ$ÀÐHÐHØ��sœ?¨5Ó1Ð2Ð3Ð3øô3 ò  Ø’ð ûô(  ¤Ð0ò  Ø’ð ús$   Á%E' ÄE8 Å'E5Å4E5Å8FÆFc           	     ó®  ‡— |j                  d«      d   }|| j                  v s;|t        j                  v s)|t        j                  v st        |«      | j                  v ryt        j                  j                  |«      }|€dn
t        |«      }t        «       Š|rt        ˆfd„|D «       «      ryt        j                  d|›d|d   › d|› d	�t        «       y)
a³  Warn about an import the Function's environment likely cannot
        satisfy: a module that lives in a local source tree, is not shipped
        with ``code=``, and names no declared package.

        A warning rather than an error: a distribution name need not match
        the module it installs, so a declared package can still provide the
        module, and callers may rewrite the packaged source before
        registering it.r+  r   NrD   c              3  ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr7   )Ú
startswith)rI   rë   r¥  s     €r'   rK   z6_SourcePackager._require_importable.<locals>.<genexpr>:  s   øè ø€ ÒU¸x × 3Ñ 3°E× :ÑUùs   ƒz@udf source imports z from zZ, a local module the Function's environment may not be able to import; ship it with code=[z6] or declare the package that provides it in pip/conda)Ú	partitionr±  r%  Ústdlib_module_namesÚbuiltin_module_namesrŽ  r²  rÌ   rÙ   r­  r§  rÄ  ÚwarningsÚwarnÚUserWarning)r2   rÙ  Útopr3  Ú	locationsr¥  s        @r'   rÖ  z#_SourcePackager._require_importable&  sÏ   ø€ ð ×#Ñ# CÓ(¨Ñ+ˆà�4×%Ñ%Ñ%Ø”c×-Ñ-Ñ-Ø”c×.Ñ.Ñ.Ü'¨Ó,°×0BÑ0BÑBàÜ—‘—‘ Ó%ˆØ ˜.‘BÔ.?ÀÓ.Gˆ	Ü Ó"ˆÙœCÓUÈ9ÔUÔUØÜ�‰Ø" ; /°¸	À!¹°~ð Fà ˜Eð "ðô õ	
r)   N)r·  úfrozenset[str]r¸  rå  )rr  r	   r‰   r‡   )rr  r	   rs  r"   r‰   r‡   )rg   r‡   rÎ  r	   r‰   r<  )rg   r‡   r&   r	   r‰   r<  )rg   r‡   r&   r	   r‰   r‡   )rÙ  r‡   r‰   r<  )r:   r;   r<   r˜   r¹  rÂ  r¾  rÈ  rÉ  rÑ  rÖ  rD   r)   r'   r¯  r¯  ¨  s,   „ ñó)ó ó"óHó#ó&4ôP
r)   r¯  c                ó¶  — ddl }ddlm} i }t        «       }| D �]1  }t	        |t
        j                  «      s!t        dt        |«      j                  › �«      ‚|j                  }d|v r#t        d|j                  d«      d   ›d|›�«      ‚|t        v s,|dk(  s'|t        j                  v st        j!                  |«      st        d	|›�«      ‚||v rt        d
|›d�«      ‚|j#                  |«       t%        t'        |dd«      «      }|rüt)        |«      dk7  st'        |dd«      st        d|›d�«      ‚ ||d   «      }g }	|j+                  |«      D ]v  \  }
}}t-        d„ |D «       «      |dd |D ]V  }|j.                  j1                  |«      \  }}|dk(  sŒ't        j!                  |«      sŒ=|	j3                   ||
«      |z  «       ŒX Œx |	D ]4  }|j5                  |«      j7                  «       }t9        |«      ||› d|› �<   Œ6 �Œìt'        |dd«      }|r|j;                  d«      st        d|›d�«      ‚t9         ||«      «      ||› d�<   �Œ4 |t=        |«      fS )zxThe Python source files of the modules and packages in ``code=``,
    keyed by their path on the Function's import path.r   N)ÚPathz.code= takes imported modules or packages, got r+  z0code= takes top-level modules or packages; pass z instead of rƒ  zcode= cannot ship module zcode= lists module z more than oncer«  rD   r   r©  z$code= cannot ship namespace package z; give it an __init__.pyc              3  óT   K  — | ]   }t         j                  |«      r	|d k7  r|–— Œ" y­w)Ú__pycache__N)Ú_SOURCE_PATH_COMPONENTÚ	fullmatchrH   s     r'   rK   z_code_files.<locals>.<genexpr>n  s.   è ø€ ò +àÜ-×7Ñ7¸Ô>Ø Ò.ô ñ+ùs   ‚&(z.pyú/z"code= ships Python source; module z	 has none)rŸ  Úpathlibrç  r“   r+   rˆ  ry  r0   r  r:   r$   rÝ  Ú_RESERVED_SOURCE_MODULESr%  rÞ  rê  rë  r4  rN   rq   r8  r0  r   rË   Úsplitextr  Úrelative_toÚas_posixÚ_source_textÚendswithÚ	frozenset)rÌ   rŸ  rç  ÚfilesrÐ  r3  rg   r¦  rž  ÚsourcesÚ	directoryÚsubdirectoriesÚ	filenamesÚfilenameÚstemÚsuffixrË   Úrelativer¬  s                      r'   Ú_code_filesrþ  E  sš  € ó Ýà€EÜ“e€EØó 2;ˆÜ˜&¤%×"2Ñ"2Ô3ÜØ@ÄÀfÃ×AVÑAVÐ@WÐXóð ð �‰ˆØ�$‰;ÜØBØ—>‘> #Ó& qÑ)Ð,¨L¸¸ðBóð ð
 Ô,Ñ,Ø�zÒ!Ø”s×.Ñ.Ñ.Ü)×3Ñ3°DÔ9äÐ8¸¸ÐAÓBÐBØ�5‰=ÜÐ2°4°(¸/ÐJÓKÐKØ�	‰	�$ŒÜ”W˜V Z°Ó4Ó5ˆÙÜ�5‹z˜QŠ¤g¨f°jÀ$Ô&GÜ Ø:¸4¸(ð C"ð "óð ñ ˜˜a™“>ˆDØˆGØ8:¿¹À»ò CÑ4�	˜>¨9ô %+ñ +à!/ô+ó %�™qÐ!ð !*ò C�HØ#%§7¡7×#3Ñ#3°HÓ#=‘L�D˜&Ø “Ô+A×+KÑ+KÈDÕ+QØŸ™¡t¨I£¸Ñ'AÕBñCðCð  ò A�Ø×+Ñ+¨DÓ1×:Ñ:Ó<�Ü.:¸4Ó.@�˜˜˜a ˜zÐ*Ò+òAô ˜6 :¨tÓ4ˆDÙ˜tŸ}™}¨UÔ3Ü Ð#EÀdÀXÈYÐ!WÓXÐXÜ".©t°D«zÓ":ˆE�T�F˜#�,Óðe2;ðf ”)˜EÓ"Ð"Ð"r)   c                ój   — 	 | j                  d¬«      S # t        $ r}t        d| › d�«      |‚d }~ww xY w)Núutf-8)r¢   zcode= ships UTF-8 source; z is not UTF-8)Ú	read_textÚUnicodeDecodeErrorr$   )rË   r  s     r'   rò  rò  ƒ  sC   € ðVØ�~‰~ wˆ~Ó/Ð/øÜò VÜÐ5°d°V¸=ÐIÓJÐPUÐUûðVús   ‚ ”	2�-­2c                óB  — | t        j                  «       t        j                  «       t        j                  «       t        j                  «       t        j
                  «       t        j                  «       t        j                  «       t        j                  «       t        j                  «       t        j                  «       t        j                  «       t        j                  «       t        j                  «       fv ryt         j                  j                  | «      s>t         j                  j!                  | «      st         j                  j#                  | «      rt%        | j&                  «      S t         j                  j)                  | «      rt+        d„ | D «       «      S y)z9Types with one unambiguous JSON and SQL literal spelling.Tc              3  óF   K  — | ]  }t        |j                  «      –— Œ y ­wr7   )Ú_initialization_typer  rÀ  s     r'   rK   z'_initialization_type.<locals>.<genexpr>£  s   è ø€ ÒK¸Ô'¨¯
©
×3ÑKùs   ‚!F)rS  rÜ  ri  rj  rk  rl  rm  rn  ro  rp  rr  rs  rÝ  Úlarge_stringrˆ  r‰  rŠ  rŒ  r  ræ  r­  r  )r~  s    r'   r  r  Š  s÷   € àÜ
�‰‹
Ü
�‰‹	Ü
�‰‹
Ü
�‰‹
Ü
�‰‹
Ü
�‰‹
Ü
�	‰	‹Ü
�	‰	‹Ü
�	‰	‹Ü
�
‰
‹Ü
�
‰
‹Ü
�	‰	‹Ü
�‰Óðñ ð ä
�‰×Ñ˜Ô#Ü�8‰8×!Ñ! )Ô,Ü�8‰8×&Ñ& yÔ1ä# I×$8Ñ$8Ó9Ð9Ü	‡x�x×Ñ˜)Ô$ÜÑKÀÔKÓKÐKØr)   c                ó  — | j                   t        j                   u ryt        t        j                  | j                   «      j
                  j                  «       «      dd }|D ]Z  }|j                  t        j                  j                  t        j                  j                  fvsŒDt        d|j                  ›�«      ‚ 	 t        | j                   d¬«      }|D �cg c]  }|j                  |vsŒ|j                  ‘Œ }}|rt        d|›�«      ‚g }|D ]¼  }t        ||j                     «      \  }}t!        |«      st        d	|j                  ›d
|› d�«      ‚|j"                  t        j                  j$                  urd}|j'                  t)        |j                  t+        t-        j.                  |j                  ||¬«      «      |¬«      «       Œ¾ t        |«      S # t        $ r}t        d|› �«      |‚d}~ww xY wc c}w )zCThe initialization fields a class Function's ``__init__`` declares.rD   r   NzCFunction initialization parameters must be named and non-variadic: Trû  z7failed to resolve Function initialization annotations: z-missing Function initialization annotations: z"Function initialization parameter z
 has type zX; initialization takes booleans, integers, floats, strings, and lists or structs of themrÒ  rõ  )r¹  re   rO   ré  rí   r	  rU   r›   rê  ÚPOSITIONAL_OR_KEYWORDÚKEYWORD_ONLYr0   rg   r   r  rÛ  r  rt   rî  r  r­   r³  rS  rv   )	rk   r	  rú   r   r  r
  r¸   r~  r¯   s	            r'   Ú_initialization_signaturer
  §  sô  € à
‡|�|”v—‘Ñ&ØÜ”w×(Ñ(¨¯©Ó6×AÑA×HÑHÓJÓKÈAÈBÐO€JØò ˆ	Ø�>‰>Ü×Ñ×3Ñ3Ü×Ñ×*Ñ*ð"
ò 
ô ð!Ø!*§¡Ð 2ð4óð ððÜ$ S§\¡\À$ÔGˆð )3öØ$°i·n±nÈKÒ6Wˆ	�‹ð€Gð ñ ÜÐGÈÀ{ÐSÓTÐTØ€FØò 
ˆ	Ü.¨{¸9¿>¹>Ñ/JÓKÑˆ	�8Ü# IÔ.ÜØ4°Y·^±^Ð4FÀjØ�+ð 8ð8óð ð ×Ñ¤G×$5Ñ$5×$;Ñ$;Ñ;ØˆHØ�‰ÜØ—^‘^Ü1Ü—H‘H˜YŸ^™^¨YÀÔJóð "ôõ	
ð
ô* �‹=Ðøô? ò ÜØEÀeÀWÐMó
àð	ûðüòs$   ÃG ÃG>Ã0G>Ç	G;Ç'G6Ç6G;c                ór   — | j                   D ](  }|t        usŒ|t        |«      v sŒt        |«      |   c S  y r7   )Ú__mro__re   r  )rk   rg   Úklasss      r'   Ú_class_memberr  Ù  s<   € Ø—‘ò %ˆØœÒ 4¬4°«;Ò#6Ü˜“;˜tÑ$Ò$ð%ð r)   c                ó:  — t        | d«      }t        j                  |«      rt        j                  |«      rt	        d«      ‚t        | d«      }|�Kt        j                  |«      r+t        t        j                  |«      j                  «      dk7  rt	        d«      ‚|S )Nr  z:a class Function must define a synchronous __call__ methodÚcloser   z=a class Function's close must be a method taking no arguments)r  ré  r…  Úiscoroutinefunctionr0   r8  rí   r	  )rk   Úcallr  s      r'   Ú_class_callr  à  s„   € Ü˜˜jÓ)€DÜ×Ñ˜dÔ#¤w×'BÑ'BÀ4Ô'HÜÐTÓUÐUÜ˜#˜wÓ'€EØÐÜ×Ñ˜uÔ%¬¬W×->Ñ->¸uÓ-E×-PÑ-PÓ)QÐUVÒ)VäÐWÓXÐXØ€Kr)   c                  óv   — e Zd ZdZdddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
d„Zedd„«       Z	 	 	 	 dd„Zd„ Zy	)r~  am  A Python callable prepared for remote Function registration.

    Instances are created with :func:`udf`. Calling an instance executes the
    original Python function, or constructs the original class, which keeps
    local unit testing ordinary. Remote execution adapts the callable to the
    internal Arrow batch ABI described by the registration artifact.
    FrD   )rÔ   ÚcondaÚconda_channelsrd  c       
        ób  — t        j                  |«      }|s5t        j                  |«      rt        j                  |«      rt	        d«      ‚|xs |j
                  }t        j                  |«      st        d|›�«      ‚|r|	rt        d«      ‚|
r|	st        d«      ‚t        t        t        |	r|	n|«      «      «      }t        d„ |D «       «      rt        d«      ‚|	rt        d|t        |
«      ¬«      }nt        d	|¬
«      }t        |«      }t        d„ |j                  «       D «       «      rt	        d«      ‚|r¸d|j                   v sd|j                   v rt        d«      ‚t#        t%        |«      ||d¬«      }t'        |«      }t        |D �ch c]  }|j(                  ’Œ c}|j*                  D �ch c]  }|j(                  ’Œ c}z  «      }|rt        d|›d�«      ‚|j-                  d|i¬«      }nt#        |||«      }t/        |«      \  }}t1        |t3        d„ |D «       «      «      j5                  |«      }|r;t6        }t9        j:                  di |¥t<        |i¥iddd¬«      j?                  d«      }nt@        }|j?                  d«      }dtC        jD                  |«      jG                  «       › �}tI        |«      }tK        |�dnd|xs7 tL        jN                  jP                  › dtL        jN                  jR                  › �|||¬«      }|| _*        tW        |tY        |||j
                  t[        d t]        j^                  |«      ja                  d!«      ¬"«      tc        d#d$¬%«      ¬&«      ||¬'«      | _2        tg        jh                  | ||rd(¬)«       y tf        jj                  ¬)«       y c c}w c c}w )*Nz6@udf requires a synchronous Python function or a classzinvalid Function name: z0a Function environment is pip or conda, not bothz&conda_channels requires conda packagesc              3  óL   K  — | ]  }| xs ||j                  «       k7  –— Œ y ­wr7   )r�  ©rI   rÂ  s     r'   rK   z)UdfDefinition.__init__.<locals>.<genexpr>  s%   è ø€ ÒQ¸W�7ˆ{Ò8˜g¨¯©«Ñ8Ó8ÑQùs   ‚"$z2package requirements must be non-empty and trimmedr  )r›   rÉ   rÊ   Úpip)r›   rÉ   c              3  ój   K  — | ]+  \  }}t        |t        «       xs t        |t        «       –— Œ- y ­wr7   r  )rI   rQ   r&   s      r'   rK   z)UdfDefinition.__init__.<locals>.<genexpr>  s8   è ø€ ò 
á��Uô ˜3¤Ó$Ð$ÒB¬J°u¼cÓ,BÐ(BÓBñ
ùs   ‚13z,Function env keys and values must be stringsr„  r+  z`@udf classes must be defined at module level; nested classes would capture their enclosing scopeTrø  z:Function initialization parameters and inputs share names z,; a binding passes both as keyword argumentsrÆ   rx   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr7   )r‘  r  s     r'   rK   z)UdfDefinition.__init__.<locals>.<genexpr>7  s   è ø€ Ò#WÀ7Ô$5°g×$>Ñ#WùrL   rõ  Fr|   r{  r   zsha256:rØ   r×   )r›   rÐ   rÑ   rÓ   rÔ   rV  Úascii)r¢   r£   Úscalar_to_arrow_batchr   )r›   r§   )r›   rœ   r�   rª   r«   )rg   r  rí   r  rD   )Úupdated)6ré  rn  r…  r  r0   r:   Ú_FUNCTION_NAMErë  r$   rO   r   r“   rÄ  rÈ   r7  rM   r<   r  r  r
  rg   rÄ   rz   rþ  r¯  rô  rÂ  Ú_PYTHON_BUNDLE_ARTIFACTrƒ   r„   Ú_SOURCE_ENTRY_FILEÚencodeÚ_PYTHON_CALLABLE_ARTIFACTÚhashlibÚsha256Ú	hexdigestr,   rÏ   r%  Úversion_infoÚmajorÚminorr  r  r©   r¡   rV  Ú	b64encoder—  r¥   Ú_requestÚ	functoolsÚupdate_wrapperÚWRAPPER_UPDATES)r2   rþ   rg   rP  rQ  r  rÓ   rÐ   rÔ   r  r  rd  rt  Úfunction_namerÉ   Úenvironment_specrÑ   rí   rÆ   rv   rú   ÚsharedÚ
code_filesr·  Úentry_sourcer›   rä   rœ   Ú
gpu_markerr  s                                 r'   r¹  zUdfDefinition.__init__õ  s�  € ô —?‘? 8Ó,ˆÙÜ×"Ñ" 8Ô,´×0KÑ0KÈHÔ0UäÐTÓUÐUØÒ1 × 1Ñ 1ˆÜ×'Ñ'¨Ô6ÜÐ6°}Ð6GÐHÓIÐIÙ‘5ÜÐOÓPÐPÙ¡%ÜÐEÓFÐFÜœ¤©U¡E¸Ó <Ó=Ó>ˆÜÑQÈÔQÔQÜÐQÓRÐRÙÜ4Ø x¼%ÀÓ:Oô Ñô  5¸%È(ÔSÐÜ˜3“iˆÜñ 
à)×/Ñ/Ó1ô
ô 
ô ÐJÓKÐKÙØ�h×+Ñ+Ñ+¨s°h×6KÑ6KÑ/KÜ ð:óð ô )Ü˜HÓ% |°]È4ôˆIô 7°xÓ@ˆNÜØ)7Ö8 �—“Ò8Ø3<×3CÑ3CÖD i�9—>“>ÒDñEóˆFñ Ü ØPØ�jÐ LðNóð ð "Ÿ™Ð0@À.Ð/Q˜ÓR‰Iä(¨°<ÀÓOˆIÜ#.¨tÓ#4Ñ ˆ
�LÜ&Øœ)Ñ#WÈhÔ#WÓWó
ç
‰'�(Ó
ð 	ñ Ü*ˆDÜ—Z‘ZØÐJ˜ZÐJÔ);¸\ÑJÐKØ"ØØ%ô	÷
 ‰f�W‹oñ ô -ˆDØ!×(Ñ(¨Ó1ˆFØœ7Ÿ>™>¨&Ó1×;Ñ;Ó=Ð>Ð?ˆÜ*¨3Ó/ˆ
Ü#Ø *Ð 6‘¸HØ)ò DÜ×"Ñ"×(Ñ(Ð)¨¬3×+;Ñ+;×+AÑ+AÐ*BÐCØ(ØØô
ˆð "ˆŒÜ3ØÜ,ØØØ#×,Ñ,Ü/Ø%Ü×)Ñ)¨&Ó1×8Ñ8¸ÓAôô *Ø0Øôôð  Øô!
ˆŒô( 	× Ñ Ø�(©( Bö	
Ü8A×8QÑ8Qö	
ùòs 9ùÚDs   ÆN'Æ1N,
c                ó   — | j                   S )a  The immutable request sent by ``create_function_async``.

        Carries no secret bindings. Binding is a registration-time decision,
        so a Function bound to Secrets is registered through :meth:`bind_secrets`,
        which is what ``create_function`` calls.
        )r,  r…   s    r'   Úregistration_requestz"UdfDefinition.registration_requestg  s   € ð �}‰}Ðr)   c                óì  — |€dn
t        |«      }|D �cg c]  }t        |t        «      rŒ|‘Œ }}|r;t        |D �ch c]  }t	        |«      j
                  ’Œ c}«      }t        d|›d�«      ‚|D �cg c]  }|j                  ‘Œ }}t        |D �ch c]  }|j                  |«      dkD  sŒ|’Œ c}«      }|rt        d|›�«      ‚| j                  j                  j                  xs i }	t        t        |	«      t        |«      z  «      }
|
rt        d|
›�«      ‚|s| j                  S t        t        d„ |D «       d„ ¬	«      «      }| j                  j                  d
|i¬«      S c c}w c c}w c c}w c c}w )a   The registration request for this definition bound to ``secrets``.

        Binding does not change the Function's source: each
        [EnvVarSecret][lancedb.secrets.EnvVarSecret] names a Secret and the
        environment variable its value should arrive in, and the Function reads
        that variable the way it already did. Whether the named Secrets exist is
        the server's answer, not this one.
        rD   z2Function secrets must be EnvVarSecret values, not z.; a credential value is never sent to this APIr   z=a Function binds each environment variable once; duplicated: z3Function env and secret bindings must be disjoint: c              3  óœ   K  — | ]D  }t        d |j                  t        |j                  t	        |j
                  «      ¬«      ¬«      –— ŒF y­w)rÓ   )rg   r¼   )r›   r¿   rÀ   N)r¾   Úenv_variablerº   Úsecret_namerO   Úsecret_namespace_path)rI   Úbindings     r'   rK   z-UdfDefinition.bind_secrets.<locals>.<genexpr>œ  sO   è ø€ ò 
ð  ô "Ø"Ø!(×!5Ñ!5Ü#2Ø!(×!4Ñ!4Ü+0°×1NÑ1NÓ+Oô$÷ð ñ
ùs   ‚A
Ac                ó:   — | j                   | j                  xs dfS )NrQ  )r›   r¿   )r=  s    r'   ú<lambda>z,UdfDefinition.bind_secrets.<locals>.<lambda>§  s   €  W§\¡\°7×3CÑ3CÒ3IÀrÐ$J€ r)   )rQ   rï   rx   )rO   r+   r   r   r  r:   r0   r:  Úcountr$   r,  r  rÓ   r“   rz   )r2   Úsecretsr  r=  Ú
wrong_typeÚkindsÚ	variablesrg   Ú
duplicatesrÑ   ÚoverlapÚresolveds               r'   Úbind_secretszUdfDefinition.bind_secretsq  s“  € ð !˜‘2¬e°G«nˆà#+ö
Ø´:¸gÄ|Õ3TŠGð
ˆ
ð 
ñ ÜÀ*ÖM°wœD ›M×2Ó2ÒMÓNˆEÜØDÀUÀIð N=ð =óð ð :BÖB¨g�W×)Ó)ÐBˆ	ÐBÜ¨iÖU d¸9¿?¹?È4Ó;PÐSTÓ;TšTÒUÓVˆ
ÙÜØOØ�.ð"óð ð —m‘m×+Ñ+×/Ñ/Ò5°2ˆÜœ˜[Ó)¬C°	«NÑ:Ó;ˆÙÜØEÀgÀ[ÐQóð ñ Ø—=‘=Ð ô Üñ
ð $,ô
ñ Kôó
ˆð  �}‰}×"Ñ"Ð+<¸hÐ*GÐ"ÓHÐHùò[
ùò Nùò
 CùÚUs!   ”E"ªE"»E'Á1E,ÂE1Â)E1c                ó&   —  | j                   |i |¤ŽS r7   )r  r1   s      r'   r  zUdfDefinition.__call__¬  s   € Øˆt�~‰~˜tÐ. vÑ.Ð.r)   N)rþ   r	   rg   r¶   rP  úOptional[pa.Schema]rQ  ú,Optional[pa.DataType | pa.Field | pa.Schema]r  r»   rÓ   rñ   rÐ   r¶   rÔ   r"   r  r»   r  r»   rd  ztuple[types.ModuleType, ...])r‰   r  )rA  z Optional[Sequence[EnvVarSecret]]r‰   r  )	r:   r;   r<   r˜   r¹  rg  r7  rH  r  rD   r)   r'   r~  r~  ì  sÆ   „ ñð$ Ø!#Ø*,Ø-/ñp
àðp
ð ð	p
ð
 *ðp
ð Dðp
ð ðp
ð ðp
ð &ðp
ð ðp
ð ðp
ð (ðp
ð +óp
ðd òó ðð9IØ7ð9Ià	$ó9Ióv/r)   r~  c                 ó   — y r7   rD   )rþ   s    r'   r  r  °  s   € Ø8;r)   rD   ©
rg   rP  rQ  r  rÓ   rÐ   rÔ   r  r  rd  c       
         ó   — y r7   rD   )rþ   rg   rP  rQ  r  rÓ   rÐ   rÔ   r  r  rd  s              r'   r  r  ´  s   € ð 58r)   c       
        óL   ‡‡‡‡‡‡‡‡‡	‡
— dˆ
ˆˆ	ˆˆˆˆˆˆˆf
d„}| €|S  || «      S )a‰  Prepare a Python function or class for remote Function registration.

    Input and output signatures are inferred from supported annotations. For
    Arrow types annotations cannot express precisely, pass ``input_schema``
    and ``output_schema`` together. Scalar outputs must be non-nullable. Every
    named-struct field may be nullable; Enterprise preserves the struct's
    validity when the result is expanded into sibling columns.

    **Functions and classes.** A decorated function is called once per row,
    or once per batch when its parameters are annotated ``pyarrow.Array`` or
    it takes one ``pyarrow.RecordBatch``. A decorated class is the same
    callable with state: each remote instance calls ``__init__`` once, calls
    ``__call__`` for every row or batch of every input it processes, and calls
    ``close()``, if defined, once when it retires. Load models, open clients,
    and build rate limiters in ``__init__``; every batch of the instance then
    reuses them. An instance serves many batches of one binding, so state is
    shared across them, but not across instances or workers.

    **Initialization.** The annotated parameters of a class's ``__init__``
    are the Function's initialization fields. Their values belong to each
    binding, not to the Function: ``function(text=col("body"), model="small")``
    binds column ``body`` and initializes every instance with ``model="small"``,
    and another column can bind the same Function version with other values.
    Initialization fields take booleans, integers, floats, strings, and lists
    or structs of them (``Annotated[dict, pa.struct(...)]``). A parameter with
    a default may be omitted from a binding; a null value then takes the
    default. Use Secrets, not initialization, for credentials.

    **What travels with the Function.** The artifact is a snapshot of the
    decorated source plus exactly the module-level names it references:

    - modules, and classes and functions importable from an installed
      package, become imports; the package must be declared in ``pip`` or
      ``conda``;
    - literals (``None``, booleans, numbers, strings, bytes, tuples of them)
      are inlined;
    - functions and classes defined in ``__main__``, such as notebook cells,
      are packaged by source, together with what they reference;
    - modules and packages listed in ``code`` are shipped as Python source and
      imported normally, so helpers shared by several Functions live in one
      place.

    A reference to a module in a local source tree that is neither shipped
    with ``code`` nor named by a declared package draws a warning at
    registration, because the worker will most likely fail to import it.
    Closures, lambdas, nested definitions, mutable module-level
    objects, code that reaches the module namespace another way
    (``globals()``/``eval``, ``sys.modules``, ``builtins``), and a
    non-standard ``__builtins__`` are rejected where they can be seen and
    otherwise unsupported. Changing any packaged source, including a module in
    ``code``, produces a new Function version; the environment built from
    ``pip`` or ``conda`` is reused.

    Parameters
    ----------
    function : function or class, optional
        The synchronous callable, or the class whose instances are called.
    name : str, optional
        The remote Function name. Defaults to the callable name.
    input_schema : pyarrow.Schema, optional
        Explicit input fields in the exact order of the callable parameters.
        Must be provided together with ``output_schema``.
    output_schema : pyarrow.DataType, pyarrow.Field, or pyarrow.Schema, optional
        Explicit scalar or named-struct output. Scalar outputs must be
        non-nullable. Must be provided together with ``input_schema``.
    pip : sequence of str, optional
        Pip requirements for the remote environment.
    conda : sequence of str, optional
        Conda packages for the remote environment, instead of ``pip``.
    conda_channels : sequence of str, optional
        Conda channels in priority order; requires ``conda``.
    env : mapping of str to str, optional
        Environment variables included in the Function definition. Not for
        credentials -- these are ordinary configuration, stored with the
        Function and visible wherever it is. Prefer initialization for
        values that differ between bindings.
    python_version : str, optional
        Remote Python major/minor version. Defaults to the client version.
    gpu : bool, default False
        Whether every remote execution requires a GPU. The execution platform
        selects one compatible GPU for each worker. The requirement is part of
        the immutable Function version.
    code : sequence of module, optional
        Top-level modules or packages whose importable ``.py`` files ship
        with the Function and are importable by their own names.

    Returns
    -------
    UdfDefinition
        A callable definition accepted by
        :meth:`lancedb.db.DBConnection.create_function`,
        :meth:`lancedb.db.AsyncConnection.create_function_async` and
        :meth:`lancedb.db.DBConnection.create_function_async`.

    Examples
    --------
    >>> from lancedb import udf
    >>> @udf(pip=["numpy==2.2.0"])
    ... def score(value: float) -> float:
    ...     return value * 2
    >>> score(1.5)
    3.0
    >>> @udf(pip=["cupy-cuda12x"], gpu=True)
    ... def gpu_score(value: int) -> int:
    ...     return value * 2
    >>> gpu_score.registration_request.runtime.gpu
    True
    >>> @udf
    ... class scale:
    ...     def __init__(self, factor: float, offset: float = 0.0):
    ...         self.factor, self.offset = factor, offset
    ...     def __call__(self, value: float) -> float:
    ...         return value * self.factor + self.offset
    >>> scale(factor=2.0)(1.5)
    3.0
    >>> [field.name for field in scale.registration_request.signature.initialization]
    ['factor', 'offset']
    c                ó€   •
— t        | ‰‰‰t        ‰	«      ‰€i n‰‰
‰t        ‰«      t        ‰«      t        ‰«      ¬«      S )NrM  )r~  rO   )rr  rd  r  r  rÓ   rÔ   rP  rg   rQ  r  rÐ   s    €€€€€€€€€€r'   Údecoratezudf.<locals>.decorateJ  sH   ø€ ÜØØØ%Ø'Ü�c“
Ø�k‘ sØ)ØÜ˜“,Ü  Ó0Ü�t“ô
ð 	
r)   )rr  r	   r‰   r~  rD   )rþ   rg   rP  rQ  r  rÓ   rÐ   rÔ   r  r  rd  rQ  s    `````````` r'   r  r  Å  s'   ÿù€ ÷J
ö 
ð ÐØˆÙ�HÓÐr)   )rJ  r  r  rš   r¡   r©   rL  rµ   r­   r  r²   rÂ   rá   ré   r  r?  rD  rÈ   r¥   rÏ   r]  r~  r  )r&   r	   r‰   r"   )r&   r"   r‰   r·   )r&   r‡   r‰   r‡   )rg   r‡   r&   r	   r‰   r	   )r~  úpa.DataTyper‰   r‡   )r~  rR  r‰   r¶   )rv   úpa.Fieldr‰   r<  )rv   rS  r‰   r"   )rv   rS  r‰   r‡   )rv   rS  r‰   rR  )rv   rS  r‰   rŠ   )r~  rR  r‰   r"   )rv   rS  rÉ  r"   r‰   rŠ   )r~  rR  rÉ  r"   r‰   rŠ   )r�  rR  r‰   rR  )rß  r	   r‰   ztuple[pa.DataType, bool])rþ   úCallable[..., Any]r‰   ztuple[inspect.Parameter, ...])rÅ   z"pa.DataType | pa.Field | pa.Schemar‰   rµ   )
rþ   rT  rP  rJ  rQ  rK  rù  r"   r‰   rÂ   )r  zast.exprr‰   r"   )r&   r	   r‰   r‡   )r5  zast.FunctionDefr6  r—   r‰   z	list[str])rG  r‡   r‰   r—   )rk   r  r‰   r‡   )rr  r	   rs  r"   r‰   z$Union[ast.FunctionDef, ast.ClassDef])rr  r	   r‰   r‹   )rr  r	   r{  r‹   rg   r‡   r‰   r"   )r�  r‡   r‰   r‡   )rg   r‡   r‰   r‡   )r‰   r»   )r3  ztypes.ModuleTyper‰   r»   )rÌ   zSequence[Any]r‰   z%tuple[dict[str, str], frozenset[str]]rŒ   )rk   r  r‰   rÃ   )rk   r  rg   r‡   r‰   r	   )rk   r  r‰   rT  )rþ   rT  r‰   r~  r7   )rþ   r<  rg   r¶   rP  rJ  rQ  rK  r  útuple[str, ...] | list[str]rÓ   rÒ   rÐ   r¶   rÔ   r"   r  rU  r  rU  rd  úSequence[types.ModuleType]r‰   z-Callable[[Callable[..., Any]], UdfDefinition])rþ   zOptional[Callable[..., Any]]rg   r¶   rP  rJ  rQ  rK  r  rU  rÓ   rÒ   rÐ   r¶   rÔ   r"   r  rU  r  rU  rd  rV  )§r˜   Ú
__future__r   r  r'  rV  r-  r%  r(  ré  rD  rƒ   rV  r  r“  r%  rl  rˆ  rà  Úcollections.abcr   r   r   r   Útypingr   r	   r
   r   r   r   r   r   r   r   ÚpyarrowrS  Úpydanticr   r   r   r   r   r   r   Úschemar   r  r   r”  Ú_blob_readerr   rA  r   r@  r¦   r^  r(   r,   r7  r.   rG   rV   rZ   rX   r�   rš   r¡   r¥   r©   r­   r²   rµ   rº   r¾   rÂ   rÈ   rÏ   rá   ræ   r‡   rì   ré   r  r  r  r  r  r?  rD  rJ  rL  r]  r!  r   r²  r˜  r™  rË  rÜ  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rÝ  r  rv  rw  rx  ry  r‡  r�  r|  r‹  rš  r•  r³  rµ  r»  r¿  rÌ  r}  rÔ  rÛ  rï  r÷  r  r  r  rô  r/  r-  r8  rH  r¿  r"  r$  r!  rî  rê  r‹  rh  rv  r|  r�  r‡  r‘  rŽ  r§  r­  r¯  rþ  rò  r  r
  r  r  r~  r  Ú__all__rD   r)   r'   ú<module>r_     sì  ðñõ #ã 
Û Û Û Û Û Û Û Û Û Û Û 	Û 
Û Û Û ß -ß #÷÷ ÷ ó ÷÷ ñ õ (Ý 9Ý $Ý !á	�t ¨YÔ	7€Ù
˜  yÔ
1€Ù
˜  yÔ
1€óó#ô�$ô ò òò(ô'
�9ô '
ôT;�|ô ;ô�|ô ô˜lô ô˜ô ô˜lô ô=˜ô =ôÐ*ô ô1Ð%ô 1ô
)�lô 
)ô1�Lô 1ô
7˜ô 
7ô ˜Lô  ô2˜ô 2ôj�Lô óð ØÙ	�Ð/Ô0ÙÐ+Ó,ð.ñ€ôi
�lô i
óXô<4 ,ô 4ôÐ)ô ô(Ð'ô (ô$=6Ð*ô =6ô@�<ô ô�Lô ô˜ô ô0�lô 0ô*&˜,ô &ð0 �—‘Ð9Ó:€à"Ð Ø2Ð Ø)Ð ð)ð ð €R‡X�XƒZ�ÐØ€R‡W�WƒY�ÐØ€R‡X�XƒZ�ÐØ€R‡X�XƒZ�ÐØ€R‡X�XƒZ�ÐØ€R‡X�XƒZ�ÐØ€R‡Y�Yƒ[�(ÐØ€R‡Y�Yƒ[�(ÐØ€R‡Y�Yƒ[�(ÐØ€R‡Z�Zƒ\�9ÐØ€R‡Z�Zƒ\�9ÐØ€R‡Z�Zƒ\�9ÐØ€R‡Y�Yƒ[�&ÐØ€R‡_�_Ó˜Ð%Ø€R‡Y�Yƒ[�(ÐØ€R‡_�_Ó˜Ð'Ø€R‡Y�Yƒ[�(ÐØ€R‡Y�Yƒ[�(Ðð%Ð ó,Xóó"+ó
ó@/ód-óóó(ð, 38ñØðØ+/ðàóð0 :?ñ5SØð5SØ26ð5Sàó5Sóp<ó5Hópó4ðx ñaØ ðaà%ðað @ðað
 ðað óaóHóñ  &ÚJóÐ ñ ÚHóÐ ð
ØðØ-5ðàóó"ð< 6€Ø'Ð Ø-Ð Ø)Ð á$ÚEóÐ ð $˜Ÿ™Ð$=Ó>Ð Ø�B—J‘JÐ<Ó=Ð ó!"ðH$Øð$Øð$à)ó$óNó2
Fóó"Nó0óDóU÷Z
ñ Z
óz;#ó|Vóó:/ódó	÷A/ñ A/ðH 
Ú ;ó 
Ø ;ð 
àð8ð Ø(,ØBFØ')Ø'+Ø$(ØØ)+Ø24Ø')ñ8Øð8ð ð8ð &ð	8ð
 @ð8ð 
%ð8ð 
%ð8ð "ð8ð 
ð8ð 'ð8ð 0ð8ð %ð8ð 3ò8ó 
ð8ð" .2ðVð Ø(,ØBFØ')Ø'+Ø$(ØØ)+Ø24Ø')ñVØ*ðVð ðVð &ð	Vð
 @ðVð 
%ðVð 
%ðVð "ðVð 
ðVð 'ðVð 0ðVð %óVòr�r)   