You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
O requirements.txt do opac_5 está com defasagem significativa em pacotes-chave (Flask 2.2, SQLAlchemy 1.4, Werkzeug 2.2, redis 4.x — alguns com 4+ anos de atraso). Este épico organiza a atualização em ondas, separando o que é seguro em lote do que exige migração dedicada.
Levantamento completo de versões (atual vs. mais recente no PyPI) e notas de breaking changes: ver comentário fixado / anexo guia_atualizacao_dependencias_opac5.md.
Não fazer tudo num PR só. Cada onda abaixo deve virar um PR próprio, com deploy em homologação e validação antes de avançar para a próxima.
Checklist geral
🔧 Preparação
Rodar e corrigir todos os testes
Confirmar versão de Python alvo em produção/homologação (vários pacotes novos exigem >=3.9 ou >=3.11)
pip freeze > requirements.lock.old.txt como snapshot de rollback
Criar branch test/fix-and-expand-test-suite
Mapear no código usos de: flask._app_ctx_stack, werkzeug.urls.* (url_quote/url_encode/safe_join), Image.ANTIALIAS, Query legado do SQLAlchemy, chamadas diretas de baixo nível ao urllib3
🟢 Onda 1 — Baixo risco (lote único)
Patch/minor sem mudança de API relevante — subir todos juntos e rodar suíte de testes.
speaklater → remove sozinho ao migrar Flask-BabelEx → Flask-Babel
python-editor → verificar se ainda é puxado como dependência transitiva de alembic; remover se não
unicodecsv → avaliar remoção (csv nativo do Python 3 já lida com unicode)
✅ Fechamento
Atualizar requirements.txt final
Documentar no README/CHANGELOG as decisões de versão (o que ficou para trás e por quê)
Remover requirements.lock.old.txt de backup após validação em produção
Sub-issues sugeridas (uma por bloco de alto risco)
Ao quebrar este épico, sugiro criar uma issue filha para cada item da seção 🔴 Onda 3 e para o bloco ⚫ Remover/substituir, referenciando esta issue como épico (Parte de #<número-deste-épico>).
Descrição da tarefa
Realizar atualização das dependências.
[Épico] Atualização de dependências do opac_5
Contexto
O
requirements.txtdo opac_5 está com defasagem significativa em pacotes-chave (Flask 2.2, SQLAlchemy 1.4, Werkzeug 2.2, redis 4.x — alguns com 4+ anos de atraso). Este épico organiza a atualização em ondas, separando o que é seguro em lote do que exige migração dedicada.Levantamento completo de versões (atual vs. mais recente no PyPI) e notas de breaking changes: ver comentário fixado / anexo
guia_atualizacao_dependencias_opac5.md.Não fazer tudo num PR só. Cada onda abaixo deve virar um PR próprio, com deploy em homologação e validação antes de avançar para a próxima.
Checklist geral
🔧 Preparação
>=3.9ou>=3.11)pip freeze > requirements.lock.old.txtcomo snapshot de rollbacktest/fix-and-expand-test-suiteflask._app_ctx_stack,werkzeug.urls.*(url_quote/url_encode/safe_join),Image.ANTIALIAS,Querylegado do SQLAlchemy, chamadas diretas de baixo nível aourllib3🟢 Onda 1 — Baixo risco (lote único)
arrow,Babel,beautifulsoup4,blinker,cachelib,charset-normalizer,citeproc-py,citeproc-py-styles,click,dnspython,elastic-apm,feedparser,feedwerk,filelock,Flask-Caching,Flask-Login,Flask-Mail,Flask-WTF,idna,itsdangerous,Mako,natsort,oauthlib,pluggy,pyproject_api,python-dateutil,requests,six,soupsieve,tox,tweepy,Unidecode,WTForms,XlsxWriter,PyJWTcolorama,cssmin,htmlmin,Flask-Principal,legendarium,passlib,picles.plumber,PySocks,text-unidecode— já estão na última versão, só confirmar🟡 Onda 2 — Médio risco (major bump, baixo acoplamento)
async-timeout,cachetools,certifi,chardet,croniter,email-validator,Flask-HTMLmin,Flask-Migrate,lxml,MarkupSafe,packaging,pbr,platformdirs,python-slugify,pytz,requests-oauthlib,virtualenv,wrapt,zope.event,zope.interface,tenacityFlask-Migrateeemail-validator, que tocam fluxo de dados)🔴 Onda 3 — Alto risco (uma issue por bloco, não por pacote)
SQLALCHEMY_WARN_20=1na versão atual antes de migrarrq-scheduler-dashboard(parado em 0.0.2) suporta RQ 2.xImage.ANTIALIAS(removido, usarLANCZOS)geventem produção após bumprequestsé transparente)⚫ Remover / substituir (não atualizar, trocar)
Flask-Script→ usarflask.clinativo (@app.cli.command())raven→ migrar parasentry-sdkspeaklater→ remove sozinho ao migrar Flask-BabelEx → Flask-Babelpython-editor→ verificar se ainda é puxado como dependência transitiva de alembic; remover se nãounicodecsv→ avaliar remoção (csv nativo do Python 3 já lida com unicode)✅ Fechamento
requirements.txtfinalrequirements.lock.old.txtde backup após validação em produçãoSub-issues sugeridas (uma por bloco de alto risco)
Ao quebrar este épico, sugiro criar uma issue filha para cada item da seção 🔴 Onda 3 e para o bloco ⚫ Remover/substituir, referenciando esta issue como épico (
Parte de #<número-deste-épico>).Labels sugeridas
dependencies,tech-debt,epicReferências
https://docs.google.com/document/d/1HQ3wRbFlOzEaWRnmrdEHWyQEil6adegC2nsdBh9be94/edit?tab=t.0#heading=h.dsw8tncrfl8k