Compatibilidad con Python 3.13

- Actualiza dependencias: cryptography>=41.0.0, pyOpenSSL>=23.2.0,
  xmlsec>=1.3.12, xmlsig>=0.1.9, zeep>=4.2.1, lxml>=5.2.2
- Anade monkey-patch para xades.load_pkcs12 con pyOpenSSL >= 24
  (PKCS12 eliminado de OpenSSL.crypto)
- Reemplaza datetime.utcnow() por datetime.now(timezone.utc)
- Reemplaza APIs deprecadas de lxml en facho.py y codelist
- Migra verificacion PKCS12 de pyOpenSSL a cryptography API en fe.py
- Moderniza typing: Union/Optional/List a sintaxis | y list[]
- Actualiza requirements_dev.txt con versiones recientes
- Actualiza tox.ini y Makefile.dev para Python 3.13
This commit is contained in:
2026-07-02 22:45:33 -05:00
parent f98ab98c9c
commit 93a3d18e32
13 changed files with 89 additions and 74 deletions

View File

@@ -8,7 +8,7 @@
from dataclasses import dataclass
from datetime import datetime
import hashlib
import typing
from .. import fe
from .. import form
@@ -86,13 +86,13 @@ class NumeroSecuencia:
@dataclass
class Periodo:
fecha_ingreso: typing.Union[str, Fecha]
fecha_liquidacion_inicio: typing.Union[str, Fecha]
fecha_liquidacion_fin: typing.Union[str, Fecha]
fecha_generacion: typing.Union[str, Fecha]
fecha_ingreso: str | Fecha
fecha_liquidacion_inicio: str | Fecha
fecha_liquidacion_fin: str | Fecha
fecha_generacion: str | Fecha
tiempo_laborado: int = 1
fecha_retiro: typing.Union[str, Fecha] = None
fecha_retiro: str | Fecha | None = None
def __post_init__(self):
self.fecha_ingreso = Fecha.cast(self.fecha_ingreso)
@@ -259,7 +259,7 @@ class InformacionGeneral:
def __str__(self):
self.valor
fecha_generacion: typing.Union[str, Fecha]
fecha_generacion: str | Fecha
hora_generacion: str
periodo_nomina: PeriodoNomina
tipo_moneda: TipoMoneda

View File

@@ -1,5 +1,5 @@
from dataclasses import dataclass
from typing import List
from ..amount import Amount
from .devengado import Devengado
@@ -30,7 +30,7 @@ class DevengadoHoraExtra:
@dataclass
class DevengadoHorasExtrasDiarias(Devengado):
horas_extras: List[DevengadoHoraExtra]
horas_extras: list[DevengadoHoraExtra]
def apply(self, fragment):
hora_extra_xml = fragment.fragment('./HEDs')
@@ -39,7 +39,7 @@ class DevengadoHorasExtrasDiarias(Devengado):
@dataclass
class DevengadoHorasExtrasNocturnas(Devengado):
horas_extras: List[DevengadoHoraExtra]
horas_extras: list[DevengadoHoraExtra]
def apply(self, fragment):
hora_extra_xml = fragment.fragment('./HENs')
@@ -49,7 +49,7 @@ class DevengadoHorasExtrasNocturnas(Devengado):
@dataclass
class DevengadoHorasRecargoNocturno(Devengado):
horas_extras: List[DevengadoHoraExtra]
horas_extras: list[DevengadoHoraExtra]
def apply(self, fragment):
hora_extra_xml = fragment.fragment('./HRNs')
@@ -58,7 +58,7 @@ class DevengadoHorasRecargoNocturno(Devengado):
@dataclass
class DevengadoHorasExtrasDiariasDominicalesYFestivos(Devengado):
horas_extras: List[DevengadoHoraExtra]
horas_extras: list[DevengadoHoraExtra]
def apply(self, fragment):
hora_extra_xml = fragment.fragment('./HEDDFs')
@@ -67,7 +67,7 @@ class DevengadoHorasExtrasDiariasDominicalesYFestivos(Devengado):
@dataclass
class DevengadoHorasRecargoDiariasDominicalesYFestivos(Devengado):
horas_extras: List[DevengadoHoraExtra]
horas_extras: list[DevengadoHoraExtra]
def apply(self, fragment):
hora_extra_xml = fragment.fragment('./HRDDFs')
@@ -76,7 +76,7 @@ class DevengadoHorasRecargoDiariasDominicalesYFestivos(Devengado):
@dataclass
class DevengadoHorasExtrasNocturnasDominicalesYFestivos(Devengado):
horas_extras: List[DevengadoHoraExtra]
horas_extras: list[DevengadoHoraExtra]
def apply(self, fragment):
hora_extra_xml = fragment.fragment('./HENDFs')
@@ -85,7 +85,7 @@ class DevengadoHorasExtrasNocturnasDominicalesYFestivos(Devengado):
@dataclass
class DevengadoHorasRecargoNocturnoDominicalesYFestivos(Devengado):
horas_extras: List[DevengadoHoraExtra]
horas_extras: list[DevengadoHoraExtra]
def apply(self, fragment):
hora_extra_xml = fragment.fragment('./HRNDFs')