"""type annotations and hints module for `anndash`"""

# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/01_hints.ipynb.

# %% auto 0
__all__ = ['REGEX_ANY', 'REGEX_BASIS', 'Anchor', 'Direction', 'Flags', 'Columns', 'Strings', 'Pattern', 'PatternQ', 'AnnOption',
           'DataLike', 'MatchQ', 'PlotlyBaseScatterKeywords', 'PlotlyScatterKeywords', 'PlotlyScatter3DKeywords',
           'DropDownKeywords']

# %% ../nbs/01_hints.ipynb 4
import os, re

try: 
    from typing import Any, TypedDict, TypeAlias, Literal, overload, Sequence
except ImportError:
    from typing_extensions import Any, TypedDict, TypeAlias, Literal, overload, Sequence
        
import numpy as np, pandas as pd

# %% ../nbs/01_hints.ipynb 6
REGEX_ANY = r'.*'
REGEX_BASIS = r'^X_'

# %% ../nbs/01_hints.ipynb 8
Anchor: TypeAlias = Literal['left', 'top', 'right', 'down']

Direction: TypeAlias = Literal['left', 'top', 'right', 'down']

Flags: TypeAlias = re.RegexFlag | int

Columns: TypeAlias = Sequence[str] | pd.Series | pd.Index

Strings: TypeAlias = Sequence[str]

Pattern: TypeAlias = str | re.Pattern[str]

PatternQ: TypeAlias = str | re.Pattern[str] | None

AnnOption: TypeAlias = Literal['obs', 'var', 'obsm', 'varm', 'uns', 'gene']

DataLike: TypeAlias = Sequence | np.ndarray | pd.Series
'''Type alias for data like variables e.g. NumPy's `np.ndarray`, Pandas's `pd.Series`, etc''';

MatchQ: TypeAlias = re.Match[str] | None

# %% ../nbs/01_hints.ipynb 14
class PlotlyBaseScatterKeywords(TypedDict):
    arg: Any
    connectgaps: Any
    customdata: Any
    customdatasrc: Any
    error_x: Any
    error_y: Any
    hoverinfo: Any
    hoverinfosrc: Any
    hoverlabel: Any
    hovertemplate: Any
    hovertemplatesrc: Any
    hovertext: Any
    hovertextsrc: Any
    ids: Any
    idssrc: Any
    legend: Any
    legendgroup: Any
    legendgrouptitle: Any
    legendrank: Any
    legendwidth: Any
    line: Any
    marker: Any
    meta: Any
    metasrc: Any
    mode: Any
    name: Any
    opacity: Any
    showlegend: Any
    stream: Any
    text: Any
    textfont: Any
    textposition: Any
    textpositionsrc: Any
    textsrc: Any
    texttemplate: Any
    texttemplatesrc: Any
    uid: Any
    uirevision: Any
    visible: Any
    x: Any
    xcalendar: Any
    xhoverformat: Any
    xsrc: Any
    y: Any
    ycalendar: Any
    yhoverformat: Any
    ysrc: Any

class PlotlyScatterKeywords(PlotlyBaseScatterKeywords):
    alignmentgroup: Any
    cliponaxis: Any
    dx: Any
    dy: Any
    fill: Any
    fillcolor: Any
    fillgradient: Any
    fillpattern: Any
    groupnorm: Any
    hoveron: Any
    offsetgroup: Any
    orientation: Any
    selected: Any
    selectedpoints: Any
    stackgaps: Any
    stackgroup: Any
    unselected: Any
    x0: Any
    xaxis: Any
    xperiod: Any
    xperiod0: Any
    xperiodalignment: Any
    y0: Any
    yaxis: Any
    yperiod: Any
    yperiod0: Any
    yperiodalignment: Any
    zorder: Any
    
class PlotlyScatter3DKeywords(PlotlyBaseScatterKeywords):
    error_z: Any
    projection: Any
    scene: Any
    surfaceaxis: Any
    surfacecolor: Any
    z: Any
    zcalendar: Any
    zhoverformat: Any
    zsrc: Any
    
class DropDownKeywords(TypedDict):
    xpos: float = 0.
    ypos: float = 0.
    visible: bool = True
    xanchor: Anchor = 'left'
    yanchor: Anchor = 'top'
    direction: Direction = 'down'
    
    @overload
    def __init__(self, xpos: float, ypos: float, visible: bool, xanchor: Anchor, yanchor: Anchor, direction: Direction) -> 'DropDownKeywords': ...
    def __init__(self, *args, **kwargs: 'DropDownKeywords') -> 'DropDownKeywords':
        '''Typed dictionary for initalizing a Drop Down Button.'''
        return super().__init__(self, *(), **kwargs)
