Metadata-Version: 2.4
Name: vapour
Version: 0.1.0
Summary: Pluggable remote storage management: one abstract provider layer, independent backends (TeraBox via rclone-extra included).
Author: Joao Lopes
License-Expression: MIT
Keywords: cloud,storage,terabox,rclone,backup
Requires-Python: >=3.13
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: test
Requires-Dist: coverage>=7.6; extra == "test"
Requires-Dist: pytest>=8; extra == "test"
Dynamic: license-file

# Vapour

**Vapour** is a pluggable remote-storage manager for Python 3.13+. A provider-neutral abstract layer defines the contract — `StorageProvider`, `RemoteEntry`, `TransferProgress`, `ProviderConfig`, and `ProviderOptions` — and each backend ships as an independent provider module registered under a short name. The `vapour` command is a thin adapter over the Python API.

## Highlights

- `StorageProvider` contract covering connection checks, quota, listing, stat, mkdir, file and directory transfers, move, copy, delete, and version.
- Providers register through `@register_provider` and load lazily: `create_provider(name)` imports `vapour.<name>` on first use.
- Bundled `terabox` backend through the unofficial `rclone-extra` build; the session cookie lives only in process environment and is never written to a config file.
- Provider-specific settings travel through `ProviderConfig.parameters` (`upload_threads`, `domain` for TeraBox), so new backends need no abstract-layer changes.
- `vapour` CLI with `--provider`, `--root`, `--param KEY=VALUE`, `--json`, and `--progress`.

## Installation

```bash
python -m pip install .
```

For development:

```bash
python -m pip install -e '.[test]'
```

## Quick start

```bash
export TERABOX_COOKIE='<browser ndus cookie>'
vapour providers
vapour quota
vapour ls backups/ --recursive
vapour upload archive.tar backups/archive.tar --progress
```

```python
from vapour import ProviderConfig, create_provider

provider = create_provider("terabox", config=ProviderConfig())
for entry in provider.ls("backups/"):
    print(entry.path, entry.size)
```

## License

MIT.

<!-- exactus:inventory:start -->
## Directory contents

### Files

- [`LICENSE`](LICENSE) — Provide LICENSE project content.
- [`__init__.py`](__init__.py) — Vapour public API: pluggable remote storage management.
- [`__main__.py`](__main__.py) — Execute Vapour as ``python -m vapour``.
- [`cli.py`](cli.py) — Thin command-line adapter over the Vapour provider layer.
- [`provider.py`](provider.py) — Provider-neutral remote storage abstraction for Vapour.
- [`pyproject.toml`](pyproject.toml) — Provide pyproject toml content.
- [`terabox.py`](terabox.py) — TeraBox backend for Vapour using the unofficial rclone-extra build.

### Subdirectories

No subdirectories.

<!-- exactus:inventory:end -->
