Metadata-Version: 2.4
Name: entie
Version: 0.2.0
Summary: MongoDB table helpers on entei-core — PyMongo only, no pydantable-native
Author-email: Odos Matthews <odosmatthews@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/eddiethedean/entie
Project-URL: Documentation, https://entie.readthedocs.io/
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.2.0
Requires-Dist: pymongo>=4.6
Requires-Dist: typing-extensions>=4.5
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1; extra == "dev"
Requires-Dist: mongomock>=4.1; extra == "dev"
Requires-Dist: ruff>=0.6; extra == "dev"
Requires-Dist: ty>=0.0.20; extra == "dev"
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.5; extra == "docs"
Requires-Dist: mkdocstrings[python]>=0.25; extra == "docs"

# entie

[![PyPI version](https://img.shields.io/pypi/v/entie.svg)](https://pypi.org/project/entie/)
[![Python versions](https://img.shields.io/pypi/pyversions/entie.svg)](https://pypi.org/project/entie/)

**MongoDB table helpers** on [**entei-core**](https://github.com/eddiethedean/entie/tree/main/packages/entei-core): `connect`, **`EntieDatabase`** / **`EntieMongoClient`**, **`EnteiDataFrame`**, **`Records`**, and **`col` / `lit` / `column`**.

Aligned with [moltres](https://github.com/eddiethedean/moltres) ergonomics (`connect`, `table`, `Records.insert_into`) for document databases — **no** pydantable-native.

- **Documentation:** [entie.readthedocs.io](https://entie.readthedocs.io/) · [docs on GitHub](https://github.com/eddiethedean/entie/tree/main/docs)
- **Changelog:** [CHANGELOG](https://github.com/eddiethedean/entie/blob/main/CHANGELOG.md)
- **See also:** [**entei-core**](https://pypi.org/project/entei-core/) for `MongoRoot` / materialization only

## Install

```bash
pip install entie
```

From the monorepo:

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

## Features

- **`connect`** — PyMongo entrypoint; `ENTIE_URI` when `uri` is omitted (like `MOLTRES_DSN`).
- **`EntieDatabase.table` / `.collection`** — access a collection; **`tables()`** lists names.
- **`EnteiDataFrame`** — lazy read + `filter_rows` + `select` + `collect` (pure Python).
- **`Records.from_list(..., database=db).insert_into("name")`** — bulk insert (moltres-style).
- Re-exports **`MongoRoot`** and materialization helpers from **entei-core**.

## Example

```python
from entie import EnteiDataFrame, Records, connect

db = connect("mongodb://localhost:27017", database="app")

Records.from_list([{"x": 1}], database=db).insert_into("items")

df = EnteiDataFrame.from_collection(db.table("items"), fields=("x",))
df.collect(as_lists=True)  # {"x": [1]}  (+ Mongo _id if fields not fixed)
```

## License

MIT
