Ë
    	êñi»¹  ã                  óæ  — U 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	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZmZmZmZmZmZ ddlmZ ddlmZmZ er"ddl m!Z!m"Z"m#Z# ddl m$Z% ddlm&Z& ddlm'Z' ddlm(Z(  G d„ de«      Z)ed   Z*de+d<   e,e)z  Z-de+d<   ej\                  dk\  Z/de+d<   e/xr ej\                  dk\  Z0de+d<   e0xr ej\                  dk\  Z1de+d<    ed«      Z2d e+d!<    G d"„ d#«      Z3 e4d$«      Z5d%e+d&<    e4d'«      Z6d%e+d(<    e4d)«      Z7d%e+d*<   d+d,d-d.d/d0d1d2d3œZ8d4e+d5<   d6d7d8d9œZ9d4e+d:<    e4e9«      d;hz  Z:d%e+d<<   i d=d>“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“dKdL“dMdN“dOdP“dQdR“dSdT“dUdV“dWdX“dYdZ“d[d\“d]d^“d_d`dadbdcddœ¥Z;d4e+de<   dfdghgg e3jx                  gg e6gg e7gdhœdfdghgg e3jx                  gg dihgg e5gdhœdfhgg e3jx                  gg djhgg dkhgdhœdfhgdghge3jx                  gg dlhgg dmhgdndoœdfhgdghgdphge3jx                  gdldqhgdlhgdmhgdndoœgZ=dre+ds<   e=D � �cg c]$  }  e>e3j~                  «      gg fD ]
  }i | ¥dt|i¥‘Œ Œ& c}} Z=dudvdwdxdydzd{d|œZ@d4e+d}<    ej‚                  d~«      ZBde+d<    ej‚                  d€«      ZCde+d�<    ej‚                  d‚«      ZDde+dƒ<   d�d„„ZEd�d…„ZF G d†„ d‡«      ZG G dˆ„ d‰«      ZH G dŠ„ d‹«      ZId‘dŒ„ZJ	 	 	 	 	 	 	 	 d’d�„ZKd‡dŽgZLyc c}} w )“zNUtilities related to user defined functions (such as those passed to `apply`).é    )ÚannotationsN)Úbisect_left)Údefaultdict)Úget_instructions)Ú	signature)ÚcountÚzip_longest)ÚPath)ÚTYPE_CHECKINGÚAnyÚClassVarÚFinalÚLiteralÚ
NamedTuple)ÚLRUCache)Ú
NO_DEFAULTÚ	re_escape)ÚCallableÚIteratorÚMutableMapping)ÚSet)ÚInstruction)Ú	TypeAlias)Ú	NoDefaultc                  óD   — e Zd ZU ded<   ded<   ded<   ded<   dZded	<   y)
Ú
StackValueÚstrÚoperatorÚintÚoperator_arityÚleft_operandÚright_operandNú
str | NoneÚfrom_module)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r$   © ó    úT/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/polars/_utils/udfs.pyr   r   &   s#   … ØƒMØÓØÓØÓØ"€K�Ô"r*   r   )ÚexprÚframeÚseriesr   Ú	MapTargetÚ
StackEntry)é   é   r   Ú
_MIN_PY311)r1   é   Ú
_MIN_PY312)r1   é   Ú
_MIN_PY314é    z@MutableMapping[tuple[Callable[[Any], Any], str], BytecodeParser]Ú_BYTECODE_PARSER_CACHE_c                  óœ  — e Zd ZU ddddddddd	d
dddœZded<    eerdhnddh«      Zer	esdddddœndddddœZ	ded<    ed«      Z
 eddh«      Ze
ez  ZdddœZded<   ddiZded <   d
dd!d"œZded#<    eh d$£ ee«      z   ee	«      z   ee«      z  e
z  «      Z ee«      ez   ee«      z  ez  ez  Z eej'                  «       «      Zy%)&ÚOpNamesú+ú&z//ú<<ú>>ú%Ú*ú|z**ú-ú/ú^)Ú
BINARY_ADDÚ
BINARY_ANDÚBINARY_FLOOR_DIVIDEÚBINARY_LSHIFTÚBINARY_RSHIFTÚBINARY_MODULOÚBINARY_MULTIPLYÚ	BINARY_ORÚBINARY_POWERÚBINARY_SUBTRACTÚBINARY_TRUE_DIVIDEÚ
BINARY_XORzClassVar[dict[str, str]]ÚBINARYÚCALLÚCALL_FUNCTIONÚCALL_METHOD)ÚPOP_JUMP_FORWARD_IF_FALSEÚPOP_JUMP_FORWARD_IF_TRUEÚJUMP_IF_FALSE_OR_POPÚJUMP_IF_TRUE_OR_POP)ÚPOP_JUMP_IF_FALSEÚPOP_JUMP_IF_TRUErX   rY   ÚCONTROL_FLOW)Ú
LOAD_CONSTÚ
LOAD_DEREFÚ	LOAD_FASTÚLOAD_GLOBALÚLOAD_METHODÚ	LOAD_ATTRr_   r]   )ÚLOAD_FAST_BORROWÚLOAD_SMALL_INTÚSIMPLIFY_SPECIALIZEDÚPOLARS_EXPRESSIONé   zClassVar[dict[str, int]]Ú	SYNTHETICú~)ÚUNARY_NEGATIVEÚUNARY_POSITIVEÚ	UNARY_NOTÚUNARY>   ÚIS_OPÚ	BINARY_OPÚ
COMPARE_OPÚCONTAINS_OPÚBINARY_SUBSCRN)r%   r&   r'   rR   r(   Ú	frozensetr3   rS   r5   r\   ÚLOAD_VALUESrb   ÚLOADre   rh   rm   ÚsetÚPARSEABLE_OPSÚMATCHABLE_OPSÚvaluesÚUNARY_VALUESr)   r*   r+   r;   r;   :   sl  … àØØ#ØØØØØØØØ!Øñ(€FÐ$ó ñ ¡�f‘X°/À=Ð1QÓR€Dñ ™jð *-Ø(+Ø$'Ø#&ò		
ð "%Ø #Ø$'Ø#&ñ	
ð Ð*ó ñ  ÐTÓU€KÙ˜=¨+Ð6Ó7€IØ˜Ñ"€Dà'Ø&ñ6ÐÐ2ó ð
 	˜Qð+€IÐ'ó ð ØØñ'€EÐ#ó ñ
 ÚLÙ
