
    g7                       d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	 ddl
mZ ej                  dk\  rddlmZ nddlmZ erdd	lmZmZ  G d
 de      Z G d dee      ZeZy)zGTools for creating transform & filter expressions with a python syntax.    )annotationsN)TYPE_CHECKINGAny)ConstExpressionFunctionExpression)ExprRef)      )override)
ExpressionIntoExpressionc                      e Zd ZdZedd       Zedd       Zedd       Zedd       Zedd       Z	edd       Z
edd       Zedd	       Zedd
       Zy)	_ExprMetaz~
    Metaclass for :class:`expr`.

    Currently providing read-only class properties, representing JavaScript constants.
    c                    t        d      S )z.Not a number (same as JavaScript literal NaN).NaNr   clss    I/var/www/openai/venv/lib/python3.12/site-packages/altair/expr/__init__.pyr   z_ExprMeta.NaN        u%%    c                    t        d      S )z+The natural log of 10 (alias to Math.LN10).LN10r   r   s    r   r   z_ExprMeta.LN10#   s     v&&r   c                    t        d      S )z.The transcendental number e (alias to Math.E).Er   r   s    r   r   z_ExprMeta.E(   s     s##r   c                    t        d      S )z/The base 10 logarithm e (alias to Math.LOG10E).LOG10Er   r   s    r   r   z_ExprMeta.LOG10E-   s     x((r   c                    t        d      S )z0The base 2 logarithm of e (alias to Math.LOG2E).LOG2Er   r   s    r   r   z_ExprMeta.LOG2E2        w''r   c                    t        d      S )z/The square root of 0.5 (alias to Math.SQRT1_2).SQRT1_2r   r   s    r   r"   z_ExprMeta.SQRT1_27   s     y))r   c                    t        d      S )z)The natural log of 2 (alias to Math.LN2).LN2r   r   s    r   r$   z_ExprMeta.LN2<   r   r   c                    t        d      S )z-The square root of 2 (alias to Math.SQRT1_2).SQRT2r   r   s    r   r&   z_ExprMeta.SQRT2A   r    r   c                    t        d      S )z0The transcendental number pi (alias to Math.PI).PIr   r   s    r   r(   z_ExprMeta.PIF   s     t$$r   Nreturnr   )__name__
