Metadata-Version: 2.1
Name: grd
Version: 0.0.1
Summary: Literal Enum
Home-page: https://github.com/dsm-72/grd
Author: dsm-72
Author-email: sumner.magruder@yale.edu
License: Apache Software License 2.0
Keywords: nbdev jupyter notebook python
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.11
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: dev

# grd

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

## Developer Guide

### Setup

``` sh
# create conda environment
$ mamba env create -f env.yml

# update conda environment
$ mamba env update -n grd --file env.yml
```

### Install

``` sh
pip install -e .

# install from pypi
pip install grd
```

### nbdev

``` sh
# activate conda environment
$ conda activate grd

# make sure the grd package is installed in development mode
$ pip install -e .

# make changes under nbs/ directory
# ...

# compile to have changes apply to the grd package
$ nbdev_prepare
```

### Publishing

``` sh
# publish to pypi
$ nbdev_pypi

# publish to conda
$ nbdev_conda --build_args '-c conda-forge'
$ nbdev_conda --mambabuild --build_args '-c conda-forge -c dsm-72'
```

# Usage

## Installation

Install latest from the GitHub
[repository](https://github.com/dsm-72/grd):

``` sh
$ pip install git+https://github.com/dsm-72/grd.git
```

or from [conda](https://anaconda.org/dsm-72/grd)

``` sh
$ conda install -c dsm-72 grd
```

or from [pypi](https://pypi.org/project/grd/)

``` sh
$ pip install grd
```

## Documentation

Documentation can be found hosted on GitHub
[repository](https://github.com/dsm-72/grd)
[pages](https://dsm-72.github.io/grd/). Additionally you can find
package manager specific guidelines on
[conda](https://anaconda.org/dsm-72/grd) and
[pypi](https://pypi.org/project/grd/) respectively.

``` python
abc, d = Literal['a', 'b', 'c'], 'd'
```

``` python
class ABC_Guard(TTypeGuard):
    types = abc

ABC_Guard.istype('bz'), ABC_Guard.istype('b')
```

    (False, True)

``` python
class ABCD_Guard(TTypeGuard):
    types = Union[abc, d]
    
ABCD_Guard.istype('b'), ABCD_Guard.istype('d')
```

    (True, True)

``` python
import numpy as np
from typing import TypeAlias
ndarray: TypeAlias = np.ndarray

class NPArrayGuard(TTypeGuard):
    types = ndarray

NPArrayGuard.istype([1,2,3]), NPArrayGuard.istype(np.array([1,2,3]))
```

    (False, True)
