Metadata-Version: 2.3
Name: smartjob
Version: 0.0.32
Summary: Little async python library for dealing with GCP/Cloud Run Jobs, GCP/Cloud Batch Jobs, GCP/VertexAI CustomJobs and (local) Docker jobs
Author: Fabien MARTY
Author-email: fab@fabien-marty.dev
Requires-Python: >=3.11,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: docker (>=7.1.0,<8.0.0)
Requires-Dist: google-cloud-aiplatform (>=1.60.0)
Requires-Dist: google-cloud-batch (>=0.17.35,<0.18.0)
Requires-Dist: google-cloud-compute (>=1.28.0,<2.0.0)
Requires-Dist: google-cloud-run (>=0.10.8)
Requires-Dist: rich (>=13.7.1)
Requires-Dist: setuptools (>=72.1.0)
Requires-Dist: stlog (>=0.2.1)
Requires-Dist: tenacity (>=9.0.0,<10.0.0)
Requires-Dist: typer (>=0.12.3)
Description-Content-Type: text/markdown

# Welcome on SmartJob Python Library!

## What is it?

**SmartJob** is a thin Python 3.11+ job library for dealing with [GCP/Cloud Run Jobs](https://cloud.google.com/run), [GCP/Cloud Batch Jobs](https://cloud.google.com/batch) and [GCP/VertexAI CustomJobs](https://cloud.google.com/vertex-ai/docs/training/create-custom-job) and (local) Docker (jobs):

- in a **very simple** way
- in a **unified** way *(with as little difference as possible between the 4 providers)*
- in an **async way** *(not with `asyncio` but with `concurrent.futures.Future` objects; in most cases, this is enough for dealing with complex parallel workflows (including parralelism, chaining, conditionals...) and you don't need to learn another pipeline workflow or switching your whole codebase to `asyncio`)*
- in a **reactive** way *(when you're in the experimentation phase, you can pass the main Python script without rebuilding/pushing a whole docker image at each attempt)*
- in a **production ready** way (with retries, timeouts...)


## Non-features

**SmartJob** is a thin library and not a whole pipeline framework. He tries to be as un-opinionated as possible.

## Quickstart

[Let's go 🚀](https://fabien-marty.github.io/smartjob/tutorials/quickstart/)

## Documentation

[https://fabien-marty.github.io/smartjob/](https://fabien-marty.github.io/smartjob/)