__module____qualname____doc__propertyr   r   r   r   r   r"   r$   r&   r(    r   r   r   r      s     & & ' ' $ $ ) ) ( ( * * & & ( ( % %r   r   c                     e Zd ZdZedd       Zedd       Zedd       Zedd       Z	edd       Z
edd       Zedd       Zedd	       Zedd
       Zedd       Zedd       Zedd       Zedd       Zedd       Ze	 	 	 	 	 	 	 	 dd       Zedd       Zedd       Zedd       Zedd       Zedd       Zedd       Zedd       Zedd       Ze	 	 	 	 	 	 	 	 dd       Zedd       Zedd       Zedd       Z edd       Z!edd       Z"e	 	 	 	 	 	 	 	 dd       Z#e	 	 	 	 	 	 	 	 dd        Z$edd!       Z%edd"       Z&edd#       Z'edd$       Z(edd%       Z)edd&       Z*e	 d	 	 	 	 	 dd(       Z+e	 	 d	 	 	 	 	 	 	 dd)       Z,e	 	 d	 	 	 	 	 	 	 dd*       Z-e	 	 d	 	 	 	 	 	 	 dd+       Z.e	 d	 	 	 	 	 dd,       Z/e	 	 d	 	 	 	 	 	 	 dd-       Z0e	 	 d	 	 	 	 	 	 	 dd.       Z1e	 	 d	 	 	 	 	 	 	 dd/       Z2e	 d	 	 	 	 	 dd0       Z3e	 	 d	 	 	 	 	 	 	 dd1       Z4e	 	 d	 	 	 	 	 	 	 dd2       Z5e	 	 d	 	 	 	 	 	 	 dd3       Z6edd4       Z7e	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd5       Z8edd6       Z9edd7       Z:edd8       Z;edd9       Z<edd:       Z=edd;       Z>edd<       Z?edd=       Z@edd>       ZAedd?       ZBedd@       ZCeddA       ZDeddB       ZEe	 d	 	 	 	 	 	 	 ddC       ZFe	 d	 	 	 	 	 	 	 	 	 ddD       ZGe	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddE       ZHeddF       ZIeddG       ZJeddH       ZKeddI       ZLeddJ       ZMeddK       ZNeddL       ZOeddM       ZPeddN       ZQeddO       ZReddP       ZSe	 d	 	 	 	 	 	 	 ddQ       ZTe	 d	 	 	 	 	 	 	 	 	 ddR       ZUeddS       ZVe	 	 	 	 	 	 	 	 ddT       ZWeddU       ZXeddV       ZYe	 d	 	 	 	 	 ddW       ZZeddX       Z[eddY       Z\eddZ       Z]edd[       Z^edd\       Z_edd]       Z`edd^       Zae	 d	 	 	 	 	 	 	 dd_       Zbedd`       Zcedda       Zde	 	 d	 	 	 	 	 	 	 	 	 ddb       Zeeddc       Zfeddd       Zge	 	 	 	 	 	 	 	 dde       Zhe	 d	 	 	 	 	 	 	 ddf       Zieddg       Zje	 	 d	 	 	 	 	 	 	 	 	 ddh       Zkeddi       Zle	 d	 	 	 	 	 	 	 ddj       Zmeddk       Zneddl       Zoeddm       Zpeddn       Zqeddo       Zre	 d	 	 	 	 	 ddp       Zse	 	 	 	 	 	 ddq       Zte	 	 	 	 	 	 ddr       Zue	 	 	 	 	 	 dds       Zve	 	 	 	 	 	 ddt       Zwe	 d	 	 	 	 	 ddu       Zxe	 d	 	 	 	 	 ddv       Zyeddw       Zzeddx       Z{eddy       Z|eddz       Z}edd{       Z~e	 	 	 	 	 	 dd|       Zedd}       Zeddd~       Zeddd       Zeddd       Zeddd       Zedd       Zedd       Zedd       Zedd       Ze	 	 	 	 	 	 	 	 dd       Ze	 d	 	 	 	 	 	 	 dd       Ze	 d	 	 	 	 	 	 	 dd       Zeddd       Ze	 d	 	 	 	 	 dd       Zeddd       Ze	 d	 	 	 	 	 dd       Ze	 	 d	 	 	 	 	 	 	 dd       Ze	 d	 	 	 	 	 	 	 	 	 dd       Zedd       Zedd       Ze	 	 	 	 	 	 	 	 dd       Ze	 	 	 	 	 	 	 	 dd       Ze	 	 	 	 	 	 	 	 dd       Ze	 	 	 	 	 	 	 	 dd       Ze	 	 	 	 	 	 	 	 	 	 dd       Ze	 	 	 	 	 	 	 	 	 	 dd       Ze	 d	 	 	 	 	 	 	 dd       Ze	 d	 	 	 	 	 	 	 dd       Ze	 d	 	 	 	 	 	 	 dd       Ze	 d	 	 	 	 	 dd       Ze	 	 	 	 	 	 	 	 dd       Zedd       Zedd       Zedd       Zedd       Ze	 d	 	 	 	 	 	 	 dd       Ze	 d	 	 	 	 	 	 	 dd       Ze	 d	 	 	 	 	 	 	 dd       Zy')expra  
    Utility providing *constants* and *classmethods* to construct expressions.

    `Expressions`_ can be used to write basic formulas that enable custom interactions.

    Alternatively, an `inline expression`_ may be defined via :class:`expr()`.

    Parameters
    ----------
    expr: str
        A `vega expression`_ string.

    Returns
    -------
    ``ExprRef``

    .. _Expressions:
        https://altair-viz.github.io/user_guide/interactions.html#expressions
    .. _inline expression:
       https://altair-viz.github.io/user_guide/interactions.html#inline-expressions
    .. _vega expression:
       https://vega.github.io/vega/docs/expressions/

    Examples
    --------
    >>> import altair as alt

    >>> bind_range = alt.binding_range(min=100, max=300, name="Slider value:  ")
    >>> param_width = alt.param(bind=bind_range, name="param_width")
    >>> param_color = alt.param(
    ...     expr=alt.expr.if_(param_width < 200, "red", "black"),
    ...     name="param_color",
    ... )
    >>> y = alt.Y("yval").axis(titleColor=param_color)

    >>> y
    Y({
      axis: {'titleColor': Parameter('param_color', VariableParameter({
        expr: if((param_width < 200),'red','black'),
        name: 'param_color'
      }))},
      shorthand: 'yval'
    })

    .. _Number.isNaN:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNan
    .. _Number.isFinite:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite
    .. _Math.abs:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/abs
    .. _Math.acos:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acos
    .. _Math.asin:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asin
    .. _Math.atan:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan
    .. _Math.atan2:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2
    .. _Math.ceil:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/ceil
    .. _Math.cos:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cos
    .. _Math.exp:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/exp
    .. _Math.floor:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
    .. _Math.hypot:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot
    .. _Math.log:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log
    .. _Math.max:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max
    .. _Math.min:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/min
    .. _Math.pow:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow
    .. _Math.random:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random
    .. _Math.round:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
    .. _Math.sin:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sin
    .. _Math.sqrt:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt
    .. _Math.tan:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tan
    .. _normal (Gaussian) probability distribution:
       https://en.wikipedia.org/wiki/Normal_distribution
    .. _cumulative distribution function:
       https://en.wikipedia.org/wiki/Cumulative_distribution_function
    .. _probability density function:
       https://en.wikipedia.org/wiki/Probability_density_function
    .. _log-normal probability distribution:
       https://en.wikipedia.org/wiki/Log-normal_distribution
    .. _continuous uniform probability distribution:
       https://en.wikipedia.org/wiki/Continuous_uniform_distribution
    .. _*unit*:
       https://vega.github.io/vega/docs/api/time/#time-units
    .. _JavaScript's String.replace:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
    .. _d3-format specifier:
       https://github.com/d3/d3-format/
    .. _*units*:
       https://vega.github.io/vega/docs/api/time/#time-units
    .. _timeUnitSpecifier API documentation:
       https://vega.github.io/vega/docs/api/time/#timeUnitSpecifier
    .. _timeFormat:
       https://vega.github.io/vega/docs/expressions/#timeFormat
    .. _utcFormat:
       https://vega.github.io/vega/docs/expressions/#utcFormat
    .. _d3-time-format specifier:
       https://github.com/d3/d3-time-format/
    .. _TimeMultiFormat object:
       https://vega.github.io/vega/docs/types/#TimeMultiFormat
    .. _UTC:
       https://en.wikipedia.org/wiki/Coordinated_Universal_Time
    .. _JavaScript's RegExp:
       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
    .. _RGB:
       https://en.wikipedia.org/wiki/RGB_color_model
    .. _d3-color's rgb function:
       https://github.com/d3/d3-color#rgb
    .. _HSL:
       https://en.wikipedia.org/wiki/HSL_and_HSV
    .. _d3-color's hsl function:
       https://github.com/d3/d3-color#hsl
    .. _CIE LAB:
       https://en.wikipedia.org/wiki/Lab_color_space#CIELAB
    .. _d3-color's lab function:
       https://github.com/d3/d3-color#lab
    .. _HCL:
       https://en.wikipedia.org/wiki/Lab_color_space#CIELAB
    .. _d3-color's hcl function:
       https://github.com/d3/d3-color#hcl
    .. _W3C Web Content Accessibility Guidelines:
       https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef
    .. _continuous color scheme:
       https://vega.github.io/vega/docs/schemes
    .. _geoArea:
       https://github.com/d3/d3-geo#geoArea
    .. _path.area:
       https://github.com/d3/d3-geo#path_area
    .. _geoBounds:
       https://github.com/d3/d3-geo#geoBounds
    .. _path.bounds:
       https://github.com/d3/d3-geo#path_bounds
    .. _geoCentroid:
       https://github.com/d3/d3-geo#geoCentroid
    .. _path.centroid:
       https://github.com/d3/d3-geo#path_centroid
    .. _window.screen:
       https://developer.mozilla.org/en-US/docs/Web/API/Window/screen
    c                    t        |      S )N)r2   )_ExprRef)r   r2   s     r   __new__zexpr.__new__   s    T""r   c                   t        d|f      S )z7Returns true if ``value`` is an array, false otherwise.isArrayr   r   values     r   r7   zexpr.isArray        ")eX66r   c                   t        d|f      S )zPReturns true if ``value`` is a boolean (``true`` or ``false``), false otherwise.	isBooleanr8   r9   s     r   r=   zexpr.isBoolean   s     "+x88r   c                   t        d|f      S )z
        Returns true if ``value`` is a Date object, false otherwise.

        This method will return false for timestamp numbers or date-formatted strings; it recognizes
        Date objects only.
        isDater8   r9   s     r   r?   zexpr.isDate   s     "(UH55r   c                   t        d|f      S )z
        Returns true if ``value`` is a defined value, false if ``value`` equals ``undefined``.

        This method will return true for ``null`` and ``NaN`` values.
        	isDefinedr8   r9   s     r   rA   zexpr.isDefined        "+x88r   c                   t        d|f      S )z
        Returns true if ``value`` is a number, false otherwise.

        ``NaN`` and ``Infinity`` are considered numbers.
        isNumberr8   r9   s     r   rD   zexpr.isNumber       "*uh77r   c                   t        d|f      S )zUReturns true if ``value`` is an object (including arrays and Dates), false otherwise.isObjectr8   r9   s     r   rG   zexpr.isObject       "*uh77r   c                   t        d|f      S )zSReturns true if ``value`` is a RegExp (regular expression) object, false otherwise.isRegExpr8   r9   s     r   rJ   zexpr.isRegExp  rH   r   c                   t        d|f      S )z7Returns true if ``value`` is a string, false otherwise.isStringr8   r9   s     r   rL   zexpr.isString  rH   r   c                   t        d|f      S )zVReturns true if ``value`` is not ``null``, ``undefined``, or ``NaN``, false otherwise.isValidr8   r9   s     r   rN   zexpr.isValid   r;   r   c                   t        d|f      S )y
        Coerces the input ``value`` to a string.

        Null values and empty strings are mapped to ``null``.
        	toBooleanr8   r9   s     r   rQ   zexpr.toBoolean%  rB   r   c                   t        d|f      S )aP  
        Coerces the input ``value`` to a Date instance.

        Null values and empty strings are mapped to ``null``. If an optional *parser* function is
        provided, it is used to perform date parsing, otherwise ``Date.parse`` is used. Be aware
        that ``Date.parse`` has different implementations across browsers!
        toDater8   r9   s     r   rS   zexpr.toDate.  s     "(UH55r   c                   t        d|f      S )zy
        Coerces the input ``value`` to a number.

        Null values and empty strings are mapped to ``null``.
        toNumberr8   r9   s     r   rU   zexpr.toNumber9  rE   r   c                   t        d|f      S )rP   toStringr8   r9   s     r   rW   zexpr.toStringB  rE   r   c                    t        d|||f      S )z
        If ``test`` is truthy, returns ``thenValue``.

        Otherwise, returns ``elseValue``. The *if* function is equivalent to the ternary operator
        ``a ? b : c``.
        ifr8   )r   test	thenValue	elseValues       r   if_zexpr.if_K  s     "$y)(DEEr   c                   t        d|f      S )z
        Returns true if ``value`` is not a number.

        Same as JavaScript's `Number.isNaN`_.

        .. _Number.isNaN:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNan
        isNaNr8   r9   s     r   r_   z
expr.isNaN[       "'E844r   c                   t        d|f      S )z
        Returns true if ``value`` is a finite number.

        Same as JavaScript's `Number.isFinite`_.

        .. _Number.isFinite:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite
        isFiniter8   r9   s     r   rb   zexpr.isFiniteg  s     "*uh77r   c                   t        d|f      S )z
        Returns the absolute value of ``value``.

        Same as JavaScript's `Math.abs`_.

        .. _Math.abs:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/abs
        absr8   r9   s     r   rd   zexpr.abss       "%%22r   c                   t        d|f      S )z
        Trigonometric arccosine.

        Same as JavaScript's `Math.acos`_.

        .. _Math.acos:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acos
        acosr8   r9   s     r   rg   z	expr.acos       "&5(33r   c                   t        d|f      S )z
        Trigonometric arcsine.

        Same as JavaScript's `Math.asin`_.

        .. _Math.asin:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asin
        asinr8   r9   s     r   rj   z	expr.asin  rh   r   c                   t        d|f      S )z
        Trigonometric arctangent.

        Same as JavaScript's `Math.atan`_.

        .. _Math.atan:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan
        atanr8   r9   s     r   rl   z	expr.atan  rh   r   c                   t        d||f      S )z
        Returns the arctangent of *dy / dx*.

        Same as JavaScript's `Math.atan2`_.

        .. _Math.atan2:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2
        atan2r8   )r   dydxs      r   rn   z
expr.atan2  s     "'B844r   c                   t        d|f      S )z
        Rounds ``value`` to the nearest integer of equal or greater value.

        Same as JavaScript's `Math.ceil`_.

        .. _Math.ceil:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/ceil
        ceilr8   r9   s     r   rr   z	expr.ceil  rh   r   c                    t        d|||f      S )zDRestricts ``value`` to be between the specified ``min`` and ``max``.clampr8   r   r:   minmaxs       r   rt   z
