Metadata-Version: 2.4
Name: panchi
Version: 0.3.1b1
Summary: A Python-native linear algebra library for learning, experimentation, and visual intuition
Author-email: Gustavo Galvao e Silva <gustavo.galvaoesilva@gmail.com>
Maintainer-email: Gustavo Galvao e Silva <gustavo.galvaoesilva@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/Gustavo-Galvao-e-Silva/panchi
Project-URL: Documentation, https://github.com/Gustavo-Galvao-e-Silva/panchi#readme
Project-URL: Repository, https://github.com/Gustavo-Galvao-e-Silva/panchi
Project-URL: Bug Tracker, https://github.com/Gustavo-Galvao-e-Silva/panchi/issues
Project-URL: Changelog, https://github.com/Gustavo-Galvao-e-Silva/panchi/releases
Keywords: linear algebra,mathematics,education,vectors,matrices,visualization
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Education
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: matplotlib>=3.5.0
Provides-Extra: manim
Requires-Dist: manim>=0.18.0; extra == "manim"
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.0; extra == "docs"
Requires-Dist: mkdocstrings[python]>=0.24; extra == "docs"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: black>=23.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: mypy>=1.0; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Requires-Dist: pytest-cov>=4.0; extra == "test"
Provides-Extra: all
Requires-Dist: panchi[dev,manim]; extra == "all"
Dynamic: license-file

<div align="center">
    <picture>
        <source media="(prefers-color-scheme: dark)" srcset="docs/assets/logo/panchi_logo_white.png">
        <img src="docs/assets/logo/panchi_logo_color.png" alt="panchi" width=280>
    </picture>
</div>

# panchi

**panchi** is a Python-native linear algebra library designed for learning, experimentation, and visual intuition.

The goal is not performance. The goal is **clarity**.

<div align="center">
    <a href="https://github.com/Gustavo-Galvao-e-Silva/panchi/actions/workflows/panchi-test.yml"><img src="https://github.com/Gustavo-Galvao-e-Silva/panchi/workflows/TestCI/badge.svg" alt="TestCI"></a>
    <a href="https://pypi.org/project/panchi/"><img src="https://img.shields.io/pypi/v/panchi.svg" alt="PyPI version"></a>
    <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.10+-blue.svg" alt="Python 3.10+"></a>
    <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
    <a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black"></a>
</div>

---

## Why panchi?

Most linear algebra libraries optimize for speed and abstraction. panchi optimizes for **understanding**.

panchi is built for students who want to see the math happen, educators who need transparent implementations, and anyone who has ever wondered what linear algebra is *actually about*.

Think of it as a **lab**, not a production engine.

---

## Philosophy

1. **Explicit over implicit** – Algorithms are implemented directly, not delegated to opaque backends
2. **Readable over clever** – Code prioritizes clarity and educational value over terse optimizations and pythonisms
3. **Mathematical over computational** – Objects behave like mathematical entities with proper operator overloading
4. **Visual by default** – Visualization is a first-class feature, not an afterthought
5. **Informative errors** – Error messages guide learning by explaining what went wrong and why

---

## Installation

```bash
pip install panchi
```

Requires Python 3.10+. For optional Manim-powered visualizations:

```bash
pip install panchi[manim]
```

---

## A Taste

```python
import panchi as pan
from panchi.algorithms import rref, solve

# Vectors and matrices behave like their mathematical counterparts
A = pan.Matrix([[1, 2, 3], [2, 5, 7], [0, 1, 2]])
b = pan.Vector([1, 0, 0])

# Solve Ax = b — see the status, not just the answer
result = solve(A, b)
print(result.status)    # 'unique'
print(result.solution)  # the solution vector x

# Row reduction shows every step it takes
reduction = rref(A)
print(reduction)        # full step-by-step walkthrough
print(reduction.rank)   # 3
```

---

## Documentation

Full documentation, user guides, and the API reference are available at
**[https://gustavo-galvao-e-silva.github.io/panchi/](https://gustavo-galvao-e-silva.github.io/panchi/)**

---

## Contributing

panchi welcomes contributions that align with its educational mission. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. Thanks to all of our contributors, whose names can be found in [CONTRIBUTORS.md](CONTRIBUTORS.md).

---

## License

MIT License – see [LICENSE](LICENSE) for details.

---

## Acknowledgments

panchi is inspired by Gilbert Strang's *Introduction to Linear Algebra* and 3Blue1Brown's *Essence of Linear Algebra* — resources that make the subject visible, not just computable.
