# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/20_data.ipynb.

# %% auto 0
__all__ = ['size', 'array', 'tensor', 'nantensor', 'nnmodule', 'neuralode', 'neuralsde', 'neuraldynamics', 'odefunc', 'sdefunc',
           'sdeito', 'brownianintervial', 'groupkey', 'indextype', 'indexlike', 'catindex', 'boolindex', 'seriestype',
           'serieslike', 'serialized', 'datatype', 'shaped', 'graphtype']

# %% ../nbs/20_data.ipynb 6
#| export


# %% ../nbs/20_data.ipynb 8
from typing import TypeAlias

# %% ../nbs/20_data.ipynb 10
#| export


# %% ../nbs/20_data.ipynb 12
from ptyp import Prototype
from matr import (
    nan, nonetype, npnan, npNaN, npNAN, pdna, ptnan, number, npbool, repattern, strtemplate, 
    npmatrix, nparray, recarray, npempty, sparray, spmatrix, 
    pdindex, pdseries, pdcatindex, pddataframe, 
    
    ptsize, ptmodule, ptdataset, ptdataloader, 
    pttensorbase, pttensor, ptinttensor, ptbooltensor, 
    ptfloattensor, plmodule, pldatamodule, 
    
    odefn, sdefn, neurode, neursde, augmenter, 
    ito, brownian, 
    anndata, 
    
    gtbase, gtdata, bgraph, dgraph, 
    lgraph, kgraph, tgraph, mgraph, 
    klgraph, mlgraph, tlgraph
)

# %% ../nbs/20_data.ipynb 14
from .iter import itertype
from .bool import bools, bool01
from .nums import num, nums, numstr
from .nans import nans, nan

# %% ../nbs/20_data.ipynb 16
@Prototype(tuple, ptsize, itertype, attrs=dict(dtype=int))
class size: '''size type (e.g. `tuple`, `torch.Size`, `itertype`)'''

# %% ../nbs/20_data.ipynb 18
@Prototype(nparray, recarray, sparray, itertype, list)
class array: '''array type
    (e.g. `np.array`, `np.recarray`, `sp.sparray`, `itertype`, or `list`)'''

@Prototype(pttensor, ptinttensor, ptbooltensor, ptfloattensor)
class tensor: '''tensor type
    (e.g. `torch.tensor`, `torch.IntTensor`, `torch.BoolTensor`, or `torch.FloatTensor`)'''

@Prototype(tensor, nans, attrs=dict(dtype=nan))
class nantensor: '''tensor of `nan`s'''

# %% ../nbs/20_data.ipynb 20
@Prototype(ptmodule, plmodule)
class nnmodule: ''' module type 
    (e.g. `torch.nn.Module` or `pytorch_lightning.LightningModule`)'''


# %% ../nbs/20_data.ipynb 22
@Prototype(neurode)
class neuralode: '''torchdyn neural ODE'''

@Prototype(neursde)
class neuralsde: '''torchdyn neural SDE'''

@Prototype(neuralode, neuralsde)
class neuraldynamics: '''neuralode or neuralsde'''

# %% ../nbs/20_data.ipynb 23
@Prototype(odefn)
class odefunc: '''`torchdyn.ODEFunc`'''

@Prototype(sdefn)
class sdefunc: '''`torchdyn.SDEFunc`'''

@Prototype(ito)
class sdeito: '''`torchsde.ito`'''

@Prototype(brownian)
class brownianintervial: '''`torchsde.BrownianInterval`'''

# %% ../nbs/20_data.ipynb 26
@Prototype(str, tuple, num, attrs=dict(dtype=numstr))
class groupkey: '''groupby key (e.g. `str`, `tuple`, or `numstr`)'''

@Prototype(list, bools, nums, itertype, pdindex, pdcatindex, nparray)
class indextype: '''index type 
    (e.g. `list`, `bools`, `nums`, `itertype`, `pd.Index`, `pd.CategoricalIndex`, or `np.array`)'''

@Prototype(indextype)
class indexlike: '''index-like type'''

@Prototype(pdcatindex)
class catindex: '''categorical index'''

@Prototype(indexlike, nparray, list, attrs=dict(dtype=bool01))
class boolindex: '''boolean index'''

# %% ../nbs/20_data.ipynb 28
@Prototype(pdseries, nparray, recarray, list, indexlike)
class seriestype: '''series type 
    (e.g. `pd.Series`, `np.array`, `np.recarray`, `list`, or `indexlike`)'''

@Prototype(seriestype)
class serieslike: '''series-like type'''

@Prototype(seriestype)
class serialized: '''serialized'''

# %% ../nbs/20_data.ipynb 30
@Prototype(npmatrix, nparray, recarray, sparray, spmatrix, anndata)
class datatype: '''data type 
    (e.g. `np.matrix`, `np.array`, `np.recarray`, `sp.array`, `sp.matrix`, or `anndata`)'''

@Prototype(datatype, pdindex, pdseries, pdcatindex, pddataframe, tensor, hasattrs=('shape', ))
class shaped: '''shaped `datatype`'''


# %% ../nbs/20_data.ipynb 32
@Prototype(bgraph, dgraph, kgraph, tgraph, lgraph, mgraph, tlgraph, klgraph, mlgraph)
class graphtype: 
    '''graph type (e.g. `BaseGraph`, `DataGraph`, `LandmarkGraph`, `kNNGraph`, `TraditionalGraph`, 
    `MNNGraph`, `kNNLandmarkGraph`, `TraditionalLandmarkGraph`, or `MNNLandmarkGraph`)'''