expr.clamp  s    
 "'E3+<==r   c                   t        d|f      S )z
        Trigonometric cosine.

        Same as JavaScript's `Math.cos`_.

        .. _Math.cos:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cos
        cosr8   r9   s     r   ry   zexpr.cos  re   r   c                   t        d|f      S )z
        Returns the value of *e* raised to the provided ``exponent``.

        Same as JavaScript's `Math.exp`_.

        .. _Math.exp:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/exp
        expr8   )r   exponents     r   r{   zexpr.exp  s     "%(55r   c                   t        d|f      S )a   
        Rounds ``value`` to the nearest integer of equal or lower value.

        Same as JavaScript's `Math.floor`_.

        .. _Math.floor:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
        floorr8   r9   s     r   r~   z
expr.floor  r`   r   c                   t        d|f      S )z
        Returns the square root of the sum of squares of its arguments.

        Same as JavaScript's `Math.hypot`_.

        .. _Math.hypot:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot
        hypotr8   r9   s     r   r   z
expr.hypot  r`   r   c                   t        d|f      S )z
        Returns the natural logarithm of ``value``.

        Same as JavaScript's `Math.log`_.

        .. _Math.log:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log
        logr8   r9   s     r   r   zexpr.log  re   r   c                $    t        d||g|      S )z
        Returns the maximum argument value.

        Same as JavaScript's `Math.max`_.

        .. _Math.max:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max
        rw   r8   r   value1value2argss       r   rw   zexpr.max       "%&&)@4)@AAr   c                $    t        d||g|      S )z
        Returns the minimum argument value.

        Same as JavaScript's `Math.min`_.

        .. _Math.min:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/min
        rv   r8   r   s       r   rv   zexpr.min  r   r   c                   t        d||f      S )z
        Returns ``value`` raised to the given ``exponent``.

        Same as JavaScript's `Math.pow`_.

        .. _Math.pow:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow
        powr8   )r   r:   r|   s      r   r   zexpr.pow  s     "%%):;;r   c                    t        dd      S )z
        Returns a pseudo-random number in the range [0,1).

        Same as JavaScript's `Math.random`_.

        .. _Math.random:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random
        randomr0   r8   r   s    r   r   zexpr.random&  s     "(B//r   c                   t        d|f      S )z
        Rounds ``value`` to the nearest integer.

        Same as JavaScript's `Math.round`_.

        .. _Math.round:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
        roundr8   r9   s     r   r   z
expr.round2  r`   r   c                   t        d|f      S )z
        Trigonometric sine.

        Same as JavaScript's `Math.sin`_.

        .. _Math.sin:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sin
        sinr8   r9   s     r   r   zexpr.sin>  re   r   c                   t        d|f      S )z
        Square root function.

        Same as JavaScript's `Math.sqrt`_.

        .. _Math.sqrt:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt
        sqrtr8   r9   s     r   r   z	expr.sqrtJ  rh   r   c                   t        d|f      S )z
        Trigonometric tangent.

        Same as JavaScript's `Math.tan`_.

        .. _Math.tan:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tan
        tanr8   r9   s     r   r   zexpr.tanV  re   r   Nc                   t        d||f      S )au  
        Returns a sample from a univariate `normal (Gaussian) probability distribution`_ with specified ``mean`` and standard deviation ``stdev``.

        If unspecified, the mean defaults to ``0`` and the standard deviation defaults to ``1``.

        .. _normal (Gaussian) probability distribution:
            https://en.wikipedia.org/wiki/Normal_distribution
        sampleNormalr8   r   meanstdevs      r   r   zexpr.sampleNormalb  s     ".4-@@r   c                    t        d|||f      S )a  
        Returns the value of the `cumulative distribution function`_ at the given input domain ``value`` for a normal distribution with specified ``mean`` and standard deviation ``stdev``.

        If unspecified, the mean defaults to ``0`` and the standard deviation defaults to ``1``.

        .. _cumulative distribution function:
            https://en.wikipedia.org/wiki/Cumulative_distribution_function
        cumulativeNormalr8   r   r:   r   r   s       r   r   zexpr.cumulativeNormalp  s      ""4udE6JKKr   c                    t        d|||f      S )a  
        Returns the value of the `probability density function`_ at the given input domain ``value``, for a normal distribution with specified ``mean`` and standard deviation ``stdev``.

        If unspecified, the mean defaults to ``0`` and the standard deviation defaults to ``1``.

        .. _probability density function:
            https://en.wikipedia.org/wiki/Probability_density_function
        densityNormalr8   r   s       r   r   zexpr.densityNormal  s      "/E43GHHr   c                    t        d|||f      S )a  
        Returns the quantile value (the inverse of the `cumulative distribution function`_) for the given input ``probability``, for a normal distribution with specified ``mean`` and standard deviation ``stdev``.

        If unspecified, the mean defaults to ``0`` and the standard deviation defaults to ``1``.

        .. _cumulative distribution function:
            https://en.wikipedia.org/wiki/Cumulative_distribution_function
        quantileNormalr8   r   probabilityr   r   s       r   r   zexpr.quantileNormal  s      ""2[$4NOOr   c                   t        d||f      S )a  
        Returns a sample from a univariate `log-normal probability distribution`_ with specified log ``mean`` and log standard deviation ``stdev``.

        If unspecified, the log mean defaults to ``0`` and the log standard deviation defaults to
        ``1``.

        .. _log-normal probability distribution:
            https://en.wikipedia.org/wiki/Log-normal_distribution
        sampleLogNormalr8   r   s      r   r   zexpr.sampleLogNormal  s     ""3dE]CCr   c                    t        d|||f      S )a  
        Returns the value of the `cumulative distribution function`_ at the given input domain ``value`` for a log-normal distribution with specified log ``mean`` and log standard deviation ``stdev``.

        If unspecified, the log mean defaults to ``0`` and the log standard deviation defaults to
        ``1``.

        .. _cumulative distribution function:
            https://en.wikipedia.org/wiki/Cumulative_distribution_function
        cumulativeLogNormalr8   r   s       r   r   zexpr.cumulativeLogNormal  s    " ""7%u9MNNr   c                    t        d|||f      S )a  
        Returns the value of the `probability density function`_ at the given input domain ``value``, for a log-normal distribution with specified log ``mean`` and log standard deviation ``stdev``.

        If unspecified, the log mean defaults to ``0`` and the log standard deviation defaults to
        ``1``.

        .. _probability density function:
            https://en.wikipedia.org/wiki/Probability_density_function
        densityLogNormalr8   r   s       r   r   zexpr.densityLogNormal  s    " ""4udE6JKKr   c                    t        d|||f      S )a  
        Returns the quantile value (the inverse of the `cumulative distribution function`_) for the given input ``probability``, for a log-normal distribution with specified log ``mean`` and log standard deviation ``stdev``.

        If unspecified, the log mean defaults to ``0`` and the log standard deviation defaults to
        ``1``.

        .. _cumulative distribution function:
            https://en.wikipedia.org/wiki/Cumulative_distribution_function
        quantileLogNormalr8   r   s       r   r   zexpr.quantileLogNormal  s    " ""5T57QRRr   c                   t        d||f      S )a  
        Returns a sample from a univariate `continuous uniform probability distribution`_ over the interval [``min``, ``max``).

        If unspecified, ``min`` defaults to ``0`` and ``max`` defaults to ``1``. If only one
        argument is provided, it is interpreted as the ``max`` value.

        .. _continuous uniform probability distribution:
            https://en.wikipedia.org/wiki/Continuous_uniform_distribution
        sampleUniformr8   )r   rv   rw   s      r   r   zexpr.sampleUniform  s     "/C:>>r   c                    t        d|||f      S )a  
        Returns the value of the `cumulative distribution function`_ at the given input domain ``value`` for a uniform distribution over the interval [``min``, ``max``).

        If unspecified, ``min`` defaults to ``0`` and ``max`` defaults to ``1``. If only one
        argument is provided, it is interpreted as the ``max`` value.

        .. _cumulative distribution function:
            https://en.wikipedia.org/wiki/Cumulative_distribution_function
        cumulativeUniformr8   ru   s       r   r   zexpr.cumulativeUniform  s    " ""5sC7HIIr   c                    t        d|||f      S )a  
        Returns the value of the `probability density function`_ at the given input domain ``value``,  for a uniform distribution over the interval [``min``, ``max``).

        If unspecified, ``min`` defaults to ``0`` and ``max`` defaults to ``1``. If only one
        argument is provided, it is interpreted as the ``max`` value.

        .. _probability density function:
            https://en.wikipedia.org/wiki/Probability_density_function
        densityUniformr8   ru   s       r   r   zexpr.densityUniform  s    " ""2UC4EFFr   c                    t        d|||f      S )a  
        Returns the quantile value (the inverse of the `cumulative distribution function`_) for the given input ``probability``,  for a uniform distribution over the interval [``min``, ``max``).

        If unspecified, ``min`` defaults to ``0`` and ``max`` defaults to ``1``. If only one
        argument is provided, it is interpreted as the ``max`` value.

        .. _cumulative distribution function:
            https://en.wikipedia.org/wiki/Cumulative_distribution_function
        quantileUniformr8   )r   r   rv   rw   s       r   r   zexpr.quantileUniform#  s    " ""3k35LMMr   c                    t        dd      S )z+Returns the timestamp for the current time.nowr0   r8   r   s    r   r   zexpr.now6  s     "%,,r   c          
     (    t        d|||||||f      S )zz
        Returns a new ``Date`` instance.

        The ``month`` is 0-based, such that ``1`` represents February.
        datetimer8   r   yearmonthdayhourrv   secmillisecs           r   r   zexpr.datetime;  s%    " "uc4c8D
 	
r   c                   t        d|f      S )zMReturns the day of the month for the given ``datetime`` value, in local time.dater8   r   r   s     r   r   z	expr.dateP       "&8+66r   c                   t        d|f      S )zLReturns the day of the week for the given ``datetime`` value, in local time.r   r8   r   s     r   r   zexpr.dayU  s     "%(55r   c                   t        d|f      S )zVReturns the one-based day of the year for the given ``datetime`` value, in local time.	dayofyearr8   r   s     r   r   zexpr.dayofyearZ  s     "+{;;r   c                   t        d|f      S )zAReturns the year for the given ``datetime`` value, in local time.r   r8   r   s     r   r   z	expr.year_  r   r   c                   t        d|f      S )zVReturns the quarter of the year (0-3) for the given ``datetime`` value, in local time.quarterr8   r   s     r   r   zexpr.quarterd       ")h[99r   c                   t        d|f      S )zOReturns the (zero-based) month for the given ``datetime`` value, in local time.r   r8   r   s     r   r   z
expr.monthi       "'H;77r   c                   t        d|f      S )aA  
        Returns the week number of the year for the given *datetime*, in local time.

        This function assumes Sunday-based weeks. Days before the first Sunday of the year are
        considered to be in week 0, the first Sunday of the year is the start of week 1, the second
        Sunday week 2, *etc.*.
        weekr8   r   r   s     r   r   z	expr.weekn  s     "&4'22r   c                   t        d|f      S )zLReturns the hours component for the given ``datetime`` value, in local time.hoursr8   r   s     r   r   z
expr.hoursy  r   r   c                   t        d|f      S )zNReturns the minutes component for the given ``datetime`` value, in local time.minutesr8   r   s     r   r   zexpr.minutes~  r   r   c                   t        d|f      S )zNReturns the seconds component for the given ``datetime`` value, in local time.secondsr8   r   s     r   r   zexpr.seconds  r   r   c                   t        d|f      S )zSReturns the milliseconds component for the given ``datetime`` value, in local time.millisecondsr8   r   s     r   r   zexpr.milliseconds       ".8+>>r   c                   t        d|f      S )zCReturns the epoch-based timestamp for the given ``datetime`` value.timer8   r   s     r   r   z	expr.time  r   r   c                   t        d|f      S )z\Returns the timezone offset from the local timezone to UTC for the given ``datetime`` value.timezoneoffsetr8   r   s     r   r   zexpr.timezoneoffset  s     ""2XK@@r   c                    t        d|||f      S )aQ  
        Returns a new ``Date`` instance that offsets the given ``date`` by the specified time `*unit*`_ in the local timezone.

        The optional ``step`` argument indicates the number of time unit steps to offset by (default
        1).

        .. _*unit*:
            https://vega.github.io/vega/docs/api/time/#time-units
        
timeOffsetr8   r   unitr   steps       r   r   zexpr.timeOffset  s     ",tT0BCCr   c               "    t        d||||f      S )a  
        Returns an array of ``Date`` instances from ``start`` (inclusive) to ``stop`` (exclusive), with each entry separated by the given time `*unit*`_ in the local timezone.

        The optional ``step`` argument indicates the number of time unit steps to take between each
        sequence entry (default 1).

        .. _*unit*:
            https://vega.github.io/vega/docs/api/time/#time-units
        timeSequencer8   r   r   startstopr   s        r   r   zexpr.timeSequence  s    $ ".4d2KLLr   c          
     (    t        d|||||||f      S )z
        Returns a timestamp for the given UTC date.

        The ``month`` is 0-based, such that ``1`` represents February.
        utcr8   r   s           r   r   zexpr.utc  s     " "%$sD#sH)UVVr   c                   t        d|f      S )zKReturns the day of the month for the given ``datetime`` value, in UTC time.utcdater8   r   s     r   r   zexpr.utcdate  r   r   c                   t        d|f      S )zJReturns the day of the week for the given ``datetime`` value, in UTC time.utcdayr8   r   s     r   r   zexpr.utcday  s     "(XK88r   c                   t        d|f      S )zTReturns the one-based day of the year for the given ``datetime`` value, in UTC time.utcdayofyearr8   r   s     r   r   zexpr.utcdayofyear  r   r   c                   t        d|f      S )z?Returns the year for the given ``datetime`` value, in UTC time.utcyearr8   r   s     r   r   zexpr.utcyear  r   r   c                   t        d|f      S )zTReturns the quarter of the year (0-3) for the given ``datetime`` value, in UTC time.
utcquarterr8   r   s     r   r   zexpr.utcquarter       ",<<r   c                   t        d|f      S )zMReturns the (zero-based) month for the given ``datetime`` value, in UTC time.utcmonthr8   r   s     r   r   zexpr.utcmonth       "*xk::r   c                   t        d|f      S )a?  
        Returns the week number of the year for the given *datetime*, in UTC time.

        This function assumes Sunday-based weeks. Days before the first Sunday of the year are
        considered to be in week 0, the first Sunday of the year is the start of week 1, the second
        Sunday week 2, *etc.*.
        utcweekr8   r   s     r   r   zexpr.utcweek  s     ")dW55r   c                   t        d|f      S )zJReturns the hours component for the given ``datetime`` value, in UTC time.utchoursr8   r   s     r   r   zexpr.utchours  r   r   c                   t        d|f      S )zLReturns the minutes component for the given ``datetime`` value, in UTC time.
utcminutesr8   r   s     r   r   zexpr.utcminutes  r   r   c                   t        d|f      S )zLReturns the seconds component for the given ``datetime`` value, in UTC time.
utcsecondsr8   r   s     r   r   zexpr.utcseconds   r   r   c                   t        d|f      S )zQReturns the milliseconds component for the given ``datetime`` value, in UTC time.utcmillisecondsr8   r   s     r   r   zexpr.utcmilliseconds  s     ""3h[AAr   c                    t        d|||f      S )aG  
        Returns a new ``Date`` instance that offsets the given ``date`` by the specified time `*unit*`_ in UTC time.

        The optional ``step`` argument indicates the number of time unit steps to offset by (default
        1).

        .. _*unit*:
            https://vega.github.io/vega/docs/api/time/#time-units
        	utcOffsetr8   r   s       r   r  zexpr.utcOffset
  s     "+dD/ABBr   c               "    t        d||||f      S )a  
        Returns an array of ``Date`` instances from ``start`` (inclusive) to ``stop`` (exclusive), with each entry separated by the given time `*unit*`_ in UTC time.

        The optional ``step`` argument indicates the number of time unit steps to take between each
        sequence entry (default 1).

        .. _*unit*:
            https://vega.github.io/vega/docs/api/time/#time-units
        utcSequencer8   r   s        r   r  zexpr.utcSequence  s    $ "-$tT1JKKr   c                   t        d|f      S )zReturns a new *[min, max]* array with the minimum and maximum values of the input array, ignoring ``null``, ``undefined``, and ``NaN`` values.extentr8   r   arrays     r   r  zexpr.extent-       "(UH55r   c                    t        d|||f      S )a  
        Clamps a two-element ``range`` array in a span-preserving manner.

        If the span of the input ``range`` is less than *(max - min)* and an endpoint exceeds either
        the ``min`` or ``max`` value, the range is translated such that the span is preserved and
        one endpoint touches the boundary of the *[min, max]* range. If the span exceeds *(max -
        min)*, the range *[min, max]* is returned.
        
clampRanger8   )r   rangerv   rw   s       r   r
  zexpr.clampRange2  s     ",S0ABBr   c                   t        d||f      S )z<Returns the first index of ``value`` in the input ``array``.indexofr8   r   r  r:   s      r   r  zexpr.indexof@       ")eU^<<r   c                   t        d||f      S )zmTests whether ``value`` lies within (or is equal to either) the first and last values of the ``range`` array.inranger8   )r   r:   r  s      r   r  zexpr.inrangeE  r  r   c                   t        d||f      S )zReturns a new string by concatenating all of the elements of the input ``array``, separated by commas or a specified ``separator`` string.joinr8   )r   r  	separators      r   r  z	expr.joinJ  s    
 "&5)*<==r   c                   t        d||f      S )z;Returns the last index of ``value`` in the input ``array``.lastindexofr8   r  s      r   r  zexpr.lastindexofQ  s     "-%@@r   c                   t        d|f      S )z*Returns the length of the input ``array``.lengthr8   r  s     r   r  zexpr.lengthV  r  r   c                   t        d||f      S )z
        Returns the linearly interpolated value between the first and last entries in the ``array`` for the provided interpolation ``fraction`` (typically between 0 and 1).

        For example, ``alt.expr.lerp([0, 50], 0.5)`` returns 25.
        lerpr8   )r   r  fractions      r   r  z	expr.lerp[  s     "&5(*;<<r   c                   t        d|f      S )z
        Returns the last element in the input ``array``.

        Similar to the built-in ``Array.pop`` method, except that it does not remove the last
        element. This method is a convenient shorthand for ``array[array.length - 1]``.
        peekr8   r  s     r   r  z	expr.peekd  s     "&5(33r   c                   t        d||f      S )z
        Retrieves the value for the specified ``field`` from a given ``array`` of objects.

        The input ``field`` string may include nested properties (e.g., ``foo.bar.bz``).
        pluckr8   )r   r  fields      r   r  z
expr.pluckn  s     "'E5>::r   c                   t        d|f      S )z
        Returns a new array with elements in a reverse order of the input ``array``.

        The first array element becomes the last, and the last array element becomes the first.
        reverser8   r  s     r   r"  zexpr.reversew  s     ")eX66r   c                    t        d|      S )aj  
        Returns an array containing an arithmetic sequence of numbers.

        If ``step`` is omitted, it defaults to 1. If ``start`` is omitted, it defaults to 0. The
        ``stop`` value is exclusive; it is not included in the result. If ``step`` is positive, the
        last element is the largest *start + i * step* less than ``stop``; if ``step`` is negative,
        the last element is the smallest *start + i * step* greater than ``stop``. If the returned
        array would contain an infinite number of values, an empty range is returned. The arguments
        are not required to be integers.
        sequencer8   r   r   s     r   r$  zexpr.sequence  s     "*d33r   c                    t        d|||f      S )z
        Returns a section of ``array`` between the ``start`` and ``end`` indices.

        If the ``end`` argument is negative, it is treated as an offset from the end of the array
        (*alt.expr.length(array) + end*).
        slicer8   )r   r  r   ends       r   r'  z
expr.slice  s     "'E5#+>??r   c                   t        d|f      S )zyReturns the span of ``array``: the difference between the last and first elements, or *array[array.length-1] - array[0]*.spanr8   r  s     r   r*  z	expr.span  s     "&5(33r   c                   t        d|f      S )z,Transforms ``string`` to lower-case letters.lowerr8   r   strings     r   r,  z
expr.lower       "'F955r   c               "    t        d||||f      S )a  
        Pads a ``string`` value with repeated instances of a ``character`` up to a specified ``length``.

        If ``character`` is not specified, a space (' ') is used. By default, padding is added to
        the end of a string. An optional ``align`` parameter specifies if padding should be added to
        the ``'left'`` (beginning), ``'center'``, or ``'right'`` (end) of the input string.
        padr8   )r   r.  r  	characteraligns        r   r1  zexpr.pad  s      "%&&)U)KLLr   c                   t        d|f      S )zv
        Parses the input ``string`` to a floating-point value.

        Same as JavaScript's ``parseFloat``.
        
parseFloatr8   r-  s     r   r5  zexpr.parseFloat  s     ",	::r   c                   t        d|f      S )zn
        Parses the input ``string`` to an integer value.

        Same as JavaScript's ``parseInt``.
        parseIntr8   r-  s     r   r7  zexpr.parseInt  s     "*vi88r   c                    t        d|||f      S )a  
        Returns a new string with some or all matches of ``pattern`` replaced by a ``replacement`` string.

        The ``pattern`` can be a string or a regular expression. If ``pattern`` is a string, only
        the first instance will be replaced. Same as `JavaScript's String.replace`_.

        .. _JavaScript's String.replace:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
        replacer8   )r   r.  patternreplacements       r   r9  zexpr.replace  s    " ")fg{-KLLr   c                    t        d|||f      S )zJReturns a section of ``string`` between the ``start`` and ``end`` indices.	substringr8   )r   r.  r   r(  s       r   r=  zexpr.substring  s     "+s/CDDr   c                   t        d|f      S )zHReturns a trimmed string with preceding and trailing whitespace removed.trimr8   r-  s     r   r?  z	expr.trim  s     "&6)44r   c               "    t        d||||f      S )u  
        Truncates an input ``string`` to a target ``length``.

        The optional ``align`` argument indicates what part of the string should be truncated:
        ``'left'`` (the beginning), ``'center'``, or ``'right'`` (the end). By default, the
        ``'right'`` end of the string is truncated. The optional ``ellipsis`` argument indicates the
        string to use to indicate truncated content; by default the ellipsis character ``…``
        (``…``) is used.
        truncater8   )r   r.  r  r3  ellipsiss        r   rA  zexpr.truncate  s    $ "*vvuh.OPPr   c                   t        d|f      S )z,Transforms ``string`` to upper-case letters.upperr8   r-  s     r   rD  z
expr.upper  r/  r   c                $    t        d||g|      S )a7  
        Merges the input objects ``object1``, ``object2``, etc into a new output object.

        Inputs are visited in sequential order, such that key values from later arguments can
        overwrite those from earlier arguments. Example: ``alt.expr.merge({a:1, b:2}, {a:3}) ->
        {a:3, b:2}``.
        merger8   )r   object1object2r   s       r   rF  z
expr.merge  s     "'GW+Dt+DEEr   c                   t        d|f      S )z
        Formats a (0-6) *weekday* number as a full week day name, according to the current locale.

        For example: ``alt.expr.dayFormat(0) -> "Sunday"``.
        	dayFormatr8   r   r   s     r   rJ  zexpr.dayFormat  s     "+v66r   c                   t        d|f      S )z
        Formats a (0-6) *weekday* number as an abbreviated week day name, according to the current locale.

        For example: ``alt.expr.dayAbbrevFormat(0) -> "Sun"``.
        dayAbbrevFormatr8   rK  s     r   rM  zexpr.dayAbbrevFormat  s     ""3cV<<r   c                   t        d||f      S )a'  
        Formats a numeric ``value`` as a string.

        The ``specifier`` must be a valid `d3-format specifier`_ (e.g., ``alt.expr.format(value,
        ',.2f')``. Null values are formatted as ``"null"``.

        .. _d3-format specifier:
            https://github.com/d3/d3-format/
        formatr8   r   r:   	specifiers      r   rO  zexpr.format#  s     "(UI,>??r   c                   t        d|f      S )z
        Formats a (zero-based) ``month`` number as a full month name, according to the current locale.

        For example: ``alt.expr.monthFormat(0) -> "January"``.
        monthFormatr8   r   r   s     r   rS  zexpr.monthFormat0  s     "-%::r   c                   t        d|f      S )z
        Formats a (zero-based) ``month`` number as an abbreviated month name, according to the current locale.

        For example: ``alt.expr.monthAbbrevFormat(0) -> "Jan"``.
        monthAbbrevFormatr8   rT  s     r   rV  zexpr.monthAbbrevFormat9  s     ""5x@@r   c                   t        d||f      S )a  
        Returns a time format specifier string for the given time `*units*`_.

        The optional ``specifiers`` object provides a set of specifier sub-strings for customizing
        the format; for more, see the `timeUnitSpecifier API documentation`_. The resulting
        specifier string can then be used as input to the `timeFormat`_ or `utcFormat`_ functions,
        or as the *format* parameter of an axis or legend. For example: ``alt.expr.timeFormat(date,
        alt.expr.timeUnitSpecifier('year'))`` or ``alt.expr.timeFormat(date,
        alt.expr.timeUnitSpecifier(['hours', 'minutes']))``.

        .. _*units*:
            https://vega.github.io/vega/docs/api/time/#time-units
        .. _timeUnitSpecifier API documentation:
            https://vega.github.io/vega/docs/api/time/#timeUnitSpecifier
        .. _timeFormat:
            https://vega.github.io/vega/docs/expressions/#timeFormat
        .. _utcFormat:
            https://vega.github.io/vega/docs/expressions/#utcFormat
        timeUnitSpecifierr8   )r   units
specifierss      r   rX  zexpr.timeUnitSpecifierB  s    . ""5z7JKKr   c                   t        d||f      S )a  
        Formats a datetime ``value`` (either a ``Date`` object or timestamp) as a string, according to the local time.

        The ``specifier`` must be a valid `d3-time-format specifier`_ or `TimeMultiFormat object`_.
        For example: ``alt.expr.timeFormat(timestamp, '%A')``. Null values are formatted as
        ``"null"``.

        .. _d3-time-format specifier:
            https://github.com/d3/d3-time-format/
        .. _TimeMultiFormat object:
            https://vega.github.io/vega/docs/types/#TimeMultiFormat
        
timeFormatr8   rP  s      r   r\  zexpr.timeFormat[  s      ",	0BCCr   c                   t        d||f      S )aF  
        Parses a ``string`` value to a Date object, according to the local time.

        The ``specifier`` must be a valid `d3-time-format specifier`_. For example:
        ``alt.expr.timeParse('June 30, 2015', '%B %d, %Y')``.

        .. _d3-time-format specifier:
            https://github.com/d3/d3-time-format/
        	timeParser8   )r   r.  rQ  s      r   r^  zexpr.timeParsem  s     "+	/BCCr   c                   t        d||f      S )ah  
        Formats a datetime ``value`` (either a ``Date`` object or timestamp) as a string, according to `UTC`_ time.

        The ``specifier`` must be a valid `d3-time-format specifier`_ or `TimeMultiFormat object`_.
        For example: ``alt.expr.utcFormat(timestamp, '%A')``. Null values are formatted as
        ``"null"``.

        .. _UTC:
            https://en.wikipedia.org/wiki/Coordinated_Universal_Time
        .. _d3-time-format specifier:
            https://github.com/d3/d3-time-format/
        .. _TimeMultiFormat object:
            https://vega.github.io/vega/docs/types/#TimeMultiFormat
        	utcFormatr8   rP  s      r   r`  zexpr.utcFormat|  s    $ "+y/ABBr   c                   t        d||f      S )a  
        Parses a *string* value to a Date object, according to `UTC`_ time.

        The ``specifier`` must be a valid `d3-time-format specifier`_. For example:
        ``alt.expr.utcParse('June 30, 2015', '%B %d, %Y')``.

        .. _UTC:
            https://en.wikipedia.org/wiki/Coordinated_Universal_Time
        .. _d3-time-format specifier:
            https://github.com/d3/d3-time-format/
        utcParser8   rP  s      r   rb  zexpr.utcParse  s     "*ui.@AAr   c                   t        d||f      S )a  
        Creates a regular expression instance from an input ``pattern`` string and optional ``flags``.

        Same as `JavaScript's RegExp`_.

        .. _JavaScript's RegExp:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
        regexpr8   )r   r:  flagss      r   rd  zexpr.regexp  s     "(We,<==r   c                   t        d||f      S )z
        Evaluates a regular expression ``regexp`` against the input ``string``, returning ``true`` if the string matches the pattern, ``false`` otherwise.

        For example: ``alt.expr.test(/\\d{3}/, "32-21-9483") -> true``.
        rZ   r8   )r   rd  r.  s      r   rZ   z	expr.test  s     "&66*:;;r   c                    t        d|      S )a  
        Constructs a new `RGB`_ color.

        If ``r``, ``g`` and ``b`` are specified, these represent the channel values of the returned
        color; an ``opacity`` may also be specified. If a CSS Color Module Level 3 *specifier*
        string is specified, it is parsed and then converted to the RGB color space. Uses
        `d3-color's rgb function`_.

        .. _RGB:
            https://en.wikipedia.org/wiki/RGB_color_model
        .. _d3-color's rgb function:
            https://github.com/d3/d3-color#rgb
        rgbr8   r%  s     r   rh  zexpr.rgb       "%..r   c                    t        d|      S )a  
        Constructs a new `HSL`_ color.

        If ``h``, ``s`` and ``l`` are specified, these represent the channel values of the returned
        color; an ``opacity`` may also be specified. If a CSS Color Module Level 3 *specifier*
        string is specified, it is parsed and then converted to the HSL color space. Uses
        `d3-color's hsl function`_.

        .. _HSL:
            https://en.wikipedia.org/wiki/HSL_and_HSV
        .. _d3-color's hsl function:
            https://github.com/d3/d3-color#hsl
        hslr8   r%  s     r   rk  zexpr.hsl  ri  r   c                    t        d|      S )a!  
        Constructs a new `CIE LAB`_ color.

        If ``l``, ``a`` and ``b`` are specified, these represent the channel values of the returned
        color; an ``opacity`` may also be specified. If a CSS Color Module Level 3 *specifier*
        string is specified, it is parsed and then converted to the LAB color space. Uses
        `d3-color's lab function`_.

        .. _CIE LAB:
            https://en.wikipedia.org/wiki/Lab_color_space#CIELAB
        .. _d3-color's lab function:
            https://github.com/d3/d3-color#lab
        labr8   r%  s     r   rm  zexpr.lab  ri  r   c                    t        d|      S )a2  
        Constructs a new `HCL`_ (hue, chroma, luminance) color.

        If ``h``, ``c`` and ``l`` are specified, these represent the channel values of the returned
        color; an ``opacity`` may also be specified. If a CSS Color Module Level 3 *specifier*
        string is specified, it is parsed and then converted to the HCL color space. Uses
        `d3-color's hcl function`_.

        .. _HCL:
            https://en.wikipedia.org/wiki/Lab_color_space#CIELAB
        .. _d3-color's hcl function:
            https://github.com/d3/d3-color#hcl
        hclr8   r%  s     r   ro  zexpr.hcl  ri  r   c                   t        d|f      S )a  
        Returns the luminance for the given color ``specifier`` (compatible with `d3-color's rgb function`_).

        The luminance is calculated according to the `W3C Web Content Accessibility Guidelines`_.

        .. _d3-color's rgb function:
            https://github.com/d3/d3-color#rgb
        .. _W3C Web Content Accessibility Guidelines:
            https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
        	luminancer8   )r   rQ  s     r   rq  zexpr.luminance  s     "+	|<<r   c                   t        d||f      S )aS  
        Returns the contrast ratio between the input color specifiers as a float between 1 and 21.

        The contrast is calculated according to the `W3C Web Content Accessibility Guidelines`_.

        .. _W3C Web Content Accessibility Guidelines:
            https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef
        contrastr8   )r   
specifier1
specifier2s      r   rs  zexpr.contrast  s     "*z:.FGGr   c                    t        dd      S )zDReturns the current scenegraph item that is the target of the event.itemr0   r8   r   s    r   rw  z	expr.item  s     "&"--r   c                   t        d|f      S )a  
        Returns the scenegraph group mark item in which the current event has occurred.

        If no arguments are provided, the immediate parent group is returned. If a group name is
        provided, the matching ancestor group item is returned.
        groupr8   r   names     r   ry  z
expr.group  s     "'D733r   c                   t        d|f      S )a8  
        Returns the x- and y-coordinates for the current event as a two-element array.

        If no arguments are provided, the top-level coordinate space of the view is used. If a
        scenegraph ``item`` (or string group name) is provided, the coordinate space of the group
        item is used.
        xyr8   r   rw  s     r   r}  zexpr.xy)  s     "$00r   c                   t        d|f      S )a  
        Returns the x coordinate for the current event.

        If no arguments are provided, the top-level coordinate space of the view is used. If a
        scenegraph ``item`` (or string group name) is provided, the coordinate space of the group
        item is used.
        xr8   r~  s     r   r  zexpr.x4       "#w//r   c                   t        d|f      S )a  
        Returns the y coordinate for the current event.

        If no arguments are provided, the top-level coordinate space of the view is used. If a
        scenegraph ``item`` (or string group name) is provided, the coordinate space of the group
        item is used.
        yr8   r~  s     r   r  zexpr.y?  r  r   c                   t        d|f      S )zUReturns the pixel distance between the first two touch points of a multi-touch event.pinchDistancer8   r   events     r   r  zexpr.pinchDistanceJ  s     "/E8<<r   c                   t        d|f      S )z[Returns the angle of the line connecting the first two touch points of a multi-touch event.
