Metadata-Version: 2.4
Name: entie
Version: 0.1.0
Summary: MongoDB table helpers on entei-core — PyMongo only, no pydantable-native
Author-email: Odos Matthews <odosmatthews@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/eddiethedean/entie
Project-URL: Repository, https://github.com/eddiethedean/entie
Project-URL: Issues, https://github.com/eddiethedean/entie/issues
Keywords: dataframe,mongodb,pymongo,entei-core,data-engineering
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: entei-core<2,>=0.1.0
Requires-Dist: pymongo>=4.6
Requires-Dist: typing-extensions>=4.5
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: mongomock>=4.1; extra == "dev"
Requires-Dist: ruff>=0.6; extra == "dev"

# Entie

**MongoDB helpers on [entei-core](../entei-core/)** — PyMongo plus column materialization. This package does **not** use **pydantable-native** or the pydantable Rust executor.

## Install

```bash
pip install entie
```

From the monorepo (install core first, then entie):

```bash
pip install -e ./packages/entei-core
pip install -e ./packages/entie
```

## Quick start

```python
from entie import EnteiDataFrame, connect

db = connect("mongodb://localhost:27017", database="app")
coll = db.collection("items")
coll.insert_many([{"x": 1}, {"x": 2}])

df = EnteiDataFrame.from_collection(coll)
assert df.collect(as_lists=True)["x"] == [1, 2]

filtered = df.filter_rows(lambda r: r.get("x", 0) > 1).select("x")
assert filtered.collect(as_lists=True) == {"x": [2]}
```

Connection string can be omitted if `ENTIE_URI` is set (similar to `MOLTRES_DSN` for moltres).

## What this package provides

- **`connect`** — `EntieMongoClient` / `EntieDatabase` wrappers
- **`EnteiDataFrame`** — lazy view; **`collect`**, **`filter_rows`**, **`select`** (pure Python)
- Re-exports **`MongoRoot`** and materialization helpers from **entei-core**
- **`col`**, **`lit`**, **`column`** — lightweight helpers

## License

MIT
