Descrição
Atualmente, get_xml_items, get_xml_with_pre_from_zip_file e get_xml_with_pre_from_xml_file (em packtools/sps/pid_provider/xml_sps_lib.py) recebem os parâmetros filenames e capture_errors, que tornam o fluxo de erro inconsistente: em alguns casos a função levanta exceção, em outros retorna/yield um dict com chave error, dependendo da flag passada pelo chamador. Isso dificulta o tratamento de erro por item (especialmente em ZIPs com múltiplos XMLs, onde um arquivo corrompido não deveria interromper o processamento dos demais) e espalha lógica de decisão de erro pelas camadas superiores.
Além disso, XMLWithPre armazenava filename, files e filenames como atributos simples atribuídos externamente (xml_with_pre.filename = ...), sem padronização de onde essa informação era originada (arquivo local vs. componente de ZIP).
Objetivo
- Simplificar as assinaturas removendo
filenames/capture_errors.
- Centralizar a captura de erro por item (mensagem, tipo, traceback), sem interromper o processamento dos demais itens de um ZIP.
- Padronizar a atribuição de metadados de origem em
XMLWithPre através dos métodos add_xml_info (nome do XML e path de origem) e add_zip_info (path do ZIP, lista de arquivos e basenames).
- Manter compatibilidade de nomes usados externamente (
filename, files, filenames) como aliases (property) de xml_name, zip_namelist e zip_basenames.
- Ajustar
string_to_5_digits para retornar str (padronizando o tipo usado na composição de PIDs).
Escopo
packtools/sps/pid_provider/xml_sps_lib.py
tests/sps/pid_provider/test_models_dates.py
tests/sps/pid_provider/test_xml_sps_lib.py
tests/sps/pid_provider/test_xmlsps.py
tests/sps/pid_provider/test_xml_sps_lib_functions.py (novo)
packtools/version.py (bump para 4.16.9)
Critérios de aceite
Descrição
Atualmente,
get_xml_items,get_xml_with_pre_from_zip_fileeget_xml_with_pre_from_xml_file(empacktools/sps/pid_provider/xml_sps_lib.py) recebem os parâmetrosfilenamesecapture_errors, que tornam o fluxo de erro inconsistente: em alguns casos a função levanta exceção, em outros retorna/yield um dict com chaveerror, dependendo da flag passada pelo chamador. Isso dificulta o tratamento de erro por item (especialmente em ZIPs com múltiplos XMLs, onde um arquivo corrompido não deveria interromper o processamento dos demais) e espalha lógica de decisão de erro pelas camadas superiores.Além disso,
XMLWithPrearmazenavafilename,filesefilenamescomo atributos simples atribuídos externamente (xml_with_pre.filename = ...), sem padronização de onde essa informação era originada (arquivo local vs. componente de ZIP).Objetivo
filenames/capture_errors.XMLWithPreatravés dos métodosadd_xml_info(nome do XML e path de origem) eadd_zip_info(path do ZIP, lista de arquivos e basenames).filename,files,filenames) como aliases (property) dexml_name,zip_namelistezip_basenames.string_to_5_digitspara retornarstr(padronizando o tipo usado na composição de PIDs).Escopo
packtools/sps/pid_provider/xml_sps_lib.pytests/sps/pid_provider/test_models_dates.pytests/sps/pid_provider/test_xml_sps_lib.pytests/sps/pid_provider/test_xmlsps.pytests/sps/pid_provider/test_xml_sps_lib_functions.py(novo)packtools/version.py(bump para4.16.9)Critérios de aceite
get_xml_items,get_xml_with_pre_from_zip_fileeget_xml_with_pre_from_xml_filenão recebem maisfilenames/capture_errors.XMLWithPre.filename/files/filenamescontinuam funcionando como antes (compatibilidade), agora via alias dexml_name/zip_namelist/zip_basenames..xmlquanto para.zip.pytest tests/sps/pid_provider/).