Precedência de identificadores de pré-lançamento
Compare identificadores de pré-lançamento já separados, colocando números antes de texto.
import re
IDENT = re.compile(r"[0-9A-Za-z-]+")
def prerelease_cmp(left, right):
for item in (*left, *right):
if not isinstance(item, str) or not IDENT.fullmatch(item):
raise ValueError("identifier")
if item.isascii() and item.isdigit() and len(item) > 1 and item[0] == "0":
raise ValueError("leading zero")
if not left or not right:
return (not left) - (not right)
for a, b in zip(left, right):
if a == b: continue
an, bn = a.isdigit(), b.isdigit()
if an != bn: return -1 if an else 1
if an and len(a) != len(b): return (len(a) > len(b)) - (len(a) < len(b))
return (a > b) - (a < b)
return (len(left) > len(right)) - (len(left) < len(right))- Projeto
- Verifique números com vários dígitos, prefixos comuns e tuplas vazias de versão estável, rejeitando zeros iniciais e identificadores inválidos.
- Revise antes de aplicar
- Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.
- Modelos
- Configure um endpoint compatível com OpenAI ou Anthropic com a URL base e uma chave API, quando necessária. Teste a conexão. O servidor local precisa estar em execução; ferramentas remotas podem transmitir dados separadamente.
import re
IDENT = re.compile(r"[0-9A-Za-z-]+")
def prerelease_cmp(left, right):
for item in (*left, *right):
if not isinstance(item, str) or not IDENT.fullmatch(item):
raise ValueError("identifier")
if item.isascii() and item.isdigit() and len(item) > 1 and item[0] == "0":
raise ValueError("leading zero")
if not left or not right:
return (not left) - (not right)
for a, b in zip(left, right):
if a == b: continue
an, bn = a.isdigit(), b.isdigit()
if an != bn: return -1 if an else 1
if an and len(a) != len(b): return (len(a) > len(b)) - (len(a) < len(b))
return (a > b) - (a < b)
return (len(left) > len(right)) - (len(left) < len(right))Torne as decisões de lançamento rastreáveis até o código
O tratamento de versões conecta pequenas funções de comparação a decisões importantes do aplicativo. Prevernal é um ambiente de programação com IA para Windows onde você pode discutir essa conexão com os arquivos relevantes do projeto por perto. Comece pela decisão que parece errada, como qual versão candidata é selecionada, e peça ao modelo conectado que examine o fluxo que a produz.
Uma solicitação concreta pode comparar identificadores de pré-lançamento usados pela lógica de atualização. Forneça rótulos representativos e a ordem exigida pelo projeto. Peça uma proposta que separe rótulos inválidos de versões válidas, porém de menor prioridade, e examine como essa distinção chega ao chamador. Isso mantém a tarefa focada no comportamento do aplicativo em vez de transformar a conversa em uma aula geral de comparação.
Revise a alteração resultante com casos de teste de versões que cubram diferentes tipos de identificador, prefixos iguais e uma versão final. Verifique se o chamador espera um resultado de comparação ou uma exceção e execute os testes pertinentes do projeto. Se a proposta mudar a sintaxe aceita, trate isso como decisão de compatibilidade, não como melhoria incidental.
Prevernal suporta conexões com endpoints compatíveis com OpenAI ou da Anthropic. Quando oferecido, um modelo de IA com mecanismos de recusa removidos pode ser selecionado para esse trabalho de programação; restrições do provedor, limites de contexto e ferramentas disponíveis ainda dependem do serviço configurado. O modelo fornece assistência, enquanto a política de lançamento do projeto fornece os critérios de aceitação.
Revisando uma mudança na ordenação de versões
- O que deve acompanhar um relato de candidato de atualização incorreto?
Forneça os rótulos candidatos, o vencedor esperado e o código que o escolhe. Inclua a política de ordenação do projeto. Essas evidências ajudam a distinguir um defeito de comparação da lógica de filtragem ou seleção em outro ponto do fluxo de atualização.
- Identificadores inválidos devem ser ordenados abaixo dos válidos?
Somente se seu contrato disser isso. Rejeição e ordenação são decisões separadas, e classificar silenciosamente entradas inválidas pode esconder erros anteriores. Pergunte como o chamador trata cada caso antes de aceitar uma mudança de validação.
- Como uma correção de sintaxe pode afetar usuários existentes?
Um analisador mais estrito pode rejeitar rótulos que antes passavam pelo aplicativo. Identifique a origem desses rótulos e inclua valores armazenados ou recebidos representativos. Revise a compatibilidade separadamente de a nova lógica de comparação parecer mais limpa.
- Prevernal publica ou instala versões de software?
Essa tarefa usa um ambiente de programação para examinar sua implementação relacionada a versões. Publicação e instalação pertencem aos processos do próprio projeto. Verifique o código proposto com suas verificações antes de usá-lo em uma decisão de lançamento.
Prevernal · Atualizado 2026-10-25