pinchAngler8   r  s     r   r  zexpr.pinchAngleO  s     ",99r   c                   t        d|f      S )zReturns true if the given scenegraph ``item`` is a descendant of the group mark in which the event handler was defined, false otherwise.inScoper8   r~  s     r   r  zexpr.inScopeT  s     ")dW55r   c                   t        d|f      S )z
        Returns the array of data objects for the Vega data set with the given ``name``.

        If the data set is not found, returns an empty array.
        datar8   rz  s     r   r  z	expr.dataY  s     "&4'22r   c                    t        d|||f      S )z
        Tests if the data set with a given ``name`` contains a datum with a ``field`` value that matches the input ``value``.

        For example: ``alt.expr.indata('table', 'category', value)``.
        indatar8   )r   r{  r   r:   s       r   r  zexpr.indatab  s     "(T5%,@AAr   c                    t        d|||f      S )z
        Applies the named scale transform (or projection) to the specified ``value``.

        The optional ``group`` argument takes a scenegraph group mark item to indicate the specific
        scope in which to look up the scale or projection.
        scaler8   r   r{  r:   ry  s       r   r  z
expr.scalem  s     "'D%+?@@r   c                    t        d|||f      S )a   
        Inverts the named scale transform (or projection) for the specified ``value``.

        The optional ``group`` argument takes a scenegraph group mark item to indicate the specific
        scope in which to look up the scale or projection.
        invertr8   r  s       r   r  zexpr.invert}  s     "(T5%,@AAr   c                   t        d||f      S )a9  
        Returns a copy (a new cloned instance) of the named scale transform of projection, or ``undefined`` if no scale or projection is found.

        The optional ``group`` argument takes a scenegraph group mark item to indicate the specific
        scope in which to look up the scale or projection.
        copyr8   r   r{  ry  s      r   r  z	expr.copy  s     "&4-88r   c                   t        d||f      S )a  
        Returns the scale domain array for the named scale transform, or an empty array if the scale is not found.

        The optional ``group`` argument takes a scenegraph group mark item to indicate the specific
        scope in which to look up the scale.
        domainr8   r  s      r   r  zexpr.domain  s     "(T5M::r   c                   t        d||f      S )a  
        Returns the scale range array for the named scale transform, or an empty array if the scale is not found.

        The optional ``group`` argument takes a scenegraph group mark item to indicate the specific
        scope in which to look up the scale.
        r  r8   r  s      r   r  z
expr.range  s     "'D%=99r   c                   t        d||f      S )a   
        Returns the current band width for the named band scale transform, or zero if the scale is not found or is not a band scale.

        The optional ``group`` argument takes a scenegraph group mark item to indicate the specific
        scope in which to look up the scale.
        	bandwidthr8   r  s      r   r  zexpr.bandwidth  s     "+e}==r   c                    t        d|||f      S )a*  
        Returns the number of steps needed within a band scale, based on the ``count`` of domain elements and the inner and outer padding values.

        While normally calculated within the scale itself, this function can be helpful for
        determining the size of a chart's layout.
        	bandspacer8   )r   countpaddingInnerpaddingOuters       r   r  zexpr.bandspace  s     "+|\/RSSr   c               "    t        d||||f      S )a  
        Returns a linear color gradient for the ``scale`` (whose range must be a `continuous color scheme`_) and starting and ending points ``p0`` and ``p1``, each an *[x, y]* array.

        The points ``p0`` and ``p1`` should be expressed in normalized coordinates in the domain [0,
        1], relative to the bounds of the item being colored. If unspecified, ``p0`` defaults to
        ``[0, 0]`` and ``p1`` defaults to ``[1, 0]``, for a horizontal gradient that spans the full
        bounds of an item. The optional ``count`` argument indicates a desired target number of
        sample points to take from the color scale.

        .. _continuous color scheme:
            https://vega.github.io/vega/docs/schemes
        gradientr8   )r   r  p0p1r  s        r   r  zexpr.gradient  s    * "*ub"e.DEEr   c                   t        d||f      S )av  
        Given a linear scale ``domain`` array with numeric or datetime values, returns a new two-element domain array that is the result of panning the domain by a fractional ``delta``.

        The ``delta`` value represents fractional units of the scale range; for example, ``0.5``
        indicates panning the scale domain to the right by half the scale range.
        	panLinearr8   r   r  deltas      r   r  zexpr.panLinear  s     "+??r   c                   t        d||f      S )as  
        Given a log scale ``domain`` array with numeric or datetime values, returns a new two-element domain array that is the result of panning the domain by a fractional ``delta``.

        The ``delta`` value represents fractional units of the scale range; for example, ``0.5``
        indicates panning the scale domain to the right by half the scale range.
        panLogr8   r  s      r   r  zexpr.panLog  s     "(VUO<<r   c                    t        d|||f      S )a  
        Given a power scale ``domain`` array with numeric or datetime values and the given ``exponent``, returns a new two-element domain array that is the result of panning the domain by a fractional ``delta``.

        The ``delta`` value represents fractional units of the scale range; for example, ``0.5``
        indicates panning the scale domain to the right by half the scale range.
        panPowr8   )r   r  r  r|   s       r   r  zexpr.panPow  s     "(VUH,EFFr   c                    t        d|||f      S )a  
        Given a symmetric log scale ``domain`` array with numeric or datetime values parameterized by the given ``constant``, returns a new two-element domain array that is the result of panning the domain by a fractional ``delta``.

        The ``delta`` value represents fractional units of the scale range; for example, ``0.5``
        indicates panning the scale domain to the right by half the scale range.
        	panSymlogr8   )r   r  r  constants       r   r  zexpr.panSymlog   s     "+x/HIIr   c                    t        d|||f      S )a  
        Given a linear scale ``domain`` array with numeric or datetime values, returns a new two-element domain array that is the result of zooming the domain by a ``scaleFactor``, centered at the provided fractional ``anchor``.

        The ``anchor`` value represents the zoom position in terms of fractional units of the scale
        range; for example, ``0.5`` indicates a zoom centered on the mid-point of the scale range.
        
zoomLinearr8   r   r  anchorscaleFactors       r   r  zexpr.zoomLinear  s     ",0MNNr   c                    t        d|||f      S )a  
        Given a log scale ``domain`` array with numeric or datetime values, returns a new two-element domain array that is the result of zooming the domain by a ``scaleFactor``, centered at the provided fractional ``anchor``.

        The ``anchor`` value represents the zoom position in terms of fractional units of the scale
        range; for example, ``0.5`` indicates a zoom centered on the mid-point of the scale range.
        zoomLogr8   r  s       r   r  zexpr.zoomLog  s     ")ffk-JKKr   c               "    t        d||||f      S )a  
        Given a power scale ``domain`` array with numeric or datetime values and the given ``exponent``, returns a new two-element domain array that is the result of zooming the domain by a ``scaleFactor``, centered at the provided fractional ``anchor``.

        The ``anchor`` value represents the zoom position in terms of fractional units of the scale
        range; for example, ``0.5`` indicates a zoom centered on the mid-point of the scale range.
        zoomPowr8   )r   r  r  r  r|   s        r   r  zexpr.zoomPow,  s     ")ffk8-TUUr   c               "    t        d||||f      S )a  
        Given a symmetric log scale ``domain`` array with numeric or datetime values parameterized by the given ``constant``, returns a new two-element domain array that is the result of zooming the domain by a ``scaleFactor``, centered at the provided fractional ``anchor``.

        The ``anchor`` value represents the zoom position in terms of fractional units of the scale
        range; for example, ``0.5`` indicates a zoom centered on the mid-point of the scale range.
        
zoomSymlogr8   )r   r  r  r  r  s        r   r  zexpr.zoomSymlog=  s     ",h0WXXr   c                    t        d|||f      S )a  
        Returns the projected planar area (typically in square pixels) of a GeoJSON ``feature`` according to the named ``projection``.

        If the ``projection`` argument is ``null``, computes the spherical area in steradians using
        unprojected longitude, latitude coordinates. The optional ``group`` argument takes a
        scenegraph group mark item to indicate the specific scope in which to look up the
        projection. Uses d3-geo's `geoArea`_ and `path.area`_ methods.

        .. _geoArea:
            https://github.com/d3/d3-geo#geoArea
        .. _path.area:
            https://github.com/d3/d3-geo#path_area
        geoArear8   r   
projectionfeaturery  s       r   r  zexpr.geoAreaN  s    * ")j'5-IJJr   c                    t        d|||f      S )u  
        Returns the projected planar bounding box (typically in pixels) for the specified GeoJSON ``feature``, according to the named ``projection``.

        The bounding box is represented by a two-dimensional array: [[*x₀*, *y₀*], [*x₁*, *y₁*]],
        where *x₀* is the minimum x-coordinate, *y₀* is the minimum y-coordinate, *x₁* is the
        maximum x-coordinate, and *y₁* is the maximum y-coordinate. If the ``projection`` argument
        is ``null``, computes the spherical bounding box using unprojected longitude, latitude
        coordinates. The optional ``group`` argument takes a scenegraph group mark item to indicate
        the specific scope in which to look up the projection. Uses d3-geo's `geoBounds`_ and
        `path.bounds`_ methods.

        .. _geoBounds:
            https://github.com/d3/d3-geo#geoBounds
        .. _path.bounds:
            https://github.com/d3/d3-geo#path_bounds
        	geoBoundsr8   r  s       r   r  zexpr.geoBoundse  s    0 "+
