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.1.tar.gz (15.8 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.1-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for taxteclib-0.3.1.tar.gz
Algorithm Hash digest
SHA256 964de07c020b6407be12dc57b2e4409c7a2932e5662c7327b2c7b9348f00c661
MD5 4d0399458168c608627e705471870a6f
BLAKE2b-256 c46e8353d9f7cf33729f8a14b5551587cb43105e7aec209413fc6756c2865446

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for taxteclib-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c6a09f11729a450901b99b4167f0bfc831a4fccac595bad7c0cea321a8d7c503
MD5 f95b3ef9afeeed1b87fde7e873e14e79
BLAKE2b-256 cf8a6023c1bf7c102cb806d4374447b924c21bee345e66e187724e10bc1c4701

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