ˆe‹*ñ	á
ˆlÓ
ñ	ñ ˆi‹.ñ	ð ñ		ó€Mñ 	Ð Ó! MÑ1±C¸³KÑ?À)ÑKÈdÑRð ñ ˜UŸ\™\›^Ó,�Lr*   r;   )ÚacosÚacoshÚasinÚasinhÚatanÚatanhÚcbrtÚceilÚcosÚcoshÚdegreesÚexpÚfloorÚlogÚlog10Úlog1pÚpowÚradiansÚsinÚsinhÚsqrtÚtanÚtanhzFinal[frozenset[str]]Ú_MATH_FUNCTIONS)ÚnpÚnumpyÚ_NUMPY_MODULE_ALIASES)ÚarccosÚarccoshÚarcsinÚarcsinhÚarctanÚarctanhr�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   rŒ   Úsignr�   rŽ   r�   r�   r‘   Ú_NUMPY_FUNCTIONSz	dt.date()zdt.day()z	dt.hour()zdt.microsecond()zdt.minute()z
dt.month()zdt.second()z	dt.year())ÚdateÚdayÚhourÚmicrosecondÚminuteÚmonthÚsecondÚyearzFinal[dict[str, str]]Ú_PYTHON_ATTRS_MAPÚFloat64ÚInt64ÚString)Úfloatr   r   Ú_PYTHON_CASTS_MAPÚabsÚ_PYTHON_BUILTINSÚendswithústr.ends_withÚlowerzstr.to_lowercaseÚlstripzstr.strip_chars_startÚremoveprefixzstr.strip_prefixÚremovesuffixzstr.strip_suffixÚreplaceústr.replaceÚrstripzstr.strip_chars_endÚ
startswithústr.starts_withÚstripzstr.strip_charsÚtitlezstr.to_titlecaseÚupperzstr.to_uppercaseÚzfillz	str.zfillrž   zdt.daterŸ   zdt.dayr    zdt.hourÚ
isoweekdayz
dt.weekdayr¡   zdt.microsecondzdt.monthz	dt.secondzdt.strftimezdt.timezdt.year)r£   r¤   ÚstrftimeÚtimer¥   Ú_PYTHON_METHODS_MAPr_   r]   )Úargument_1_opnameÚargument_2_opnameÚmodule_opnameÚattribute_opnameÚmodule_nameÚattribute_nameÚfunction_nameÚmathÚjsonÚloadsÚdatetimeÚstrptimeF)rÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   Úcheck_load_globalrb   Údtz'list[dict[str, list[AbstractSet[str]]]]Ú_MODULE_FUNCTIONSÚargument_1_unary_opnamer–   r—   r˜   r™   rš   r›   ústr.json_decode)z	math.acosz
math.acoshz	math.asinz
math.asinhz	math.atanz
math.atanhz
json.loadsÚ_MODULE_FUNC_TO_EXPR_NAMEz,pl\.col\("([^"]*)"\) & pl\.col\("\1"\)\.(.+)Ú_RE_IMPLICIT_BOOLz^(s|srs\d?|series)\.Ú_RE_SERIES_NAMESz^bool\((.+)\)$Ú_RE_STRIP_BOOLc                 óZ  — t        t        «      j                  j                  } t        j                  «       }d}	 |rEt        j
                  |«      }|j                  t        | «      «      r|j                  }|dz  }nn|rŒE|€i }~|S i |j                  ¥|j                  ¥}	 ~|S # ~w xY w)z7Get all local and global variables from caller's frame.r   rg   )r
   Ú__file__ÚparentÚinspectÚcurrentframeÚgetfiler·   r   Úf_backÚf_localsÚ	f_globals)Úpkg_dirr-   ÚnÚfnameÚ	variabless        r+   Ú_get_all_caller_variablesrã   ,  s°   € ä”8‹n×#Ñ#×*Ñ*€Gô × Ñ Ó"€EØ	€AðÙÜ—O‘O EÓ*ˆEØ×Ñ¤ G£Ô-ØŸ™�Ø�Q‘‘àò ð ˆ=ØˆIð ØÐð >˜5Ÿ>™>Ð=¨U¯_©_Ð=‰Ið ØÐøñ ús   »AB' ÂB' Â	B' Â'B*c                ót  — d| › d�}|dk(  r|S |dk(  r—t         j                  |«      r|j                  dd«      d   S |j                  |d«      }d	D ]   }t	        j
                  d
|› d
�|«      rŒ|c S  t        «       }	 dt        |«      › �}t	        j
                  d
|› d
�|«      s|S Œ+d|›�}t        |«      ‚)z@The name of the object against which the 'map' is being invoked.úpl.col("ú")r,   r.   ú.rg   r   Ú )ÚsÚsrsr.   z\brê   zTODO: map_target = )	rÔ   ÚmatchÚsplitr´   ÚreÚsearchr   ÚnextÚNotImplementedError)ÚcolÚ
expressionÚ
map_targetÚcol_exprÚsearch_exprÚnamerà   Úmsgs           r+   Ú_get_target_namerø   I  sÝ   € à˜#˜˜bÐ!€HØ�VÒØˆØ	�xÒ	Ü×!Ñ! *Ô-Ø×#Ñ# C¨Ó+¨AÑ.Ð.ð !×(Ñ(¨°2Ó6ˆØ*ò 	ˆDÜ—9‘9  4 &¨˜^¨[Õ9Ø’ð	ô ‹GˆØØœ˜a›˜	�?ˆDÜ—9‘9  4 &¨˜^¨[Ô9Ø�ð ð
   
˜~Ð
.€CÜ
˜cÓ
"Ð"r*   c                  ó  — e Zd ZU dZdZded<   dZded<   dZded<   eZ	d	ed
<   dd„Z
dd„Zedd„«       Z	 	 	 	 	 	 dd„Zedd„«       Zdd„Zdd„Zed d„«       Zed!d„«       Zed"d„«       Zed!d„«       Zd#d„Zdddœ	 	 	 	 	 	 	 d$d„Zy)%ÚBytecodeParserzMIntrospect UDF bytecode and determine if we can rewrite as native expression.Nr#   Ú_map_target_namezbool | NoneÚ_can_attempt_rewriteúdict[str, Any] | NoneÚ_caller_variablesz"tuple[str, str] | NoDefault | NoneÚ_col_expressionc                óÒ   — 	 t        |«      }|| _        || _        | j                  |«      | _        t        || j                  |¬«      | _	        y# t        $ r t        g «      }Y ŒXw xY w)aI  
        Initialize BytecodeParser instance and prepare to introspect UDFs.

        Parameters
        ----------
        function : callable
            The function/lambda to disassemble and introspect.
        map_target : {'expr','series','frame'}
            The underlying target object type of the map operation.
        )ÚinstructionsÚcaller_variablesÚfunctionN)
r   Ú	TypeErrorÚiterÚ	_functionÚ_map_targetÚ_get_param_nameÚ_param_nameÚRewrittenInstructionsrþ   Ú_rewritten_instructions)Úselfr  ró   Úoriginal_instructionss       r+   Ú__init__zBytecodeParser.__init__j  so   € ð	-Ü$4°XÓ$>Ð!ð "ˆŒØ%ˆÔØ×/Ñ/°Ó9ˆÔÜ'<Ø.Ø!×3Ñ3Øô(
ˆÕ$øô ò 	-ô %)¨£HÒ!ð	-ús   ‚A ÁA&Á%A&c                óŠ   — t         j                  |«      r-t         j                  d|¬«      }t         j                  |«      rŒ-|S )zIDrop extraneous/implied bool (eg: `pl.col("d") & pl.col("d").dt.date()`).zpl.col("\1").\2)ÚreplÚstring)rÓ   rî   Úsub)r  r,   s     r+   Ú_omit_implicit_boolz"BytecodeParser._omit_implicit_bool…  s;   € ä×&Ñ& tÔ,Ü$×(Ñ(Ð.@ÈÐ(ÓNˆDô  ×&Ñ& tÕ,àˆr*   c                ó´   — 	 t        | «      }t        |j                  x}«      dk(  r"t	        t        |j                  «       «      «      S dS # t        $ r Y yw xY w)z&Return single function parameter name.Nrg   )r   Ú
ValueErrorÚlenÚ
parametersrï   r  Úkeys)r  Úsigr  s      r+   r  zBytecodeParser._get_param_name‹  sb   € ð	ä˜HÓ%ˆCô
  §¡Ð/�:Ó0°AÒ5ô ”�j—o‘oÓ'Ó(Ó)ð	
