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

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.0.tar.gz (15.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.0-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: taxteclib-0.3.0.tar.gz
  • Upload date:
  • Size: 15.0 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.0.tar.gz
Algorithm Hash digest
SHA256 ae27b2ab3356bb6547677501a6dd393affadb537a5b53abd39948ba2b845e44a
MD5 5973dd617ec8040f9bd6e8d2ca12a366
BLAKE2b-256 c014cfaf13db41ce24b4b8743e29dbc1a09fb1e6841adfb220e5aa3411acb7e6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: taxteclib-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 13.4 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a7a918f4ac47b7509ab41ac0b3db1fe47137b6d275fac1c72638ed914a67c83c
MD5 8a9a9a4e166f819b481ffe9f2f96f1c5
BLAKE2b-256 c02e53cb0fb8a0f9e0cf0982aa9c61862455dd66403265e47f785a117bcb7f83

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