Skip to content

feat: add shared utilities module core/utils/utils.py#52

Draft
Copilot wants to merge 3 commits intomainfrom
copilot/add-shared-utils-to-core
Draft

feat: add shared utilities module core/utils/utils.py#52
Copilot wants to merge 3 commits intomainfrom
copilot/add-shared-utils-to-core

Conversation

Copy link
Copy Markdown

Copilot AI commented Mar 24, 2026

O que esse PR faz?

Centraliza utilidades reutilizáveis em core/utils/utils.py: normalização de idiomas, chamadas HTTP com reintentos e resolução de usuários.

  • language_iso(code) — normaliza códigos de idioma via langcodes (e.g. "pt-BR""pt"), retorna "" para códigos inválidos
  • fetch_data / NonRetryableError — re-exportados de core.utils.requester (backoff exponencial min=1s, max=5s, 5 intentos; NonRetryableError em HTTP 4xx)
  • _get_user(request, username, user_id) — centraliza lógica duplicada de xml_manager/tasks.py; resolve por request.user_id, fallback a user_id ou username

Adiciona langcodes==3.5.1 em requirements/base.txt.

from core.utils.utils import language_iso, fetch_data, _get_user, NonRetryableError

language_iso("pt-BR")  # "pt"
language_iso("")        # ""

Onde a revisão poderia começar?

core/utils/utils.py

Como este poderia ser testado manualmente?

python -m pytest core/utils/tests_utils.py -v

Os 11 testes cobrem normalização de idiomas (códigos válidos, inválidos, None, vazio) e resolução de usuário (por request.user_id, fallback user_id, fallback username, prioridade).

Algum cenário de contexto que queira dar?

_get_user já existia em xml_manager/tasks.py (linha 30). A implementação aqui é idêntica — chama get_user_model() de forma lazy dentro da função para evitar problemas de importação circular. fetch_data e NonRetryableError já existem em core/utils/requester.py com toda a lógica de reintentos; este módulo apenas os re-exporta como ponto de entrada unificado.

Screenshots

N/A

Quais são tickets relevantes?

Referências

Original prompt

This section details on the original issue you should resolve

<issue_title>Agregar utilidades compartidas al módulo core</issue_title>
<issue_description>### Descrição da nova funcionalidade
Yo, como desarrollador backend, quiero que existan utilidades reutilizables centralizadas en core/utils/utils.py, para evitar duplicación de código en los distintos módulos de la aplicación y estandarizar el manejo de llamadas HTTP, normalización de idiomas e identificación de usuarios.

Critérios de aceitação

  • El módulo core/utils/utils.py debe existir y ser importable desde cualquier app del proyecto.
  • La función language_iso(code) debe normalizar códigos de idioma usando langcodes (e.g. "pt-BR""pt"), retornando cadena vacía si el código no es válido.
  • La función fetch_data(url, ...) debe implementar reintentos automáticos con backoff exponencial (mín. 1s, máx. 5s, hasta 5 intentos) para errores de red y HTTP 5xx.
  • Errores HTTP 4xx deben lanzar NonRetryableError sin reintentos.
  • La función _get_user(request, username, user_id) debe intentar resolver el usuario por request.user_id y, en caso de fallo, por user_id o username.
  • Todos los errores de red deben ser logueados con nivel ERROR.
  • Los archivos deben terminar con salto de línea (\n).

Anexos

  • Librerías requeridas: langcodes, tenacity, urllib3, requests.

Referências

Comments on the Issue (you are @copilot in this section)


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

Copilot AI and others added 2 commits March 24, 2026 12:27
…fetch_data, and _get_user

Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Agent-Logs-Url: https://github.com/scieloorg/markapi/sessions/ca40b753-50d3-47d9-bb05-15f8bd3155ea
… document None return

Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Agent-Logs-Url: https://github.com/scieloorg/markapi/sessions/ca40b753-50d3-47d9-bb05-15f8bd3155ea
Copilot AI changed the title [WIP] Add shared utilities to core module feat: add shared utilities module core/utils/utils.py Mar 24, 2026
Copilot AI requested a review from robertatakenaka March 24, 2026 12:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Agregar utilidades compartidas al módulo core

2 participants