ð ð	
øô ò 	Ùð	ús   ‚A Á	AÁAc                ó  — |ràt        |D �ch c]  }|j                  ’Œ c}«      dkD  r‰t        |j                  «       «      }d}|D ]i  }|t	        ||j
                  «      dz
     }|t	        ||j                  «      dz
     }|dk(  r	||d   k(  rŒI|||fvsŒPd||   z   ||<   ||xx   dz  cc<   |}Œk |D ],  }t        j                  |j                     ||j
                  <   Œ. t        |j                  «       «      S c c}w )zBInject nesting boundaries into expression blocks (as parentheses).rg   éÿÿÿÿr   ú(ú))r  ÚopnameÚlistr  r   ÚoffsetÚargvalr;   r\   ÚsortedÚitems)r  Úexpression_blocksÚlogical_instructionsÚinstÚblock_offsetsÚprev_endÚstartÚends           r+   Ú_inject_nestingzBytecodeParser._inject_nesting™  s  € ñ  ô Ð,@ÖA D�D—K“KÒAÓBÀQÒFÜ+/Ð0A×0FÑ0FÓ0HÓ+I�Ø�Ø0ò +�DØ)¬+°mÀTÇ[Á[Ó*QÐTUÑ*UÑV�EØ'¬°MÀ4Ç;Á;Ó(OÐRSÑ(SÑT�CØ! QšJ¨3°-ÀÑ2CÓ+CØ#¨E°3¨<Ò7Ø7:Ð=NÈuÑ=UÑ7UÐ-¨eÑ4Ø-¨cÓ2°cÑ9Ó2Ø'*™Hð+ð -ò S�Ü18×1EÑ1EÀdÇkÁkÑ1RÐ! $§+¡+Ò.ðSô Ð'×-Ñ-Ó/Ó0Ð0ùò Bs   ŒC<c                ó   — | j                   S )z8The map target, eg: one of 'expr', 'frame', or 'series'.)r  ©r  s    r+   ró   zBytecodeParser.map_target³  ó   € ð ×ÑÐr*   c                ó
  — | j                   €l| j                  duxrW t        | j                  «      dk\  xr= t	        d„ | j                  D «       «      xr t        d„ | j                  D «       «      dk(  | _         | j                   S )aN  
        Determine if we may be able to offer a native polars expression instead.

        Note that `lambda x: x` is inefficient, but we ignore it because it is not
        guaranteed that using the equivalent bare constant value will return the
        same output. (Hopefully nobody is writing lambdas like that anyway...)
        Né   c              3  óT   K  — | ]   }|j                   t        j                  v –— Œ" y ­w©N)r  r;   rw   ©Ú.0r&  s     r+   ú	<genexpr>z5BytecodeParser.can_attempt_rewrite.<locals>.<genexpr>Å  s'   è ø€ ò àð —K‘K¤7×#8Ñ#8Ô8ñùs   ‚&(c              3  ó>   K  — | ]  }|j                   d k(  rd–— Œ y­w)ÚRETURN_VALUErg   N)r  r3  s     r+   r5  z5BytecodeParser.can_attempt_rewrite.<locals>.<genexpr>Ê  s$   è ø€ ò àØ—{‘{ nÒ4ô ñùs   ‚rg   )rü   r	  r  r  ÚallÚsumr  r-  s    r+   Úcan_attempt_rewritez"BytecodeParser.can_attempt_rewrite¸  sš   € ð ×$Ñ$Ð,à× Ñ ¨Ð,ò ä˜×4Ñ4Ó5¸Ñ:òô ñ à $× <Ñ <ôó òô ñ à $× :Ñ :ôó ð
 ñð Ô%ð  ×(Ñ(Ð(r*   c                óB   — t        j                   | j                  «       y)z%Print disassembled function bytecode.N)Údisr  r-  s    r+   r<  zBytecodeParser.disÓ  s   € ä�‰�—‘Õr*   c                ó   — | j                   S )zThe function being parsed.)r  r-  s    r+   r  zBytecodeParser.function×  s   € ð �~‰~Ðr*   c                ó@   — t        | j                  j                  «      S )zDThe original bytecode instructions from the function we are parsing.)r  r  Ú_original_instructionsr-  s    r+   r  z$BytecodeParser.original_instructionsÜ  s   € ô �D×0Ñ0×GÑGÓHÐHr*   c                ó   — | j                   S )z0The parameter name of the function being parsed.)r	  r-  s    r+   Ú
param_namezBytecodeParser.param_nameá  r.  r*   c                ó,   — t        | j                  «      S )zEThe rewritten bytecode instructions from the function we are parsing.)r  r  r-  s    r+   Úrewritten_instructionsz%BytecodeParser.rewritten_instructionsæ  s   € ô �D×0Ñ0Ó1Ð1r*   c                ó˜  — | j                   t        ur\| j                   �P| j                   \  }}||k7  r:t        j                  dt	        |«      › d�dt	        |«      › d�|«      }||f| _         |S d| _        | j                  €d| _         yt        t        «      }g }d}t        | j                  «      D ]c  \  }}|j                  t        j                  v r.| j                  |dz      j                  }|j                  |«       ŒP||   j                  |«       Œe 	 | j!                  |j#                  «       D �	�
ci c]a  \  }	}
|	t%        |
| j&                  | j(                  | j*                  ¬«      j-                  || j                  t/        t1        |«      «      ¬	«      “Œc c}
}	|«      }d
j5                  d„ |D «       «      }d|vrd| _         y| j7                  |«      }| j(                  dk(  r;| j
                  x}€t9        ||| j(                  «      }|j;                  d|› d�|«      }||f| _         |S c c}
}	w # t2        $ r
 d| _         Y yw xY w)zDTranslate postfix bytecode instructions to polars expression/string.Nz
pl\.col\("z"\)rå   ræ   r   rg   )r  r  ró   r  )rñ   rA  Údepthú c              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr2  r)   )r4  Ú_offsetr,   s      r+   r5  z/BytecodeParser.to_expression.<locals>.<genexpr>  s   è ø€ ÒL©¨°œtÑLùs   ‚úpl.col(r.   )rÿ   r   rí   r  r   rû   r	  r   r  Ú	enumerater  r  r;   r\   r   Úappendr+  r#  ÚInstructionTranslatorrþ   r  r  Úto_expressionr   Úboolrð   Újoinr  rø   r´   )r  rñ   Úcol_namer,   Úcontrol_flow_blocksr%  Újump_offsetÚidxr&  r   ÚopsÚexpression_stringsÚpolars_exprÚtarget_names                 r+   rM  zBytecodeParser.to_expressionë  so  € à×Ñ¤zÑ1°d×6JÑ6JÐ6VØ!×1Ñ1‰NˆH�dØ�hŠÜ—v‘vØ!¤)¨HÓ"5Ð!6°cÐ:Øœy¨›~Ð.¨bÐ1Øó�ð
 ),¨T {�Ô$ØˆKà $ˆÔØ×ÑÐ#Ø#'ˆDÔ Øô *¬$Ó/ÐØ!ÐØˆÜ" 4×#?Ñ#?Ó@ò 	>‰IˆC�Ø�{‰{œg×2Ñ2Ñ2Ø"×:Ñ:¸3À¹7ÑC×JÑJ�Ø$×+Ñ+¨DÕ1à# KÑ0×7Ñ7¸Õ=ð	>ð	Ø!%×!5Ñ!5ð (;×'@Ñ'@Ó'B÷ñ $˜ ð Ô1Ø%(Ø)-×)?Ñ)?Ø#'×#3Ñ#3Ø!%§¡ô	÷
 $‘mØØ#'×#3Ñ#3Ü!¤$Ð';Ó"<Ó=ð $ó ñ	óð %ó"Ðð( —h‘hÑLÐ9KÔLÓLˆð ˜KÑ'Ø#'ˆDÔ Øà×2Ñ2°;Ó?ˆKØ×Ñ 8Ò+Ø#'×#8Ñ#8Ð8�KÐAÜ"2°3¸ÀT×EUÑEUÓ"V�KØ)×1Ñ1°H¸S¸EÀÐ2DÀkÓR�à$'¨Ð#5ˆDÔ ØÐùóEøô #ò 	Ø#'ˆDÔ Ùð	ús%   ÄH6 Ä7A&H0
Æ	H6 È0H6 È6I	ÉI	©Úsuggestion_overrideÚudf_overridec          
     óæ  — ddl m}m} ddlm} |xs | j                  |«      }|�Ì| j                  x}€t        ||| j                  «      }|xs | j                  j                  xs d}	|	dk(  rd| j                  › d�}	d	|v rd
nd}
| j                  dk(  rdnd\  }} |«       rd|› d|	› d�d|› d|
› �fnd|› d|	› d�d|› d|
› �f\  }}t        j                  d|› d|› d|› d|› �| |«       ¬«       yy)zFGenerate warning that suggests an equivalent native polars expression.r   )Úfind_stacklevelÚ in_terminal_that_supports_colour)ÚPolarsInefficientMapWarningNz...z<lambda>zlambda z: ...z
pl.col("")zHNote: in list.eval context, pl.col("") should be written as pl.element()rè   r,   )ÚexpressionsÚExpr)r.   ÚSeriesz	  [31m- z.map_elements(z)[0m
z	  [32m+ z[0m
z  - z)
z  + ú
z6.map_elements is significantly slower than the native zc API.
Only use if you absolutely CANNOT implement your logic otherwise.
Replace this expression...
zwith this one instead:
)Ú
stacklevel)Úpolars._utils.variousr\  r]  Úpolars.exceptionsr^  rM  rû   rø   r  r  r%   r	  ÚwarningsÚwarn)r  rñ   rY  rZ  r\  r]  r^  Úsuggested_expressionrW  Ú	func_nameÚaddendumÚapitypeÚclsnameÚbeforeÚafters                  r+   rg  zBytecodeParser.warn/  ss  € ÷	
õ 	Bà2ÒM°d×6HÑ6HÈÓ6MÐàÐ+Ø#×4Ñ4Ð4�Ð=Ü.ØÐ-¨t×/?Ñ/?ó�ð %ÒH¨¯©×(?Ñ(?ÒHÀ5ˆIØ˜JÒ&Ø% d×&6Ñ&6Ð%7°uÐ=�	ð  Ð#7Ñ7ñ [àð ð ×#Ñ# vÒ-ñ (à)ñ ˆG�Wñ 4Ô5ð # ; -¨~¸i¸[È
ÐSØ"Ð#7Ð"8¸	À(ÀÐLñð ˜;˜- ~°i°[ÀÐDØÐ/Ð0°°8°*Ð=ðñ ˆF�Eô �M‰MØ�W�IÐSÐT[ÐS\ð ]/ð �(Ø*Ø�'ðð ,Ù*Ó,ö	ð= ,r*   )r  úCallable[[Any], Any]ró   r/   ÚreturnÚNone)r,   r   rp  r   )r  ro  rp  r#   )r$  zdict[int, str]r%  úlist[Instruction]rp  zlist[tuple[int, str]])rp  r/   )rp  rN  )rp  rq  )rp  ro  )rp  rr  )rp  r#   )rñ   r   rp  r#   )rñ   r   rY  r#   rZ  r#   rp  rq  )r%   r&   r'   Ú__doc__rû   r(   rü   rþ   r   rÿ   r  r  Ústaticmethodr  r+  Úpropertyró   r:  r<  r  r  rA  rC  rM  rg  r)   r*   r+   rú   rú   b  s  … ÙWà#'Ð�jÓ'Ø(,Ð˜+Ó,Ø/3ÐÐ,Ó3Ø:D€OÐ7ÓDó
ó6ð ò
ó ð
ð1à)ð1ð 0ð1ð 
ó	1ð4 ò ó ð ó)ó6 ð òó ðð òIó ðIð ò ó ð ð ò2ó ð2óBðP +/Ø#'ñ9àð9ð (ð	9ð
 !ð9ð 
ô9r*   rú   c                  ób   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 dd„Zd	d„Zed
d„«       Zdd„Z	 	 	 	 	 	 dd„Z	y)rL  z>Translates Instruction bytecode to a polars expression string.c                óN   — | j                  ||«      | _        || _        || _        y r2  )Ú_to_intermediate_stackÚ_stackrþ   r  )r  r  r  r  ró   s        r+   r  zInstructionTranslator.__init__n  s'   € ð ×1Ñ1°,À
ÓKˆŒØ!1ˆÔØ!ˆ�r*   c                ó>   — | j                  | j                  |||«      S )z7Convert intermediate stack to polars expression string.)Ú_exprry  )r  rñ   rA  rE  s       r+   rM  z#InstructionTranslator.to_expressiony  s   € à�z‰z˜$Ÿ+™+ s¨J¸Ó>Ð>r*   c                ód  — | j                   x}t        j                  v rt        j                  |   S | j                  r| j                  S |dk(  r| j                  rdS dS |dk(  r| j                  rdS dS |t        j
                  v rt        j
                  |   S |dk(  ryd	|› d
| ›�}t        |«      ‚)z@Convert bytecode instruction to suitable intermediate op string.rn   úis notÚisrq   únot inÚinrr   Úreplace_strictz$unexpected or unrecognised op name (z¯)

Please report a bug to https://github.com/pola-rs/polars/issues with the content of function you were passing to the `map` expression and the following instruction object:
)r  r;   r\   Úargreprr!  rm   ÚAssertionError)r&  r  r÷   s      r+   ÚopzInstructionTranslator.op}  sÅ   € ð —k‘kÐ!ˆF¤g×&:Ñ&:Ñ:Ü×'Ñ'¨Ñ/Ð/Ø�\Š\Ø—<‘<ÐØ�wÒØ#Ÿ{š{�8Ð4°Ð4Ø�}Ò$Ø#Ÿ{š{�8Ð4°Ð4Ø”w—}‘}Ñ$Ü—=‘= Ñ(Ð(Ø�Ò&Ø#ð 7°v°hð ?Eð FJÀHðNð ô ! Ó%Ð%r*   c                óª  — t        |t        «      �r6t        j                  d|j                  «      }| j                  |j                  |||dz   «      }|j                  dk(  ré|t        j                  vrÑ|j                  d«      r|j                  d«      rdnd}|› d|› |› �S |d   t        j                  v r3|dd	 j                  d«      r|j                  d«      rdnd}d
|› d|› |› �S |j                  t        v r|t        v rd}n3|j                  dk(  r"t        j!                  d|› �|«      t"        v rd}nd}|› |› d
|› d�S |› |› �S | j                  |j$                  |||dz   «      }	|dv r |j                  dk(  r|dk(  rdnd}
|› d|
› d�S |dv r"|dk(  rdnd}
d|v r|
› d
|› d|	› d�S |
› |› d|	› d�S |dk(  r]| j&                  st)        «       | _        t        | j&                  j!                  |d	«      t*        «      sd}t-        |«      ‚|	› d|› d
|› d�S |dk(  r	d
|› d|	› d�S |d k(  r	d
|› d!|	› d�S |› d|› d|	› �}|rd
|› d�S |S ||k(  rd"|› d#�S |S )$z?Take stack entry value and convert to polars expression string.z\1rg   rI  r  rè   ú()rç   r   Nr  z).znp.rÈ   úmath.)r~  r}  rq  r~  Únot_z.is_znull())r€  r  r€  ri   rF  z.is_in(z))r�  zrequire dict mappingr>   z * 2**z).cast(pl.Int64)r?   z / 2**rå   ræ   )Ú
isinstancer   rÕ   r  r   r{  r!   r    r;   rz   r·   r®   r$   r•   r�   rÒ   Úgetr’   r"   rþ   rã   Údictrð   )r  Úvaluerñ   rA  rE  r„  Úe1ÚcallÚpfxÚe2rˆ  r÷   r,   s                r+   r{  zInstructionTranslator._expr•  sì  € ä�eœZÕ(Ü×#Ñ# E¨5¯>©>Ó:ˆBØ—‘˜E×.Ñ.°°ZÀÈÁÓKˆBØ×#Ñ# qÒ(ØœW×1Ñ1Ñ1Ø—}‘} YÔ/Ø%'§[¡[°Ô%5™r¸4˜Ø"$  Q r d¨4¨&Ð1Ð1Ø˜!‘u¤× 4Ñ 4Ñ4¸¸A¸B¸×9JÑ9JÈ9Ô9UØ%'§[¡[°Ô%5™r¸4˜Ø!" 2 $ b¨¨¨T¨FÐ3Ð3ð
 ×)Ñ)Ô-BÑBØÔ"2Ñ2à#™à×)Ñ)¨VÒ3Ü5×9Ñ9¸EÀ"À¸,ÈÓKÜ*ñ+ð &™à ˜Ø!˜U 2 $ a¨ t¨1Ð-Ð-Ø˜˜b˜T�{Ð"à—Z‘Z × 3Ñ 3°S¸*ÀeÈaÁiÓP�ØÐ)Ñ)¨e×.@Ñ.@ÀFÒ.JØ!# t¢™2°�DØ ˜T  d V¨6Ð2Ð2ØÐ+Ñ+Ø!# t¢™2°�Dð  "™9ð  ˜&  "  W¨R¨D°Ð3ðð !%˜v b T¨°°°AÐ6ðð
 Ð+Ò+Ø×1Ò1Ü1JÓ1L˜Ô.Ü% d×&<Ñ&<×&@Ñ&@ÀÀTÓ&JÌDÔQØ4˜Ü1°#Ó6Ð6Ø ˜T  2 $ a¨ t¨1Ð-Ð-Ø˜4’Zð ˜r˜d &¨¨Ð,<Ð=Ð=Ø˜4’Zà˜r˜d &¨¨Ð,<Ð=Ð=à ˜T  2 $ a¨ tÐ,�DÙ*/˜Q˜t˜f A˜;Ð9°TÐ9à�jÒ Ø˜c˜U "Ð%Ð%àˆr*   c                óL  — |dv �rg }|D �]  }|j                  |j                  t        j                  v r|j                  nÇ|j                  t        j
                  v s,t        j                  j                  |j                  «      dk(  r8t        | j                  |«      d|j                  «       dt        |dd«      ¬«      nGt        | j                  |«      d|j                  d«      |j                  d«      t        |dd«      ¬«      «       �Œ |d	   S d
|›d�}t        |«      ‚)zITake postfix bytecode and convert to an intermediate natural-order stack.)r,   r.   rg   NÚ_from_module)r   r    r!   r"   r$   r0  éþÿÿÿr  r   zTODO: z map target not yet supported.)rK  r  r;   ru   r‚  rm   rh   rŠ  r   r„  ÚpopÚgetattrrð   )r  r  ró   Ústackr&  r÷   s         r+   rx  z,InstructionTranslator._to_intermediate_stackØ  s  € ð Ð+Ò+Ø&(ˆEØ$ó �Ø—‘à—{‘{¤g§l¡lÑ2ð —L’Lð !ŸK™K¬7¯=©=Ñ8Ü&×0Ñ0×4Ñ4°T·[±[ÓAÀQÒFô #Ø%)§W¡W¨T£]Ø+,Ø).¯©«Ø*.Ü(/°°nÀdÓ(Kõô (Ø%)§W¡W¨T£]Ø+,Ø).¯©°2«Ø*/¯)©)°B«-Ü(/°°nÀdÓ(Kôöðð2 ˜‘8ˆOð �z�nÐ$BÐCˆÜ! #Ó&Ð&r*   N)
r  rr  r  rý   r  ro  ró   r/   rp  rq  )rñ   r   rA  r   rE  r   rp  r   )r&  r   rp  r   )
rŒ  r0   rñ   r   rA  r   rE  r   rp  r   )r  rr  ró   r/   rp  r0   )
r%   r&   r'   rs  r  rM  rt  r„  r{  rx  r)   r*   r+   rL  rL  k  sw   „ ÙHð	"à'ð	"ð 0ð	"ð 'ð		"ð
 ð	"ð 
