Metadata-Version: 2.4
Name: cluster-uv
Version: 0.0.2
Summary: cluv (from 'cluster' + 'uv') - A versatile tool to work with uv python projects across HPC clusters.
Author-email: Fabrice Normandin <normandf@mila.quebec>
License-File: LICENSE
Requires-Python: >=3.13
Requires-Dist: milatools>=0.1.9
Requires-Dist: platformdirs>=4.9.6
Requires-Dist: pydantic>=2.0
Requires-Dist: pyyaml>=6.0.3
Requires-Dist: rich-argparse>=1.7.2
Requires-Dist: rich>=13.0
Requires-Dist: simple-parsing>=0.1.8
Provides-Extra: hydra
Requires-Dist: hydra-core>=1.3.2; extra == 'hydra'
Requires-Dist: hydra-submitit-launcher>=1.2.0; extra == 'hydra'
Requires-Dist: hydra-zen>=0.16.0; extra == 'hydra'
Requires-Dist: remote-slurm-executor; extra == 'hydra'
Description-Content-Type: text/markdown

# cluv

cluv — sync UV-based Python projects across HPC clusters.

## Status

In early development. Commands are functional, but expect bugs or missing features.

## Requirements

- Python >= 3.13
- [UV](https://docs.astral.sh/uv/)
- SSH access configured for each cluster in `~/.ssh/config`
- A GitHub repository with your project

## Installation

To add `cluv` to your project, use `uv add` or `pip install`:
```bash
uv add cluster-uv
```

To also include the Cluv Hydra launcher:

```bash
uv add cluster-uv[hydra]
```

Install as a command-line tool in an isolated environment:

```bash
uv tool install cluster-uv
```

If you want the bleeding edge version from GitHub, use:

```bash
uv add git+https://github.com/mila-iqia/cluv
```

Then you can run `cluv` directly as a command:

```bash
cluv init
cluv login mila
cluv sync mila
cluv submit mila job.sh
```

## Documentation

* Cluv is documented at https://mila-iqia.github.io/cluv/.
* **Command line help** : Use `cluv --help` or `cluv <command> --help`.
* **Examples** : See the [examples](examples) folder for sample projects using cluv. Each example includes a README with instructions specific to that project.

## Quick Start

1. Initialize your project with:
   ```bash
   cluv init
   ```
2. Establish SSH connections to all configured clusters:
   ```bash
   cluv login
   ```
3. Sync your project to all clusters and run `uv sync` on each:
   ```bash
   cluv sync
   ```

## Configuration

Add a `[tool.cluv]` section to the `pyproject.toml` of your project to manage the behavior of the tool.
The command `cluv init` will add a default config if it doesn't already exists in the `.toml`.

See the config at the project root for an example, or refer to the [docs](https://mila-iqia.github.io/cluv/).
