파이썬 3.1 문제

4520 단어 pythonciyamltesting

또는 노르웨이 문제의 변형



짧은 버전: YAML에서 버전 번호를 따옴표로 묶습니다.

노르웨이 문제



Norway problem은 이것을 YAML에 넣을 때입니다.

countries:
  - GB
  - IE
  - FR
  - DE
  - NO


그러나 이것을 꺼내십시오.

>>> import yaml
>>> with open("countries.yml") as f:
...     yaml.safe_load(f)
...
{'countries': ['GB', 'IE', 'FR', 'DE', False]}


😱

노르웨이 수정



따옴표 사용:

countries:
  - "GB"
  - "IE"
  - "FR"
  - "DE"
  - "NO"



>>> with open("countries.yml") as f:
...     yaml.safe_load(f)
...
{'countries': ['GB', 'IE', 'FR', 'DE', 'NO']}


🇳🇴 ✅

파이썬 3.1 문제



비슷한 문제가 Python 3.10 comes out 2021년 10월 Python 커뮤니티에 영향을 미칠 것입니다.

왜요?

예를 들어 CI 테스트 매트릭스 구성에서 YAML에 3.10가 추가되면 부동 소수점으로 해석됩니다. 이것:

python-version: [
    3.6,
    3.7,
    3.8,
    3.9,
    3.10,
    pypy3,
]


다음과 같이 바뀝니다.

>>> import yaml
>>> with open("versions.yml") as f:
...     yaml.safe_load(f)
...
{'python-version': [3.6, 3.7, 3.8, 3.9, 3.1, 'pypy3']}


CI 실패! 아니다2009! 파이썬 3.1을 찾을 수 없습니다!

😱

이와 관련하여 3.10-dev 따옴표 없이는 문자열로 해석되기 때문에 작동합니다. 그러나 -dev 를 삭제할 때 3.10 는 부동 소수점으로 해석됩니다.

파이썬 3.10 수정



버전 번호는 부동 소수점이 아닌 문자열입니다. 따옴표 사용:

python-version: [
    "3.6",
    "3.7",
    "3.8",
    "3.9",
    "3.10",
    "pypy3",
]



>>> import yaml
>>> with open("versions.yml") as f:
...     yaml.safe_load(f)
...
{'python-version': ['3.6', '3.7', '3.8', '3.9', '3.10', 'pypy3']}


🐍 ✅

또한보십시오



flake8-2020은 Python 3.10 및 sys.versionsys.version_info를 사용할 때 버전 번호의 길이에 대한 가정으로 인해 발생하는 기타 버그를 찾는 데 유용한 Flake8 플러그인입니다.

좋은 웹페이지 즐겨찾기