ó	"ó?ð ò&ó ð&ó.AðF#'Ø-ð#'Ø;Dð#'à	ô#'r*   rL  c                  ó  — e Zd ZdZ eg d¢«      Z	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Z	ddœ	 	 	 	 	 	 	 	 	 dd	„Z
dd
„Zdd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Ze	 	 	 	 dd„«       Zedd„«       Z	 	 	 	 	 	 	 	 dd„Zy)r
  a]  
    Standalone class that applies Instruction rewrite/filtering rules.

    This significantly simplifies subsequent parsing by injecting
    synthetic POLARS_EXPRESSION ops into the Instruction stream for
    easy identification/translation, and separates the parsing logic
    from the identification of expression translation opportunities.
    )	ÚCOPYÚCOPY_FREE_VARSÚ	NOT_TAKENÚPOP_TOPÚPRECALLÚ	PUSH_NULLÚRESUMEr7  ÚTO_BOOLc                óp  — || _         || _        t        |«      | _        g }| j	                  | j                  «      D ]b  }|j
                  | j                  vsŒ|j
                  t        j                  vr	g | _	         y | j                  |«      }|j                  |«       Œd | j                  |«      | _	        y r2  )r  rþ   r  r?  Ú_unpack_superinstructionsr  Ú_ignored_opsr;   rx   r  Ú_update_instructionrK  Ú_rewrite)r  r  r  r  Únormalised_instructionsr&  Úupgraded_insts          r+   r  zRewrittenInstructions.__init__  s§   € ð "ˆŒØ!1ˆÔÜ&*¨<Ó&8ˆÔ#à"$Ðà×2Ñ2°4×3NÑ3NÓOò 	>ˆDØ�{‰{ $×"3Ñ"3Ò3Ø—;‘;¤g×&;Ñ&;Ñ;Ø35�DÔ0ÙØ $× 8Ñ 8¸Ó >�Ø'×.Ñ.¨}Õ=ð	>ð (,§}¡}Ð5LÓ'MˆÕ$r*   c                ó,   — t        | j                  «      S r2  )r  r  r-  s    r+   Ú__len__zRewrittenInstructions.__len__,  s   € Ü�4×/Ñ/Ó0Ð0r*   c                ó,   — t        | j                  «      S r2  )r  r  r-  s    r+   Ú__iter__zRewrittenInstructions.__iter__/  s   € Ü�D×0Ñ0Ó1Ð1r*   c                ó    — | j                   |   S r2  )r  )r  Úitems     r+   Ú__getitem__z!RewrittenInstructions.__getitem__2  s   € Ø×+Ñ+¨DÑ1Ð1r*   F)Úis_attrc               ó  — t        |«      |xs g }}||z   }|r5| j                  ||dz    x}r!|d   j                  t        j                  v rg S | j                  || }t        |«      |k(  rt        d„ t        |||«      D «       «      r|S g S )aÙ  
        Check if a sequence of Instructions matches the specified ops/argvals.

        Parameters
        ----------
        idx
            The index of the first instruction to check.
        opnames
            The full opname sequence that defines a match.
        argvals
            Associated argvals that must also match (in same position as opnames).
        is_attr
            Indicate if the match represents pure attribute access (cannot be called).
        rg   r   c              3  ól   K  — | ],  \  }}}|j                   |v xr |d u xs |j                  |v –— Œ. y ­wr2  )r  r!  )r4  r&  Úmatch_opnamesÚmatch_argvals       r+   r5  z1RewrittenInstructions._matches.<locals>.<genexpr>U  sK   è ø€ ò 7
