  We implement Ananke: an object-oriented Python package for causal inference
with graphical models. At the top of our inheritance structure is an easily
extensible Graph class that provides an interface to several broadly useful
graph-based algorithms and methods for visualization. We use best practices of
object-oriented programming to implement subclasses of the Graph superclass
that correspond to types of causal graphs that are popular in the current
literature. This includes directed acyclic graphs for modeling causally
sufficient systems, acyclic directed mixed graphs for modeling unmeasured
confounding, and chain graphs for modeling data dependence and interference.
  Within these subclasses, we implement specialized algorithms for common
statistical and causal modeling tasks, such as separation criteria for reading
conditional independence, nonparametric identification, and parametric and
semiparametric estimation of model parameters. Here, we present a broad
overview of the package and example usage for a problem with unmeasured
confounding. Up to date documentation is available at
\url{https://ananke.readthedocs.io/en/latest/}.
