o
    +&]i~                     @  s2  U d 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mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN ddlOmPZQ erddlRZRddlSmTZT dd	lmZmUZU eRjVd
krddlmWZW nddlXmWZW ddlYmZZZ g dZ[d+ddZ\d,ddZ]eQj^Z^eQj_Z_eQj`Z`dead< 	 dead< 	 d-ddZbed.d!d"Zced/d$d"Zcd0d&d"Zcd1d)d*ZddS )2z)Customizing chart configuration defaults.    )annotations)TYPE_CHECKINGAny)overload)FAreaConfigKwdsAutoSizeParamsKwdsAxisConfigKwdsAxisResolveMapKwdsBarConfigKwdsBindCheckboxKwdsBindDirectKwdsBindInputKwdsBindRadioSelectKwdsBindRangeKwdsBoxPlotConfigKwdsBrushConfigKwdsCompositionConfigKwds
ConfigKwdsDateTimeKwdsDerivedStreamKwdsErrorBandConfigKwdsErrorBarConfigKwds$FeatureGeometryGeoJsonPropertiesKwdsFormatConfigKwdsGeoJsonFeatureCollectionKwdsGeoJsonFeatureKwdsGeometryCollectionKwdsGradientStopKwdsHeaderConfigKwdsIntervalSelectionConfigKwds&IntervalSelectionConfigWithoutTypeKwdsLegendConfigKwdsLegendResolveMapKwdsLegendStreamBindingKwdsLinearGradientKwdsLineConfigKwdsLineStringKwds
LocaleKwdsMarkConfigKwdsMergedStreamKwdsMultiLineStringKwdsMultiPointKwdsMultiPolygonKwdsNumberLocaleKwdsOverlayMarkDefKwdsPaddingKwds	PointKwdsPointSelectionConfigKwds#PointSelectionConfigWithoutTypeKwdsPolygonKwdsProjectionConfigKwdsProjectionKwdsRadialGradientKwdsRangeConfigKwdsRectConfigKwdsResolveKwds
RowColKwdsScaleConfigKwdsScaleInvalidDataConfigKwdsScaleResolveMapKwdsSelectionConfigKwdsStepKwdsStyleConfigIndexKwdsThemeConfigTickConfigKwdsTimeIntervalStepKwdsTimeLocaleKwdsTitleConfigKwdsTitleParamsKwdsTooltipContentKwdsTopLevelSelectionParameterKwdsVariableParameterKwdsViewBackgroundKwdsViewConfigKwds)themesN)Callable)r   Literal)      )LiteralString)Plugin)Mr   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   activeenablegetnamesoptionsregister
unregisternamerQ   rT   boolreturn4Callable[[Plugin[ThemeConfig]], Plugin[ThemeConfig]]c                  s   d fdd}|S )a?  
    Decorator for registering a theme function.

    Parameters
    ----------
    name
        Unique name assigned in registry.
    enable
        Auto-enable the wrapped theme.

    Examples
    --------
    Register and enable a theme::

        import altair as alt
        from altair import theme


        @theme.register("param_font_size", enable=True)
        def custom_theme() -> theme.ThemeConfig:
            sizes = 12, 14, 16, 18, 20
            return {
                "autosize": {"contains": "content", "resize": True},
                "background": "#F3F2F1",
                "config": {
                    "axisX": {"labelFontSize": sizes[1], "titleFontSize": sizes[1]},
                    "axisY": {"labelFontSize": sizes[1], "titleFontSize": sizes[1]},
                    "font": "'Lato', 'Segoe UI', Tahoma, Verdana, sans-serif",
                    "headerColumn": {"labelFontSize": sizes[1]},
                    "headerFacet": {"labelFontSize": sizes[1]},
                    "headerRow": {"labelFontSize": sizes[1]},
                    "legend": {"labelFontSize": sizes[0], "titleFontSize": sizes[1]},
                    "text": {"fontSize": sizes[0]},
                    "title": {"fontSize": sizes[-1]},
                },
                "height": {"step": 28},
                "width": 350,
            }

    We can then see the ``name`` parameter displayed when checking::

        theme.active
        "param_font_size"

    Until another theme has been enabled, all charts will use defaults set in ``custom_theme()``::

        from altair.datasets import data

        source = data.stocks()
        lines = (
            alt.Chart(source, title=alt.Title("Stocks"))
            .mark_line()
            .encode(x="date:T", y="price:Q", color="symbol:N")
        )
        lines.interactive(bind_y=False)

    funcPlugin[ThemeConfig]r\   c                  s   t |   rt | S N)	_register_themesrT   )r^   rT   rZ    J/var/www/html/IGF-ODF-V3/venv/lib/python3.10/site-packages/altair/theme.pydecorate   s   

zregister.<locals>.decorateN)r^   r_   r\   r_   rd   )rZ   rT   rf   rd   rc   re   rX      s   ?rX   r_   c                 C  s0   t | d}|du rd| dt }t||S )z
    Remove and return a previously registered theme.

    Parameters
    ----------
    name
        Unique name assigned during ``alt.theme.register``.

    Raises
    ------
    TypeError
        When ``name`` has not been registered.
    NzFound no theme named z! in registry.
Registered themes:
)ra   rV   	TypeError)rZ   pluginmsgrd   rd   re   rY      s   
rY   strrS   dict[str, Any]rW   	list[str]c                   C  s   t S r`   )__all__rd   rd   rd   re   __dir__     rn   Literal['active']c                 C     d S r`   rd   rZ   rd   rd   re   __getattr__  ro   rs   Literal['options']c                 C  rq   r`   rd   rr   rd   rd   re   rs      ro   r   c                 C  s4   | dkrt jS | dkrt jS dtd| }t|)NrS   rW   zmodule z has no attribute )rb   rS   rW   __name__AttributeError)rZ   ri   rd   rd   re   rs   "  s   fnPlugin[ThemeConfig] | Nonec                C  sJ   |d u rt j| d S t |r|t j| < |S t|jd|}t|)Nz is not a callable theme

)rb   _pluginspopplugin_typetyperu   rg   )rZ   rw   ri   rd   rd   re   ra   ,  s   

ra   )rZ   rQ   rT   r[   r\   r]   )rZ   rQ   r\   r_   )r\   rl   )rZ   rp   r\   rj   )rZ   rt   r\   rk   )rZ   rj   r\   r   )rZ   rQ   rw   rx   r\   rx   )e__doc__
__future__r   typingr   r   r   	_overload!altair.vegalite.v6.schema._configr   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   altair.vegalite.v6.themerL   rb   syscollections.abcrM   rN   version_inforQ   typing_extensionsaltair.utils.plugin_registryrR   rm   rX   rY   rT   rU   rV   __annotations__rn   rs   ra   rd   rd   rd   re   <module>   s@    " H

Q
H