ñ 2��m \ð �K‰K˜=Ð(ò FØ Ð%ÒD¨¯©¸Ð)DóFñ7
ùs   ‚24)r  Ú_instructionsr  r;   rS   r8  r	   )	r  rS  ÚopnamesÚargvalsr®  Ún_required_opsÚ
idx_offsetÚtrailing_instr  s	            r+   Ú_matcheszRewrittenInstructions._matches5  s©   € ô, #& g£,°²¸2˜ˆØ˜>Ñ)ˆ
áØ"&×"4Ñ"4°ZÀ*ÈqÁ.Ð"QÐQ�ÐQØ˜aÑ ×'Ñ'¬7¯<©<Ñ7àˆIà×)Ñ)¨#¨jÐ9ˆÜˆ|Ó Ò.´3ñ 7
ô 6AØ˜g wó6ô7
ô 4
ð  ÐØˆ	r*   c                ó˜  ‡‡‡— || _         g ŠdŠ‰t        | j                   «      k  r£| j                   ‰   dc}Š|j                  t        j                  vsBt        ˆˆˆfd„| j                  | j                  | j                  | j                  fD «       «      s‰j                  |«       ‰‰xs dz  Š‰t        | j                   «      k  rŒ£‰S )a#  
        Apply rewrite rules, potentially injecting synthetic operations.

        Rules operate on the instruction stream and can examine/modify
        it as needed, pushing updates into "updated_instructions" and
        returning True/False to indicate if any changes were made.
        r   rg   c              3  ó4   •K  — | ]  } |‰‰«      xŠ–— Œ y ­wr2  r)   )r4  Úmap_rewriterS  Ú	incrementÚupdated_instructionss     €€€r+   r5  z1RewrittenInstructions._rewrite.<locals>.<genexpr>l  s)   øè ø€ ò 	:àñ *¨#Ð/CÓDÐD�ÓDñ	:ùs   ƒ)r³  r  r  r;   ru   ÚanyÚ_rewrite_functionsÚ_rewrite_methodsÚ_rewrite_builtinsÚ_rewrite_attrsrK  )r  r  r&  rS  r½  r¾  s      @@@r+   r¤  zRewrittenInstructions._rewrite_  sÈ   ú€ ð *ˆÔØ24ÐØˆØ”C˜×*Ñ*Ó+Ò+Ø"×0Ñ0°Ñ5°qˆOˆD�)Ø�{‰{¤'§,¡,Ñ.´cõ 	:ð ×+Ñ+Ø×)Ñ)Ø×*Ñ*Ø×'Ñ'ð$ô	:ô 	7ð %×+Ñ+¨DÔ1Ø�9’> Ñ!ˆCð ”C˜×*Ñ*Ó+Ó+ð $Ð#r*   c                óÞ   — | j                  |dhdhgdt        gd¬«      x}rB|d   }t        |j                     }|j                  d||¬«      }|j	                  |d	   |g«       t        |«      S )
zDReplace python attribute lookup with synthetic POLARS_EXPRESSION op.r_   rb   NT)r´  rµ  r®  rg   rf   ©r  r!  r‚  r   )r¹  r¦   r!  Ú_replaceÚextendr  )r  rS  r¾  Úmatching_instructionsr&  Ú	expr_nameÚpxs          r+   rÃ  z$RewrittenInstructions._rewrite_attrsz  s–   € à$(§M¡MØØ!�] [ MÐ2ØÔ,Ð-Øð	 %2ó %
ð 
Ð ð 
ð )¨Ñ+ˆDÜ)¨$¯+©+Ñ6ˆIØ—‘Ø*°9Àið ó ˆBð !×'Ñ'Ð)>¸qÑ)AÀ2Ð(FÔGäÐ(Ó)Ð)r*   c                óh  — | j                  |dhddht        j                  gt        g¬«      x}ry|dd \  }}|j                  x}t
        v rt
        |   }d|› d�}|j                  d	|||j                  ¬
«      }|j                  |j                  ¬«      }	|j                  |	|f«       t        |«      S )zEReplace builtin function calls with a synthetic POLARS_EXPRESSION op.r`   r_   r]   ©r´  rµ  Nr0  úcast(pl.r  rf   ©r  r!  r‚  r   ©r   )
r¹  r;   rS   r­   r!  r«   rÆ  r   rÇ  r  )
r  rS  r¾  rÈ  Úinst1Úinst2r!  ÚdtyperÊ  Úoperands
             r+   rÂ  z'RewrittenInstructions._rewrite_builtins‹  sÓ   € ð %)§M¡MØØ#�_ {°LÐ&AÄ7Ç<Á<ÐPÜ%Ð&ð %2ó %
ð 
Ð ð 
ð
 1°°!Ð4‰LˆE�5ØŸ,™,Ð&�Ô+<Ñ<Ü)¨&Ñ1�Ø# E 7¨!Ð,�à—‘Ø*ØØØ—|‘|ð	  ó ˆBð —n‘n¨E¯L©L�nÓ9ˆGØ ×'Ñ'¨°"¨Ô6äÐ(Ó)Ð)r*   c           	     ó4  ‡— dD �]‘  }t         D �]„  }|r|j                  dd«      s  y|r$ddhg|d   ¢|d   ¢|d	   ¢t        j                  ‘n-ddhg|d
   ¢|d   ¢|d   ¢|d   ¢|d	   ¢t        j                  ‘}|d   }| j	                  |||rg |d   ¢ng |d   ¢|d   ¢|d   ¢¬«      x}sŒ£t        |d   «      }||d|z    \  }	}
}|r�| j                  st        «       | _        |	j                  x}| j                  vrŒõ| j                  |   j                  Št        ˆfd„|D «       «      s�Œ$t        j                  ‰› d|› �|«      }n»|	j                  dk(  rd}n©|	j                  dk(  rQ||dz      j                  }d|› d�}| j                  |	j                  |d   j                  |«      sXt        |«      c c S |	j                  dk(  r.t        j                  d|
j                  › �|
j                  «      }n|
j                  }|r|
n|}|	j                  d|||j                  ¬«      }|rdn|	j                  xs d|_        |j                  |	j                  ¬«      }|j!                  |d   r||d|z      |fn||f«       t        |«      c c S  �Œ” y)z=Replace function calls with a synthetic POLARS_EXPRESSION op.)FTrÍ   Tr   r`   r^   rÁ   rÐ   rÂ   rÃ   rÄ   rÅ   rÇ   rÆ   rÌ  r1   c              3  ó&   •K  — | ]  }‰|v –— Œ
 y ­wr2  r)   )r4  ÚmrÅ   s     €r+   r5  z;RewrittenInstructions._rewrite_functions.<locals>.<genexpr>Ú  s   øè ø€ Ò&R¸a¨°qÔ(8Ñ&Rùs   ƒrç   rÉ   rÑ   rË   zstr.to_datetime(format="ræ   rÈ   r‡  rf   rÎ  NrÏ  )rÏ   rŠ  r;   rS   r¹  r  rþ   rã   r!  r&   r¿  rÒ   Ú_is_stdlib_datetimerÆ  r   r’  rÇ  )r  rS  r¾  Úcheck_globalsÚfunction_kindr´  Úmodule_aliasesrÈ  Úattribute_countrÐ  rÑ  Úinst3rÉ  ÚfmtÚ	swap_instrÊ  rÓ  rÅ   s                    @r+   rÀ  z(RewrittenInstructions._rewrite_functions¥  sz  ø€ ð +ó ]	6ˆMÜ!2ó \6�Ù ¨×):Ñ):Ð;NÐPTÔ)UÚñ %ð '¨Ð5ðà&Ð':Ñ;ðð 'Ð'@ÑAðð 'Ð':Ñ;ð	ô
  Ÿ™ñð '¨Ð5ðà& Ñ7ðð 'Ð'9Ñ:ðð 'Ð':Ñ;ð	ð
 'Ð'@ÑAðð 'Ð':Ñ;ðô  Ÿ™ðð ð& "/¨}Ñ!=�Ø,0¯M©MØØ#ñ %ðØ& Ñ7ñðØ& }Ñ5ðà&Ð'7Ñ8ðð ' Ñ7ðð -:ó -ð Ð(ñ ô '*¨-Ð8HÑ*IÓ&J�OØ*?Ø'¨!¨oÑ*=ð+Ñ'�E˜5 %ñ %Ø#×5Ò5Ü5NÓ5P˜DÔ2Ø).¯©Ð5˜I¸d×>TÑ>TÑTØ$à*.×*@Ñ*@ÀÑ*K×*VÑ*V˜KÜ#&Ó&RÀ>Ô&RÔ#RÙ (Ü(A×(EÑ(EØ#. -¨q°°Ð <¸ió)™Ið Ÿ™¨Ò/Ø$5™	ØŸ™¨Ò3Ø3°OÀaÑ4GÑH×OÑO˜Ø&>¸s¸eÀ2Ð$F˜	Ø#×7Ñ7Ø!ŸL™LØ1°!Ñ4×;Ñ;Ø+ô ô $'Ð'<Ó#=Ô=ØŸ™¨Ò/Ü$=×$AÑ$AØ# E§L¡L >Ð2°E·L±Ló%™	ð %*§L¡L˜	ñ *7¡¸E�IØŸ™Ø2Ø(Ø )Ø(×/Ñ/ð	 (ó �Bñ /<¡dÀ%Ç,Á,ÒBVÐRV�B”OØ'×0Ñ0¸¿¹Ð0ÓE�GØ(×/Ñ/ð )Ð)BÒCð	 $Ø1°!°oÑ2EÑFØñð & r˜]ôô Ð4Ó5Ô5òy\6ð]	6ð~ r*   c           	     óÀ  — t         rt        j                  ndh}| j                  ||dht        j                  gt
        g¬«      xs) | j                  ||t        j                  gt
        g¬«      x}rÂ|d   }t
        |j                     }|d   j                  dk(  rh|d   j                  }t        |t        «      r@|dv r<d|v rdnd	\  }}	d
