python / python/mypy

support alias for `sys` when checking version_info

Aperta
#6,189 5 commenti 5 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

feature priority-2-low
Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

Issue kind:

Bug Report.

Env:
  • mypy 0.620
  • Python 3.7.2
How to reproduce

Code as following:

# t.py
import sys as py_sys

if py_sys.version_info < (3, 0):
    unicode = unicode
    chr = unichr
else:
    unicode = str

exec mypy t.py, and use default config, it reports

t.py:5: error: Cannot determine type of 'unicode'
t.py:6: error: Name 'unichr' is not defined

But following code is ok.

# t.py
import sys

if sys.version_info < (3, 0):
    unicode = unicode
    chr = unichr
else:
    unicode = str

Master branch(mypy-0.660+dev.d1c8f27f696012085ca904e96f8b93b92b74919e mypy-extensions-0.4.1 typed-ast-1.1.1) has the same problem.

Except:

mypy can recognize sys module alias, and handle compact code.

Actual:

If use a sys module's alias to get Python version, and write some compact code, it will check all code.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con la riproduzione in t.py ed esegui mypy usando prima l’importazione diretta di sys e poi l’alias py_sys, per confrontare la gestione di version_info e gli errori unicode e unichr segnalati. Il lavoro è completato quando mypy riconosce il modulo sys aliasato e controlla in modo coerente il codice compatto dipendente dalla versione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
compilers
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.