> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sunra.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Python

[![PyPI - Versione](https://img.shields.io/pypi/v/sunra_client)](https://pypi.org/project/sunra_client)

### Introduzione

La libreria client per Python offre un'interfaccia facile da usare per interagire con i servizi di Sunra.

### Installazione

Per integrare il client nel tuo progetto, installalo usando pip:

```bash theme={null}
pip install sunra-client
```

### Funzionalità

#### Chiamata degli endpoint

Sunra gestisce le richieste degli endpoint tramite un sistema di code, garantendo affidabilità e scalabilità. Usa il metodo `subscribe` per inviare una richiesta e attendere il risultato.

**Esempio:**

```python theme={null}
import sunra_client

result = sunra_client.subscribe(
    "black-forest-labs/flux-kontext-pro/text-to-image",
    arguments={
    	"prompt": 'Una città di mare ispirata allo Studio Ghibli con case colorate, panni stesi e gatti che dormono sui davanzali.',
    	"width": 1024,
    	"height": 768,
    	"output_format": 'jpeg'
    },
    with_logs=True,
    on_enqueue=print,
    on_queue_update=print,
)
print(result)
```

#### Gestione delle code

Gestisci le tue richieste con questi metodi:

##### Invio di una richiesta

Invia una richiesta e recupera il `request_id` per un uso successivo.

**Esempio:**

```python theme={null}
import sunra_client

handler = sunra_client.submit(
    "black-forest-labs/flux-kontext-pro/text-to-image",
    arguments={
      "prompt": 'Una città di mare ispirata allo Studio Ghibli con case colorate, panni stesi e gatti che dormono sui davanzali.',
      "width": 1024,
      "height": 768,
      "output_format": 'jpeg'
    },
    webhook_url="https://optional.webhook.url/for/results",
)
request_id = handler.request_id
```

##### Controllo dello stato della richiesta

Recupera lo stato di una richiesta.

**Esempio:**

```python theme={null}
import sunra_client
status = sunra_client.status(request_id, with_logs=True)
```

##### Recupero dei risultati della richiesta

Recupera il risultato di una richiesta completata.

**Esempio:**

```python theme={null}
import sunra_client
result = sunra_client.result(request_id)
```

#### Caricamento di file

Carica i file per ottenere URL da utilizzare nelle richieste asincrone. Ciò è essenziale per i modelli che elaborano file, come i convertitori da immagine a video o da parlato a testo.

<Note>Dimensione massima del file: 100 MB</Note>

##### Caricamento di un file locale

Puoi caricare facilmente un file dal tuo filesystem locale. Ciò è utile per script o applicazioni che elaborano dati locali.

```python theme={null}
import sunra_client

# Inizializza il client sincrono
client = sunra_client.SyncClient()

try:
  # Carica un file da un percorso specificato
  file_url = client.upload_file(path="percorso/della/tua/immagine.png")
  print(f"File caricato con successo: {file_url}")
  # Questo URL può ora essere utilizzato con un endpoint del modello
except FileNotFoundError:
  print("Errore: il file non è stato trovato nel percorso specificato.")
except Exception as e:
  print(f"Si è verificato un errore: {e}")
```

##### Caricamento di dati in memoria

Puoi anche caricare dati che si trovano in memoria, come il contenuto di un'immagine creata con PIL (Pillow) o un file ricevuto in una richiesta web.

<CodeGroup>
  ```python Immagine PIL theme={null}
  import sunra_client
  from PIL import Image
  import io

  # Inizializza il client sincrono
  client = sunra_client.SyncClient()

  # Crea un'immagine in memoria, ad esempio con Pillow
  image = Image.new("RGB", (600, 400), color = 'red')
  byte_arr = io.BytesIO()
  image.save(byte_arr, format='PNG')
  image_bytes = byte_arr.getvalue()

  # Carica i dati dell'immagine in memoria utilizzando il metodo `upload`
  image_url = client.upload(
      data=image_bytes,
      content_type="image/png"
  )
  print(f"Immagine caricata con successo: {image_url}")
  ```

  ```python Byte grezzi theme={null}
  import sunra_client

  # Inizializza il client sincrono
  client = sunra_client.SyncClient()

  # Alcuni byte grezzi che potresti avere dalla lettura di un file o da una richiesta web
  raw_data = b"alcuni contenuti di file qui"

  # Carica i byte grezzi
  data_url = client.upload(
      data=raw_data,
      content_type="application/octet-stream"
  )
  print(f"Dati caricati con successo: {data_url}")
  ```
</CodeGroup>

### Supporto

Unisciti alla nostra community per aiuto o discussioni:

* **Community Discord**: [Unisciti a noi](https://discord.gg/897qCzvCcU)
* **Repository GitHub**: [Visita qui](https://github.com/sunra-ai/sunra-clients)

Siamo qui per aiutarti!