j                  d„ |D «       «      }
d|v rdnd}d|› |› d|
› d|	› |› d�	}n	|d|›d�z  }|j                  d||¬«      }|j                  |«       t        |«      S | j                  ||dhdhdht        j                  gt
        g¬«      xs- | j                  ||dhdht        j                  gt
        g¬«      x}r¼|d   }t
        |j                     }|dt        |«      dz
   D �cg c]  }|j                  ‘Œ }}|dk(  r3t        |«      dk(  r|\  }}}|d|›d|›d|› d�z  }n.|\  }}d|›d|›d�}n|ddj                  d„ |D «       «      › d�z  }|j                  d||¬«      }|j                  |«       t        |«      S c c}w )z@Replace python method calls with synthetic POLARS_EXPRESSION op.ra   r]   rÌ  r   rg   )r¸   r¯   Ústarts)rE   rè   )rè   ú$rB   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr2  )r   ©r4  Úvs     r+   r5  z9RewrittenInstructions._rewrite_methods.<locals>.<genexpr>(  s   è ø€ Ò!D°1¤)¨A§,Ñ!Dùó   ‚ú'ú"zstr.contains(rr  r  rf   rÅ  rµ   r1   ú,z,n=z,literal=True)zstr.replace_all(c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr2  )Úreprrã  s     r+   r5  z9RewrittenInstructions._rewrite_methods.<locals>.<genexpr>U  s   è ø€ Ò$C°¤T¨!§WÑ$Cùrå  )r5   r;   rb   r¹  rS   rÀ   r!  r  r‰  ÚtuplerO  rÆ  rK  r  )r  rS  r¾  ra   rÈ  r&  r,   Úparam_valuerà  ÚendsÚrxÚqrÊ  ÚiÚparam_valuesÚoldÚnewr   s                     r+   rÁ  z&RewrittenInstructions._rewrite_methods
  sñ  € õ ,6”g×'Ò'¸M¸?ˆð �M‰MØØ$ | n´g·l±lÐCÜ,Ð-ð ó ò ð �M‰MØØ$¤g§l¡lÐ3Ü,Ð-ð ó ð
