Saltar al contenido principal
Cuando se realiza una petición, esta devuelve la información de la aplicación y la almacena en caché dentro del propio objeto Application. Esto resulta útil si necesitas acceder a esa información de nuevo en un tiempo relativamente corto, es decir, cuando no vale la pena hacer una nueva petición a la API para obtener datos actualizados. En esos casos, puedes acceder a Application.cache.
import squarecloud as square

client = square.Client('API_KEY')

async def example():
    app = await client.app('application_id')

    # Note that, as no requests have been made, * in the cache will be None
    print(app.cache.logs)    # None
    print(app.cache.status)  # None
    print(app.cache.backup)  # None

    # Now let's make some requests
    await app.logs()
    await app.status()
    await app.backup()

    # The cache has been updated 🤯
    print(app.cache.logs)    # LogsData(...)
    print(app.cache.status)  # StatusData(...)
    print(app.cache.backup)  # BackupData(...)

Realizar peticiones sin actualizar la caché

Si, por algún motivo, no quieres actualizar la caché al realizar una petición, puedes pasar el argumento update_cache=False.
import squarecloud as square

client = square.Client('API_KEY')

async def example():
    app = await client.app('application_id')
    await app.status(update_cache=False)
    print(app.cache.status)  # None
Si los argumentos que pasas a cache.update no son una instancia de StatusData, LogsData o BackupData, se lanzará un error SquareException.

Limpiar la caché manualmente

Puedes limpiar la caché manualmente usando cache.clear.
import squarecloud as square

client = square.Client('API_KEY')


async def example():
    app = await client.app('application_id')

    await app.status()
    print(app.cache.status)  # StatusData(...)
    app.cache.clear()
    print(app.cache.status)  # None

Actualizar la caché manualmente

También puedes actualizarla manualmente usando el método cache.update.
import squarecloud as square

client = square.Client('API_KEY')


async def example():
    app = await client.app('application_id')

    logs = await app.logs()
    status = await app.status()
    backup = await app.backup()

    app.cache.clear()  # Clears the cache
    app.cache.update(status, logs, backup)  # Updates the cache

    print(app.cache.logs)    # LogsData(...)
    print(app.cache.status)  # StatusData(...)
    print(app.cache.backup)  # BackupData(...)