No requirements.txt
para uma biblioteca Python que estou usando, um dos requisitos é especificado como:
mock-django~=0.6.10
O que isso ~=
significa?
No requirements.txt
para uma biblioteca Python que estou usando, um dos requisitos é especificado como:
mock-django~=0.6.10
O que isso ~=
significa?
Respostas:
Significa que ele irá selecionar a última versão do pacote, maior ou igual a 0.6.10, mas ainda na versão 0.6. *, Então não baixará 0.7.0 por exemplo. Isso garante que você obterá correções de segurança, mas manterá a compatibilidade com versões anteriores, se o mantenedor do pacote respeitar o controle de versão semântico (que afirma que mudanças significativas devem ocorrer apenas nas versões principais).
Ou, como dito pelo PEP 440:
Para um determinado identificador de liberação VN, a cláusula de liberação compatível é aproximadamente equivalente ao par de cláusulas de comparação:
>= V.N, == V.*
Esse é o especificador de versão de 'lançamento compatível' .
É equivalente a: mock-django >= 0.6.10, == 0.6.*
e é uma maneira organizada de combinar uma versão que se espera que seja compatível. Em português simples, é como dizer: "Eu preciso de uma versão do mock-django que seja pelo menos tão nova quanto a 0.6.10, mas não tão nova que não seja compatível com ela."
Se você não tem certeza sobre todas essas coisas de número de versão, uma rápida olhada no esquema de versão do PEP440 deve esclarecer você!
Uma cláusula de liberação compatível consiste no operador de liberação compatível ~ = e um identificador de versão. Corresponde a qualquer versão candidata que deve ser compatível com a versão especificada.
Você pode ler mais aqui: https://www.python.org/dev/peps/pep-0440/#compatible-release