python / python/typeshed

2 different `Dialect` types - one in `csv` module and other in `_csv` module

Aperta
#14,667 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Python
Stelle
5.1k
Fork
2.1k
Merge medio
1g 19h
PR unite (30g)
82

Descrizione

Consider this code:

from csv import get_dialect


def foo(s: str):
    dialect = get_dialect(s)
    reveal_type(dialect)

mypy reports

dialects.py:6: note: Revealed type is "_csv.Dialect"

One would expect the result would be csv.Dialect.

There are 2 classes called Dialect in typeshed:
https://github.com/python/typeshed/blob/2480d7e7c74493a024eaf254c5d2c6f452c80ee2/stdlib/_csv.pyi#L28
and
https://github.com/python/typeshed/blob/2480d7e7c74493a024eaf254c5d2c6f452c80ee2/stdlib/csv.pyi#L61

get_dialect() is imported in csv.pyi from _csv.pyi, so the declaration in _csv.pyi is returning _csv.Dialect instead of csv.Dialect, so the type checkers see that as 2 separate classes.

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 confrontando stdlib/_csv.pyi con stdlib/csv.pyi, concentrandoti sulla dichiarazione importata di get_dialect e sulle due classi Dialect. Esegui lo snippet riproduttivo di mypy e conferma che reveal_type segnala csv.Dialect invece di _csv.Dialect.

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

Valutazione

Stack tecnologico
python
Ambito
tooling
Tipo di issue
Bug
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
52/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.