Metadata-Version: 2.5
Name: gwp-py
Version: 0.3.1
Summary: Python client for the GQL Wire Protocol (GWP)
License-Expression: MIT OR Apache-2.0
Keywords: database,gql,graph,grpc,wire-protocol
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Requires-Python: >=3.12
Requires-Dist: grpcio>=1.78.0
Requires-Dist: protobuf>=6.31.1
Provides-Extra: dev
Requires-Dist: grpcio-tools>=1.78.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.3; extra == 'dev'
Description-Content-Type: text/markdown

# gwp-py

Python client for the GQL Wire Protocol (GWP).

## Install

```bash
uv add gwp-py
```

## Quick Start

```python
import asyncio
from gwp_py import GqlConnection


async def main():
    conn = await GqlConnection.connect("localhost:50051")
    async with conn.create_session() as session:
        cursor = await session.execute("MATCH (n:Person) RETURN n.name")
        async for row in cursor:
            print(row)


asyncio.run(main())
```

## Features

- Async-first API built on `grpcio.aio`
- Full GQL type support (nodes, edges, paths, temporals, lists, maps)
- Transaction support with auto-rollback context managers
- GQLSTATUS error handling
- Typed write counters: `await cursor.counters()` returns a `Counters` with
  `nodes_created`, `edges_created`, `properties_set` and so on, plus
  `contains_updates()`; the raw map stays on `summary.counters`

## License

MIT OR Apache-2.0
