Skip to main content

Libreria estandar para DeloitteAR BPS Tax Tech

Project description

taxteclib

taxteclib es una librería Python que centraliza módulos y utilidades comunes para los proyectos de BPS Tax Tec (Argentina). Está pensada para contener funciones, clases y helpers reutilizables que faciliten la construcción de servicios y herramientas internas.

Características

  • Paquete ligero, compatible con Python 3.12
  • Estructura lista para pruebas y CI
  • Contiene utilidades comunes para la organización BPS Tax Tec ARG
  • Helpers de automatización con Playwright listos para reutilizar en distintos proyectos

Clases disponibles

En el paquete taxteclib actualmente están disponibles las siguientes clases principales:

  • SqlServerClient: Cliente para insertar registros de monitoreo en SQL Server.
  • GithubRepoUpdater: Clase para actualizar desde un repositorio de GitHub y aplicar SQLs de un ZIP.
  • AfipLoginFlow: Helper asincrónico para automatizar el login en el portal de AFIP con Playwright.

Puedes consultar la documentación de cada clase en los archivos fuente dentro de src/taxteclib/.

Ejemplo de uso: SqlServerClient

from taxteclib.database_logger import SqlServerClient, EstadoMonitoreo
from datetime import datetime

cliente_db = SqlServerClient()
registro = cliente_db.insertar_monitoreo(
	username="usuario",
	proceso="Proceso de ejemplo",
	estado=EstadoMonitoreo.CORRECTO,
	iniciado=datetime(2025, 9, 25, 10, 0),
	finalizado=datetime(2025, 9, 25, 10, 15),
	cliente="Cliente",
	items_count=42,
)
print(f"Registro insertado con ID: {registro.id}")

Ejemplo de uso: GithubRepoUpdater

from taxteclib.github_updater import GithubRepoUpdater

updater = GithubRepoUpdater(owner="mi_owner", repo="mi_repo")
updater.update(extract_zip=True)

Ejemplo de uso: Playwright AFIP login

import asyncio
import logging
import os
from playwright.async_api import async_playwright
from taxteclib.playwright.afip import AfipLoginFlow
from taxteclib.playwright.exceptions import LoginErrorAfip
from dotenv import load_dotenv


async def main() -> None:
    load_dotenv()
    cuit = os.getenv("CUIT")
    clave_fiscal = os.getenv("CLAVE_FISCAL")
    if not cuit or not clave_fiscal:
        raise ValueError("Debes definir CUIT y CLAVE_FISCAL en el archivo .env")

    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=False)
        page = await browser.new_page()

        flow = AfipLoginFlow(
            page=page,
            cliente="ACME",
            cuit=cuit,
            clave_fiscal=clave_fiscal,
            logger=logging.getLogger("afip-login"),
        )

        try:
            await flow.login(success_selector="#buscadorInput")
        except LoginErrorAfip as exc:
            logging.error("Falló el login de AFIP: %s", exc)
        else:
            logging.info("Login correcto, continuar con el flujo deseado.")
        finally:
            await browser.close()


if __name__ == "__main__":
    asyncio.run(main())

Tip: Luego de instalar la librería, recordá ejecutar playwright install para descargar los navegadores necesarios.

Instalación (desarrollo)

Recomendado: crear un entorno virtual y usar las utilidades del proyecto.

Con venv:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -U pip
pip install -e .

Si usas uv (opcional) y el Makefile del repo:

make local-setup
make install

Uso básico

Ejemplo mínimo usando la clase de ejemplo incluida:

from taxteclib.dummy_class import Dummy

dummy = Dummy()
assert dummy.add(2, 3) == 5
print('2 + 3 =', dummy.add(2, 3))

Ejecutar pruebas

La suite de tests usa pytest. Para correrlas localmente:

# dentro del entorno virtual
make test
# o
pytest -q

Tests que requieren credenciales

Algunos tests (por ejemplo, los de Playwright/AFIP) requieren credenciales reales y variables de entorno. Estos están marcados con @pytest.mark.requires_credentials.

Para ejecutar solo los tests que no requieren credenciales (por ejemplo, en CI o si no tienes acceso a AFIP):

make test-no-credentials
# o
pytest -m "not requires_credentials"

Para ejecutar todos los tests (incluyendo los que requieren credenciales):

make test
# o
pytest

Recuerda definir las variables necesarias en un archivo .env si ejecutas los tests que requieren credenciales.

Contribuir

  1. Crea una rama con un nombre descriptivo
  2. Asegúrate de pasar los hooks y tests locales (make local-setup)
  3. Envía un Pull Request contra main

Para estilos y checks el repo incluye ruff y hooks de pre-commit.

Licencia

Consulta el archivo LICENSE del repositorio para detalles.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

taxteclib-0.3.2.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

taxteclib-0.3.2-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file taxteclib-0.3.2.tar.gz.

File metadata

  • Download URL: taxteclib-0.3.2.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for taxteclib-0.3.2.tar.gz
Algorithm Hash digest
SHA256 bc9c2b13f5463fe613ff2c1cbc13359a096830510c382ba3de3c85faa5e8e70b
MD5 6b1c8e16d855e9a26b84f290b78afa9a
BLAKE2b-256 cd297acd2c46f2536fc9a37f47c789ae9376fc44e362cddb2f95bd81fb61e3a7

See more details on using hashes here.

File details

Details for the file taxteclib-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: taxteclib-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for taxteclib-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 053d75597a5eba891b1150556c38ac168ee8e51bba9a8b1a92564b913f5d8927
MD5 53fe59e14014627b6bc18b95e7fb470b
BLAKE2b-256 fed05987e398639d82edfdd643c21d20f17cd0e391615305ee2b59d2ddcd4f8f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page