Migración de 0.5.x a 1.0.0

Esta guía cubre los cambios incompatibles introducidos en v1.0.0 y cómo actualizar tu código.

Cambio en la firma de create_invoice()

El parámetro asset ya no es el primer argumento posicional y ahora es opcional. amount es el primer argumento posicional.

Antes (0.5.x):

::

Después (1.0.0):

::

Si ya estabas usando asset= y amount= como argumentos con nombre, el único cambio es que asset ahora es opcional (requerido solo para facturas de criptomonedas).

Facturas en moneda fiat

El cambio en la firma habilita el nuevo soporte para facturas en moneda fiat. Para crear una factura fiat, omite asset y pasa currency_type, fiat y accepted_assets en su lugar:

invoice = client.create_invoice(
    amount=10.00,
    currency_type="fiat",
    fiat="USD",
    accepted_assets="USDT,TON,BTC",
)

ExchangeRate.source ahora es un str

ExchangeRate.source cambió del enum Asset a un str simple porque la API puede devolver códigos de moneda fiat que no son miembros de Asset.

Antes (0.5.x):

rates = client.get_exchange_rates()
btc_usd = next(r for r in rates if r.source == Asset.BTC and r.target == "USD")

Después (1.0.0):

rates = client.get_exchange_rates()
btc_usd = next(r for r in rates if r.source == "BTC" and r.target == "USD")

Mensajes de error de validación

La validación interna se generalizó para soportar cheques y transferencias. Si tu código compara mensajes de excepción de create_invoice o get_invoices, actualízalo de la siguiente manera:

Mensaje en 0.5.x

Mensaje en 1.0.0

"invoice_ids string cannot be empty"

"ids string cannot be empty"

"invoice_ids list cannot be empty"

"ids list cannot be empty"

"invoice_ids string must contain positive integer IDs"

"ids string must contain positive integer IDs"

"invoice_ids list must contain positive integers"

"ids list must contain positive integers"

"invoice_ids must be a comma-separated string or list of integers"

"ids must be a comma-separated string or list of integers"

Nuevos endpoints

Estos son aditivos y no rompen el código existente, pero vale la pena mencionarlos:

  • delete_invoice(invoice_id)

  • create_check(asset, amount, ...) / delete_check(check_id)

  • get_checks(...) con paginación mediante iter_checks() e iter_check_pages()

  • get_transfers(...) con paginación mediante iter_transfers() e iter_transfer_pages()

  • get_stats(start_at, end_at)

  • Parámetro de filtro fiat en get_invoices()

Todos los nuevos endpoints están disponibles tanto en CryptoBotClient como en AsyncCryptoBotClient.