GU/KLLr   c                    t        d|||f      S )a  
        Returns the projected planar centroid (typically in pixels) for the specified GeoJSON ``feature``, according to the named ``projection``.

        If the ``projection`` argument is ``null``, computes the spherical centroid using
        unprojected longitude, latitude coordinates. The optional ``group`` argument takes a
        scenegraph group mark item to indicate the specific scope in which to look up the
        projection. Uses d3-geo's `geoCentroid`_ and `path.centroid`_ methods.

        .. _geoCentroid:
            https://github.com/d3/d3-geo#geoCentroid
        .. _path.centroid:
            https://github.com/d3/d3-geo#path_centroid
        geoCentroidr8   r  s       r   r  zexpr.geoCentroid  s    * "-*gu1MNNr   c                   t        d||f      S )z
        Returns the scale value for the named ``projection``.

        The optional ``group`` argument takes a scenegraph group mark item to indicate the specific
        scope in which to look up the projection.
        geoScaler8   )r   r  ry  s      r   r  zexpr.geoScale  s     "*z5.ABBr   c                    t        d|||f      S )aV  
        For the hierarchy data set with the given ``name``, returns the shortest path through from the ``source`` node id to the ``target`` node id.

        The path starts at the ``source`` node, ascends to the least common ancestor of the
        ``source`` node and the ``target`` node, and then descends to the ``target`` node.
        treePathr8   )r   r{  sourcetargets       r   r  zexpr.treePath  s     "*tVV.DEEr   c                   t        d||f      S )zFor the hierarchy data set with the given ``name``, returns the array of ancestors nodes, starting with the input ``node``, then followed by each parent up to the root.treeAncestorsr8   )r   r{  nodes      r   r  zexpr.treeAncestors  s     "/D$<@@r   c                    t        dd      S )z
        Returns the current CSS box size (``[el.clientWidth, el.clientHeight]``) of the parent DOM element that contains the Vega view.

        If there is no container element, returns ``[undefined, undefined]``.
        containerSizer0   r8   r   s    r   r  zexpr.containerSize  s     "/266r   c                    t        dd      S )z
        Returns the `window.screen`_ object, or ``{}`` if Vega is not running in a browser environment.

        .. _window.screen:
            https://developer.mozilla.org/en-US/docs/Web/API/Window/screen
        screenr0   r8   r   s    r   r  zexpr.screen  s     "(B//r   c                    t        dd      S )zReturns the current window size (``[window.innerWidth, window.innerHeight]``) or ``[undefined, undefined]`` if Vega is not running in a browser environment.
windowSizer0   r8   r   s    r   r  zexpr.windowSize  s     ",33r   c                $    t        d||g|      S )z
        Logs a warning message and returns the last argument.

        For the message to appear in the console, the visualization view must have the appropriate
        logging level set.
        warnr8   r   s       r   r  z	expr.warn       "&66*AD*ABBr   c                $    t        d||g|      S )z
        Logs an informative message and returns the last argument.

        For the message to appear in the console, the visualization view must have the appropriate
        logging level set.
        infor8   r   s       r   r  z	expr.info  r  r   c                $    t        d||g|      S )z
        Logs a debugging message and returns the last argument.

        For the message to appear in the console, the visualization view must have the appropriate
        logging level set.
        debugr8   r   s       r   r  z
expr.debug  s     "'FF+BT+BCCr   )r   ztype[_ExprRef]r2   strr*   r4   )r:   r   r*   r   )rZ   r   r[   r   r\   r   r*   r   )ro   r   rp   r   r*   r   )r:   r   rv   r   rw   r   r*   r   )r|   r   r*   r   )r   r   r   r   r   r   r*   r   )r:   r   r|   r   r*   r   r)   )NN)r   r   r   r   r*   r   )r:   r   r   r   r   r   r*   r   )r   r   r   r   r   r   r*   r   )rv   r   rw   r   r*   r   )r   r   rv   r   rw   r   r*   r   )NNNNN)r   r   r   r   r   r   r   r   rv   r   r   r   r   r   r*   r   )r   r   r*   r   )r   r   r*   r   )N)r   r   r   r   r   r   r*   r   )
r   r   r   r   r   r   r   r   r*   r   )r  r   r*   r   )r  r   rv   r   rw   r   r*   r   )r  r   r:   r   r*   r   )r:   r   r  r   r*   r   )r  r   r  r   r*   r   )r  r   r  r   r*   r   )r  r   r   r   r*   r   )r   r   r*   r   )r  r   r   r   r(  r   r*   r   )r.  r   r*   r   )
r.  r   r  r   r2  r   r3  r   r*   r   )r.  r   r:  r   r;  r   r*   r   )r.  r   r   r   r(  r   r*   r   )
r.  r   r  r   r3  r   rB  r   r*   r   )rG  r   rH  r   r   r   r*   r   )r   r   r*   r   )r:   r   rQ  r   r*   r   )r   r   r*   r   )rY  r   rZ  r   r*   r   )r.  r   rQ  r   r*   r   )r:  r   re  r   r*   r   )rd  r   r.  r   r*   r   )rQ  r   r*   r   )rt  r   ru  r   r*   r   )r{  r   r*   r   )rw  r   r*   r   )r  r   r*   r   )r{  r   r   r   r:   r   r*   r   )r{  r   r:   r   ry  r   r*   r   )r{  r   ry  r   r*   r   )r  r   r  r   r  r   r*   r   )
r  r   r  r   r  r   r  r   r*   r   )r  r   r  r   r*   r   )r  r   r  r   r|   r   r*   r   )r  r   r  r   r  r   r*   r   )r  r   r  r   r  r   r*   r   )
r  r   r  r   r  r   r|   r   r*   r   )
r  r   r  r   r  r   r  r   r*   r   )r  r   r  r   ry  r   r*   r   )r  r   ry  r   r*   r   )r{  r   r  r   r  r   r*   r   )r{  r   r  r   r*   r   )r+   r,   r-   r.   r   r5   classmethodr7   r=   r?   rA   rD   rG   rJ   rL   rN   rQ   rS   rU   rW   r]   r_   rb   rd   rg   rj   rl   rn   rr   rt   ry   r{   r~   r   r   rw   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r  r  r  r  r"  r$  r'  r*  r,  r1  r5  r7  r9  r=  r?  rA  rD  rF  rJ  rM  rO  rS  rV  rX  r\  r^  r`  rb  rd  rZ   rh  rk  rm  ro  rq  rs  rw  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0   r   r   r2   r2   L   s   Xt # # 7 7 9 9 6 6 9 9 8 8 8 8 8 8 8 8 7 7 9 9 6 6 8 8 8 8 FF "F "	F 
F F 	5 	5 	8 	8 	3 	3 	4 	4 	4 	4 	4 	4 	5 	5 	4 	4 >">)7>>L>	> > 	3 	3 	6 	6 	5 	5 	5 	5 	3 	3 B#B-;BDGB	B B B#B-;BDGB	B B 	< 	< 	0 	0 	5 	5 	3 	3 	4 	4 	3 	3 BFA!A1?A	A A   $ $	LL L 	L 
L L"   $ $	II I 	I 
I I"   $ $	P#P P 	P 
P P" BFD!D1?D	D D   $ $	OO O 	O 
O O$   $ $	LL L 	L 
L L$   $ $	S#S S 	S 
S S$ ?C? ?.<?	? ?  #"	JJ J 	J 
J J$  #"	GG G 	G 
G G$  #"	N#N N 	N 
N N$ - - 
 ##""#'

 
 	

 
 
 
 !
 

 
( 7 7 6 6 < < 7 7 : : 8 8 3 3 8 8 : : : : ? ? 7 7 A A PTD!D)7D?MD	D D   $MM M 	M
 M 
M M& 
 ##""#'WW W 	W
 W W W !W 
W W$ : : 9 9 ? ? : : = = ; ; 6 6 ; ; = = = = B B PTC!C)7C?MC	C C   $LL L 	L
 L 
L L& 6 6 C"C)7C>LC	C C = = = = @D>">/=>	> > A A 6 6 = = 4 4 ; ; 7 7 4 4 QU	@"	@+9	@@N	@		@ 	@ 4 4 6 6 
 %) $MM M "	M
 M 
M M" ; ; 9 9 MM  M $	M 
M M$ 
 #	EE E 	E 
E E 5 5 
 !%#'QQ Q 	Q
 !Q 
Q Q& 6 6 @D
F$
F/=
FMP
F	
F 
F 7 7 = = 
@ 
@ ; ; A A AEL"L0>L	L L0 D"D/=D	D D" D#D0>D	D D C"C/=C	C C& B"B/=B	B B  >B>$>-;>	> > >B<#<-;<	< < / /  / /  / /  / /  = = H'H5CH	H H . . 4 4 1 1 0 0 0 0 = = : : 6 6 3 3 B!B*8BAOB	B B 
 !%	AA A 	A 
A A 
 !%	BB B 	B 
B B 9 9 ;?	;!	;*8	;		; 	; : : ;?	>!	>*8	>		> 	>  (,'+	TT %T %	T 
T T  !%FF F 	F
 F 
F F, @ @ = = 	G#	G,:	GFT	G		G 	G 	J#	J,:	JFT	J		J 	J OO O $	O 
O O LL L $	L 
L L VV V $	V
 !V 
V V  YY Y $	Y
 !Y 
Y Y  
 !%	K"K  K 	K 
K K, 
 !%	M"M  M 	M 
M M2 
 !%	O"O  O 	O 
O O, AE	C'	C0>	C		C 	C 	F!	F+9	FCQ	F		F 	F A A 7 7 0 0 4 4 >B	C#	C-;	CKN	C		C 	C >B	C#	C-;	CKN	C		C 	C >B	D#	D-;	DKN	D		D 	Dr   r2   )	metaclass)r.   
__future__r   systypingr   r   altair.expr.corer   r   altair.vegalite.v5.schema.corer   r4   version_infor   typing_extensionsr   r   typer   r2   	_ExprTyper0   r   r   <module>r     s[    N " 
 % @ >w*;2% 2%jaD8y aDH= 	r   