Ð ð 
ð )¨Ñ+ˆDÜ& t§{¡{Ñ3ˆDà$ QÑ'×.Ñ.°,Ò>Ø3°AÑ6×=Ñ=�Ü˜k¬5Ô1°dð ?ñ 7ð 19¸DÑ0@¡9Ài‘L�F˜DØŸ™Ñ!D¸Ô!DÓD�BØ" kÑ1™°s�AØ+¨A¨3¨v¨h°a¸°t¸1¸T¸FÀ1À#ÀQÐG‘Dà˜a ˜¨aÐ0Ñ0�Dà—‘Ð&9À$ÐPT�ÓUˆBØ ×'Ñ'¨Ô+ôV Ð(Ó)Ð)ðO �M‰MØàØ!�NØ!�NØ!�NÜ—L‘Lðô -Ð-ð ó 
ò ð �M‰MØØ$ | n°|°nÄgÇlÁlÐSÜ,Ð-ð ó ð
Ð"ð 
ð* )¨Ñ+ˆDÜ& t§{¡{Ñ3ˆDð /¨q´3Ð7LÓ3MÐPQÑ3QÐRöàð —“ðˆLð ð �}Ò$Ü�|Ó$¨Ò)Ø&2‘O�C˜˜eØ˜a ˜w a¨ w¨c°%°¸ÐGÑG‘Dà+‘H�C˜Ø-¨c¨W°A°c°W¸NÐK‘Dà˜!˜CŸH™HÑ$C°lÔ$CÓCÐDÀAÐFÑF�à—‘Ð&9À$ÐPT�ÓUˆBØ ×'Ñ'¨Ô+äÐ(Ó)Ð)ùò#s   Æ?Ic              #  ó®   K  — | D ]L  }|j                   dv r8dD ]2  }|j                  d|j                  |   |j                  |   ¬«      –— Œ4 ŒI|–— ŒN y­w)z<Expand known 'superinstructions' into their component parts.)ÚLOAD_FAST_LOAD_FASTÚ!LOAD_FAST_BORROW_LOAD_FAST_BORROW)r   rg   r_   rÅ  N)r  rÆ  r!  )r  r&  rS  s      r+   r¡  z/RewrittenInstructions._unpack_superinstructions\  sq   è ø€ ð
 !ò 	ˆDØ�{‰{ð ñ ð "ò �CØŸ-™-Ø*Ø#Ÿ{™{¨3Ñ/Ø $§¡¨CÑ 0ð (ó ó ñð “
ñ	ùs   ‚AAc                óà  — t         sL| j                  t        j                  v r0| j	                  t        j                  | j                     d¬«      } | S t
        r•| j                  x}t        j                  v rPdt        j                  | j                     i}|dk(  rt        | j                  «      |d<    | j                  d
i |¤Ž} | S |dk(  r"| j                  dk(  r| j	                  dd¬	«      } | S )zFUpdate/modify specific instructions to simplify multi-version parsing.ro   )r‚  r  r  rd   r‚  z[]rr   rè   )r  r‚  r)   )
r3   r  r;   rR   rÆ  r7   re   r   r!  r‚  )r&  r  Úupdated_paramss      r+   r£  z)RewrittenInstructions._update_instructiono  sÜ   € õ ˜dŸk™k¬W¯^©^Ñ;à—=‘=ÜŸ™ t§{¡{Ñ3Ø"ð !ó ˆDð" ˆõ ØŸ+™+Ð%�¬'×*FÑ*FÑFð #+¬G×,HÑ,HÈÏÉÑ,UÐ!V�ØÐ-Ò-Ü03°D·K±KÓ0@�N 9Ñ-Ø$�t—}‘}Ñ6 ~Ñ6�ð ˆð	 ˜;Ò&¨4¯<©<¸4Ò+?à—}‘}¨OÀR�}ÓH�àˆr*   c                óà   — | j                   st        «       | _         | j                   }|dk(  xr! |j                  |«      t        j                  u xs |dk(  xr |j                  |«      t        u S )Nr   rg   )rþ   rã   rŠ  rË   )r  rÇ   rÅ   rÛ  Úvarss        r+   r×  z)RewrittenInstructions._is_stdlib_datetime‡  sk   € ð ×%Ò%Ü%>Ó%@ˆDÔ"Ø×%Ñ%ˆà˜qÑ ÒQ T§X¡X¨mÓ%<Ä×@QÑ@QÐ%QòJà Ñ"ÒH t§x¡x°Ó'<ÄÐ'Hð	Jr*   N)r  úIterator[Instruction]r  ro  r  rý   rp  rq  )rp  r   )rp  rû  )r¬  r   rp  r   )
rS  r   r´  zlist[AbstractSet[str]]rµ  z5list[AbstractSet[Any] | dict[Any, Any] | None] | Noner®  rN  rp  rr  )r  rr  rp  rr  )rS  r   r¾  rr  rp  r   )r  rr  rp  rû  )r&  r   rp  r   )rÇ   r   rÅ   r   rÛ  r   rp  rN  )r%   r&   r'   rs  rs   r¢  r  r¨  rª  r­  r¹  r¤  rÃ  rÂ  rÀ  rÁ  rt  r¡  r£  r×  r)   r*   r+   r
  r
  þ  s`  „ ññ ò
	
ó€LðNà+ðNð 'ðNð 0ð	Nð
 
óNó,1ó2ó2ð ñ(àð(ð (ð	(ð
 Gð(ð ð(ð 
ó(óT$ó6*ð"*Øð*Ø.?ð*à	ó*ð4cØðcØ.?ðcà	ócðJP*ØðP*Ø.?ðP*à	óP*ðd ðØ'ðà	òó ðð$ òó ðð.JØ ðJØ/2ðJØEHðJà	ôJr*   r
  c                ón  — 	 | j                   j                  }| j                  }|dk(  r|t        v rd|› d�fS |dk(  rj|t
        v rddt
        |   › d�fS |t        v r3dd	l}| t        ||«      u r t        j                  d
|› �|«      }d|› d�fS y|dk(  rdd	l}| |j                  u ryy# t        $ r Y yw xY w)zIIdentify translatable calls that aren't wrapped inside a lambda/function.)rè   rè   r”   r“   r†  ÚbuiltinsrÍ  r  r   Nr‡  rÈ   rÊ   )rÉ   zstr.json_decode())Ú	__class__r&   r%   ÚAttributeErrorr�   r«   r’   rÈ   r•  rÒ   rŠ  rÉ   rÊ   )r  Úfunc_moduleri  rÈ   rÉ  rÉ   s         r+   Ú_raw_function_metar  ’  s÷   € ðØ×(Ñ(×3Ñ3ˆØ×%Ñ%ˆ	ð
 �gÒ )Ô/?Ñ"?Ø˜	�{ "Ð%Ð%Ð%ð 
˜
Ò	"ØÔ)Ñ)Ø Ô*;¸IÑ*FÐ)GÀqÐIÐIÐIØœ/Ñ)Ûàœ7 4¨Ó3Ñ3Ü5×9Ñ9Ø˜I˜;Ð'¨ó�	ð  ) ¨BÐ/Ð/Ð/ð ð ˜'Ò!Ûà˜4Ÿ:™:Ñ%Ø2àøô3 ò Ùðús   ‚"B( Â(	B4Â3B4c                ó   — |dk(  rd}t        |«      ‚|xr |d   }|s|dk7  ryt        j                  | |fx}«      x}€t        | |«      }|t        |<   |j	                  «       r|j                  |«       yt        | «      \  }}|rI|rFt        |||«      }	|	|_        | j                  }
|j                  ||	› d|› �|dk(  r|
n|› d|
› �¬«       yyy)	a­  
    Generate `PolarsInefficientMapWarning` on poor usage of a `map` function.

    Parameters
    ----------
    function
        The function passed to `map`.
    columns
        The column name(s) of the original object; in the case of an `Expr` this
        will be a list of length 1, containing the expression's root name.
    map_target
        The target of the `map` call. One of `"expr"`, `"frame"`, or `"series"`.
    r-   z"TODO: 'frame' map-function parsingr   rè   Nrç   rý  rX  )
rð   r9   rŠ  rú   r:  rg  r  rø   rû   r%   )r  Úcolumnsró   r÷   rñ   ÚkeyÚparserÚmoduleÚ
suggestionrW  Úfns              r+   Úwarn_on_inefficient_mapr	  ³  s   € ð  �WÒØ2ˆÜ! #Ó&Ð&ð Ò%˜7 1™:€CÙ�3˜"’9Øô *×-Ñ-°hÀ
Ð5KÐ.K¨cÓLÐLˆÐUÜ ¨*Ó5ˆØ'-Ô Ñ$à×!Ñ!Ô#Ø�‰�CÕô 0°Ó9Ñˆ�
Ù‘jÜ*¨3°
¸JÓGˆKØ&1ˆFÔ#Ø×"Ñ"ˆBØ�K‰KØØ'2 m°1°Z°LÐ$AØ#)¨ZÒ#7™RÀ¸xÀqÈÈÐ=Mð õ ð	 !ˆ6r*   r	  )rp  zdict[str, Any])rñ   r   rò   r   ró   r   rp  r   )r  ro  rp  ztuple[str, str])r  ro  r  z	list[str]ró   r/   rp  rq  )Mrs  Ú
__future__r   rË   r<  rÙ   rí   Úsysrf  Úbisectr   Úcollectionsr   r   r   Ú	itertoolsr   r	   Úpathlibr
   Útypingr   r   r   r   r   r   Úpolars._utils.cacher   rd  r   r   Úcollections.abcr   r   r   r   ÚAbstractSetr   r   r   r   r/   r(   r   r0   Úversion_infor3   r5   r7   r9   r;   rs   r’   r•   r�   r¦   r«   r­   rÀ   rb   rÏ   rv   rm   rÒ   ÚcompilerÓ   rÔ   rÕ   rã   rø   rú   rL  r
  r  r	  Ú__all__)ÚkindÚunarys   00r+   ú<module>r     sâ  ðÚ Tå "ã Û 
Û Û 	Û 
Û Ý Ý #Ý  Ý ß (Ý ÷÷ õ )ß 7áßBÑBÝ2ÝÝ å/ô#�ô #ð Ð8Ñ9€	ˆ9Ó 9Ø˜jÑ(€
ˆIÓ (à×$Ñ$¨Ñ/€
ˆEÓ /ØÒ> 3×#3Ñ#3°wÑ#>€
ˆEÓ >ØÒ> 3×#3Ñ#3°wÑ#>€
ˆEÓ >ñ ˆRƒLð ð ó ÷
9-ñ 9-ñz *3ðó*€Ð&ó ñ: 09¸Ó/IÐ Ð,Ó IÙ*3ðó+Ð Ð'ó ð> ØØØ%ØØØØñ	,Ð Ð(ó 	ð ØØñ,Ð Ð(ó ñ
 +4Ð4EÓ*FÈ%ÈÑ*PÐ Ð'Ó Pð.à�ð.ð Ðð.ð Ð%ð	.ð
 Ð&ð.ð Ð&ð.ð ˆ}ð.ð Ð#ð.ð Ð#ð.ð Ðð.ð Ðð.ð Ðð.ð ˆ[ð.ð ˆIð.ð  
ˆ8ð!.ð" ˆIð#.ð$ �,ð%.ð& Ð#ð'.ð( ØØØØò1.Ð Ð*ó ð>  +¨LÐ9Ð:ØØ!×+Ñ+Ð,ØØ-Ð.ØØ*Ð+ñð  +¨LÐ9Ð:ØØ!×+Ñ+Ð,ØØ˜�zØØ)Ð*ñð  +˜m˜_ØØ!×+Ñ+Ð,ØØ˜�zØØ"˜)˜ñð  +˜m˜_Ø+˜nÐ-Ø!×+Ñ+Ð,ØØ#˜�~ØØ%˜,˜Ø"ñ	ð  +˜m˜_Ø+˜nÐ-Ø&˜-˜Ø$×.Ñ.Ð/Ø# TÐ*Ð+Ø&˜<˜.Ø%˜,˜Ø"ñ	ð[7>Ð Ð:ó 7ðx "÷àÙ�w—}‘}Ó%Ð&¨Ð+òð 	ð /€tÐ.Ð&¨Ó.ðØ.óÐ ð ØØØØØØ#ñ4Ð Ð0ó ð &˜2Ÿ:™:Ð&UÓVÐ �5Ó VØ$˜"Ÿ*™*Ð%<Ó=Ð �%Ó =Ø"˜Ÿ
™
Ð#4Ó5€�Ó 5óó:#÷2Fñ F÷RP'ñ P'÷fQJñ QJóhðB,Ø"ð,Ø-6ð,ØDMð,à	ó,ð^ Ð6Ð
7�ùóUs   È1)K-