copy.replace loses slot-backed CSV dialect options
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 34/100
Piste de recherche
The report identifies Dialect.__replace__() and provides a reproducer, but names no source or test files. Start by locating that method and the CSV dialect tests, then reproduce the example on CPython 3.16. Done means copy.replace() preserves the slot-backed delimiter and both readers return [['alpha', 'beta']]; the reporter says they have already prepared a local fix and regression tests.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Bug report
copy.replace() loses slot-backed attributes of csv.Dialect subclasses. This can silently change how CSV data is parsed, even when the delimiter was not replaced.
Reproduced with CPython 3.16.0a1. The same implementation is present on main at 31a7d994a559a421814ca9e8edfcab21ae4a5b36.
import copy
import csv
class SemicolonDialect(csv.excel):
__slots__ = ('delimiter',)
def __init__(self):
self.delimiter = ';'
super().__init__()
dialect = SemicolonDialect()
replacement = copy.replace(dialect, quoting=csv.QUOTE_ALL)
print(list(csv.reader(['alpha;beta'], dialect)))
print(list(csv.reader(['alpha;beta'], replacement)))
Actual output:
[['alpha', 'beta']]
[['alpha;beta']]
Expected: both readers produce [['alpha', 'beta']], since only the quoting setting was replaced.
Dialect.__replace__() copies only __dict__, losing attributes stored in slots. The replacement therefore lacks its delimiter, and csv.reader falls back to the default comma delimiter.
I have prepared a local fix and regression tests.
CPython versions tested on:
3.16
Operating systems tested on:
No response
- Langage dominant
- Python
- Étoiles
- 77.7k
- Forks
- 38.3k
- Merge moyen
- 13 h 43 min
- PR mergées (30 j)
- 704
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de python/cpython
-
topic-socket type-bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
python/cpython#160561 · 7 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
tests topic-profiling type-bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
python/cpython#160334 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
`iso2022_jp_3` encodes U+9B1D but decodes the result as U+9B1CPeut-être pris @kinqsradio l’a pris il y a 1 jour. Ouverteextension-modules type-bug
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour
-
Remove unused FVS_* macrosOuverteinterpreter-core type-feature
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
python/cpython#160109 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
extension-modules type-bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
python/cpython#160001 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de python/cpython
Issues similaires
-
component:benchmark
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
agentic-os-org/ANOLISA#9177 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
distrochooser/distrochooser#520 ·
Les mainteneurs répondent en général sous 2 jours
-
Status: Needs confirmation Status: Needs triage
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
Les mainteneurs répondent en général sous 1 jour
-
[BUG] Published Docker images lack the redis extra: HEADROOM_COMPRESS_SESSION_STORE stops startupPeut-être pris @AlessandroSpallina l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
headroomlabs-ai/headroom#4513 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 65/100
codespell-project/codespell#4060 ·
Les mainteneurs répondent en général sous 1 jour