Metadata-Version: 2.4
Name: adbc-driver-hardcharger
Version: 2.0.0
Summary: ADBC driver for Hardcharger™, GizmoData™'s DuckDB 2.0 server: a native Go driver with Python bindings
Author-email: GizmoData <support@gizmodata.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/gizmodata/hardcharger-adbc
Project-URL: Repository, https://github.com/gizmodata/hardcharger-adbc
Project-URL: Changelog, https://github.com/gizmodata/hardcharger-adbc/blob/main/CHANGELOG.md
Keywords: adbc,arrow,dbapi,duckdb,hardcharger,warp-sql
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Database
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: adbc-driver-manager>=1.12.0
Requires-Dist: pyarrow>=26.0.0
Provides-Extra: test
Requires-Dist: pytest>=9.1.1; extra == "test"
Requires-Dist: cryptography>=50.0.2; extra == "test"
Requires-Dist: pyjwt>=2.15.1; extra == "test"
Provides-Extra: dev
Requires-Dist: ruff>=0.17.1; extra == "dev"
Requires-Dist: build>=1.6.1; extra == "dev"
Dynamic: license-file

# adbc-driver-hardcharger

The [ADBC](https://arrow.apache.org/adbc/) driver for
[Hardcharger™](https://github.com/gizmodata/hardcharger), GizmoData™'s DuckDB 2.0 server: a
native Go driver (built on the [Warp SQL ADBC driver](https://github.com/gizmodata/warp-sql-adbc))
whose library ships in this wheel, with Python DB-API bindings. `hardcharger://` URIs (port
31337 by default), query and session tags, `hardcharger.*` settings, browser sign-in, and an
ADBC driver manifest so `driver = "hardcharger"` works in every ADBC language.

```bash
pip install adbc-driver-hardcharger     # this client
pip install hardcharger                 # the Hardcharger server, started from Python
pip install "hardcharger[adbc]"         # both
```

```python
from adbc_driver_hardcharger import dbapi as hardcharger

with hardcharger.connect(uri="hardcharger://localhost?tls=false", username="hardcharger", password="change-me") as conn:
    with conn.cursor() as cur:
        cur.execute(operation="SELECT 42 AS answer, ? AS greeting", parameters=["hello"])
        print(cur.fetch_arrow_table())
```

`hardcharger://host[:port]` is HTTPS; `?tls=false` is plain HTTP for development. See the
[repository README](https://github.com/gizmodata/hardcharger-adbc#readme) for tags, settings,
browser sign-in, client certificate sign-in (`auth_type="client_certificate"`), token exchange
with your identity provider's tokens (`subject_token=`), the TLS server name
(`tls_server_name=`), reading the access token (`conn.access_token`, a bearer secret), attaching to an existing session (`session_id=`; with several replicas
it works only when routing reaches the replica that holds the session), the driver manifest,
and the C/C++ and Go examples.

Apache License 2.0. Built by [GizmoData](https://gizmodata.com).

## Connection profiles

Install the manifest with `python -m adbc_driver_hardcharger.manifest`, then reuse a standard
ADBC TOML profile (`driver = "hardcharger"`) with `hardcharger.connect(profile="prod")`,
`hardcharger.connect(uri="profile://prod")`, or an absolute profile path. The generic
`adbc_driver_manager.dbapi.connect(profile="prod")` uses the same file. See the
[profile setup and complete examples](https://github.com/gizmodata/hardcharger-adbc#-adbc-connection-profiles)
for search paths, environment-variable credentials, browser SSO and option overrides.
