Skip to main content

tu-ruc-python-client

Tu RUC y Python

Cliente Python para consultar contribuyentes en la API de TuRuc Paraguay. Incluye un cliente síncrono y uno asíncrono que reutilizan sus conexiones.

Instalación

Requiere Python 3.11 o posterior.

pip install tu_ruc_python_client

La instalación incluye su única dependencia, HTTPX.

Cliente síncrono

Reutiliza una instancia para varias consultas. El bloque with cierra sus conexiones al terminar, incluso si ocurre un error.

from tu_ruc_python_client import TuRucClient

with TuRucClient() as client:
    resultados = client.get_contribuyente_by_search("juan perez", page=0)
    contribuyente = client.get_contribuyente_by_ruc("5898204-3")
    print(resultados)
    print(contribuyente)

Cliente asíncrono

Reutiliza la misma instancia dentro de un bucle de eventos. async with cierra sus conexiones; asyncio.gather permite hacer consultas concurrentes.

import asyncio

from tu_ruc_python_client import AsyncTuRucClient


async def main():
    async with AsyncTuRucClient() as client:
        resultados = await asyncio.gather(
            client.get_contribuyente_by_search("juan perez"),
            client.get_contribuyente_by_search("maria lopez"),
        )
        print(resultados)


asyncio.run(main())

Crea el cliente una sola vez, fuera del código que repite las consultas, para conservar las conexiones. Para procesar lotes grandes, limita la concurrencia según la capacidad de la API.

Parámetros y respuestas

Ambos clientes exponen los mismos métodos:

Método Parámetros Resultado
get_contribuyente_by_search(search, page=0) Texto de 3 a 50 caracteres; página entera de 0 a 10 Objeto con contribuyentes y paginas
get_contribuyente_by_ruc(ruc) RUC o CI como texto, por ejemplo 5898204-3 Objeto del contribuyente

Los métodos devuelven el campo data de la respuesta JSON de la API:

  • Si la API no devuelve datos, el resultado es None, también ante un error HTTP como 400.
  • Los estados HTTP de error no se convierten en excepciones.
  • Puedes buscar textos con &, +, espacios y acentos; se envían tal cual.

Configuración

Los constructores aceptan estos argumentos opcionales por nombre:

with TuRucClient(base_url="https://turuc.com.py/", timeout=10.0) as client:
    resultado = client.get_contribuyente_by_search("A&B ÑANDÚ + CIA")
  • timeout: 10 segundos por defecto. Se aplica por separado a la conexión, la lectura, la escritura y la espera de una conexión libre; no limita la duración total de la consulta. timeout=None desactiva los límites.
  • Ambos clientes siguen las redirecciones.

Si no usas un bloque with, cierra el cliente al terminar con client.close() o await client.aclose().

Errores

  • Parámetros inválidos: los métodos lanzan ValueError o tu_ruc_python_client.exceptions.LengthError antes de consultar la API.
  • Fallos de red y timeouts: se propagan los errores de HTTPX (httpx.RequestError y sus subclases).
import httpx

from tu_ruc_python_client import TuRucClient

try:
    with TuRucClient(timeout=10.0) as client:
        resultado = client.get_contribuyente_by_search("juan perez")
except httpx.TimeoutException:
    print("La consulta excedió el tiempo de espera")
except httpx.RequestError as exc:
    print(f"No se pudo completar la consulta: {exc}")

Migración desde las funciones anteriores

Las dos funciones siguen disponibles con sus parámetros y respuestas habituales:

from tu_ruc_python_client import get_contribuyente_by_ruc, get_contribuyente_by_search

print(get_contribuyente_by_search("juan perez", page=2))
print(get_contribuyente_by_ruc("5898204-3"))

Cada llamada abre y cierra su propio cliente HTTP, sin timeout y siguiendo las redirecciones, como antes. Para reutilizar conexiones entre consultas, migra a TuRucClient o AsyncTuRucClient.

La biblioteca ya no usa Requests, sino HTTPX:

  • Cambia las capturas de requests.exceptions.RequestException por httpx.RequestError.
  • Si usabas REQUESTS_CA_BUNDLE para certificados propios, usa SSL_CERT_FILE o SSL_CERT_DIR.
  • Si tu proyecto usa Requests directamente, decláralo como dependencia propia.

Consulta las diferencias con Requests y las variables de entorno de HTTPX.

Cambios

Consulta CHANGELOG.md para conocer los cambios de cada versión.

Contribuciones

Las contribuciones son bienvenidas. Para cambios importantes, abre primero un issue para comentar lo que te gustaría cambiar. Para preparar el entorno de desarrollo, consulta CONTRIBUTING.md.

Metadata

Release files for tu_ruc_python_client 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tu_ruc_python_client 0.1.0
File Size Uploaded Provenance Actions
tu_ruc_python_client-0.1.0.tar.gz 11.5 kB Without provenance Details for tu_ruc_python_client-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for tu_ruc_python_client 0.1.0
File Interpreter ABI Platform Actions
tu_ruc_python_client-0.1.0-py3-none-any.whl Python 3 none any Details for tu_ruc_python_client-0.1.0-py3-none-any.whl

Total release size: 18.7 kB

Release files / tu_ruc_python_client-0.1.0.tar.gz

Download URL tu_ruc_python_client-0.1.0.tar.gz
Size 11.5 kB
Tags Source
SHA-256 checksum
How to use checksums
fa0ace6ce4996b5f928be4eb13ffcb5d0c46ffe6ade986db11cb4cc8ae7a14f0
BLAKE2b-256 checksum
How to use checksums
4f35acd75158e37af7763d3ac1393ad031c875ea70fc6197916332360ec4140c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / tu_ruc_python_client-0.1.0-py3-none-any.whl

Download URL tu_ruc_python_client-0.1.0-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a22920be0c03bf518538e0e182398e4e61107f2e1228fa36fd6062aa2c0aa573
BLAKE2b-256 checksum
How to use checksums
26aa8cbecdd735552bbe73678fe4822fe207b14f7f28ea63c315f65374867def
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for tu_ruc_python_client 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page