Metadata-Version: 2.4
Name: acugis-sdk
Version: 1.0.1
Summary: Python SDK for the AcuGIS Cloud geospatial platform
License: MIT
Project-URL: Homepage, https://acugis.com
Project-URL: Documentation, https://github.com/acugis/federation
Project-URL: Repository, https://github.com/acugis/federation
Keywords: gis,geospatial,sdk,acugis,qgis,api
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: GIS
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.28.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Dynamic: license-file

# AcuGIS Python SDK

Python SDK for the [AcuGIS Cloud](https://acugis.com) geospatial platform. Manage maps, datasets, reports, and search programmatically.

```python
from acugis_sdk import Client

client = Client(
    host="https://cloud.acugis.com",
    token="agp_xxxxxxxx",
)

projects = client.maps.list()
client.maps.publish("roads.qgz", title="Road Network")

datasets = client.datasets.list()
client.datasets.download("roads", output="roads.gpkg")

reports = client.reports.list()
results = client.search("roads")
```

## Installation

```bash
pip install acugis-sdk
```

### Development install

```bash
cd acugis-sdk
python -m venv .venv

# Linux / macOS
source .venv/bin/activate

# Windows
.venv\Scripts\activate

pip install -e ".[dev]"
```

## Authentication

### Personal access token (recommended)

```python
from acugis_sdk import Client

client = Client(
    host="https://cloud.acugis.com",
    token="agp_xxxxxxxx",
)
```

### Environment variables

```bash
export ACUGIS_URL=https://cloud.acugis.com
export ACUGIS_TOKEN=agp_xxxxxxxx
```

```python
client = Client()  # uses env / saved config
```

### Saved configuration

If neither `host` nor `token` are passed, the SDK reuses the same configuration as other AcuGIS tools under `~/.config/acugis/` (`config.json` and optional session cookies).

| Environment variable | Purpose |
|----------------------|---------|
| `ACUGIS_TOKEN` | Personal access token |
| `ACUGIS_URL` / `ACUGIS_BASE_URL` | Platform base URL |

## Quick start

```python
from acugis_sdk import Client

client = Client(token="agp_xxxxxxxx", host="https://cloud.acugis.com")

for m in client.maps.list():
    print(m["title"])

client.maps.publish("roads.qgz", title="Road Network")
client.datasets.download("roads", output="roads.gpkg")
results = client.search("roads")
```

## Service objects

| Attribute | Description |
|-----------|-------------|
| `client.maps` | QGIS Publish maps |
| `client.datasets` | GeoVault datasets |
| `client.reports` | Jasper reports |
| `client.search` | Platform-wide search |
| `client.geosync` | GeoSync projects |
| `client.jasper` | Alias for `client.reports` |

## Documentation

See [docs/SDK.md](docs/SDK.md) for full API documentation and [examples/](examples/) for runnable samples.

## Exceptions

SDK methods raise `acugis_sdk.AcugisError` for domain and API failures. They do not print to the console.

## License

MIT — see [LICENSE](LICENSE).
