MCPcopy Index your code
hub / github.com/engarde-dev/engarde

github.com/engarde-dev/engarde @v0.4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.0 ↗ · + Follow
145 symbols 336 edges 12 files 37 documented · 26%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Engarde

Build Status

A python package for defensive data analysis. Documentation is at readthedocs.

Dependencies

  • pandas

Supports python 2.7+ and 3.4+

Why?

Data are messy. But, our analysis often depends on certain assumptions about our data that should be invariant across updates to your dataset. engarde is a lightweight way to explicitly state your assumptions and check that they're actually true.

This is especially important when working with flat files like CSV that aren't bound for a more structured destination (e.g. SQL or HDF5).

Examples

There are two main ways of using the library, which correspond to the two main ways I use pandas: writing small scripts or interactively at the interpreter.

First, as decorators, which are most useful in .py scripts The basic idea is to write each step of your ETL process as a function that takes and returns a DataFrame. These functions can be decorated with the invariants that should be true at that step in the process.

from engarde.decorators import none_missing, unique_index, is_shape

@none_missing()
def f(df1, df2):
    return df1.add(df2)

@is_shape((1290, 10))
@unique_index
def make_design_matrix('data.csv'):
    out = ...
    return out

Second, interactively. The cleanest way to integrate this is through the pipe method, introduced in pandas 0.16.2 (June 2015).

>>> import engarde.checks as dc
>>> (df1.reindex_like(df2)
...     .pipe(dc.unique_index)
...     .cumsum()
...     .pipe(dc.within_range, (0, 100))
... )

See Also

Core symbols most depended-on inside this repo

write
called by 17
docs/sphinxext/ipython_directive.py
process_input_line
called by 13
docs/sphinxext/ipython_directive.py
get
called by 6
versioneer.py
get_root
called by 5
versioneer.py
get_config_from_root
called by 5
versioneer.py
get_versions
called by 5
versioneer.py
run_command
called by 4
versioneer.py
clear_cout
called by 4
docs/sphinxext/ipython_directive.py

Shape

Function 105
Method 26
Class 12
Route 2

Languages

Python100%

Modules by API surface

versioneer.py41 symbols
tests/test_checks.py25 symbols
docs/sphinxext/ipython_directive.py25 symbols
engarde/_version.py21 symbols
engarde/decorators.py17 symbols
engarde/checks.py11 symbols
engarde/generic.py4 symbols
docs/sphinxext/ipython_console_highlighting.py1 symbols

For agents

$ claude mcp add engarde \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact