`compression.zstd.open()` names the wrong mode in its invalid mode error

Ouverte
#161,730 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
1/5
Temps estimé
Moins d'une heure
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python
Domaine
backend

Piste de recherche

Start in the compression.zstd.open() implementation where it removes 't' from the mode before raising ValueError; inspect the equivalent gzip.open(), bz2.open() and lzma.open() behavior for context. The issue names no test file, so locate the existing zstd open mode tests and add coverage for 'rtb'; done when the error reports the original mode.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

stdlib type-bug
Bug report
Bug description:

compression.zstd.open() rejects a mode that contains both 't' and 'b', but the error message names a different mode than the one passed:

>>> import io
>>> from compression import zstd
>>> zstd.open(io.BytesIO(zstd.compress(b'x')), 'rtb')
Traceback (most recent call last):
  ...
ValueError: Invalid mode: 'rb'

'rb' is a valid mode. open() removes 't' from the mode before checking for 'b', and the message is formatted with the modified string:

text_mode = 't' in mode
mode = mode.replace('t', '')

if text_mode:
    if 'b' in mode:
        raise ValueError(f'Invalid mode: {mode!r}')

gzip.open(), bz2.open() and lzma.open() report the mode as passed (Invalid mode: 'rtb').

CPython versions tested on:

3.14, 3.15, CPython main branch

Operating systems tested on:

Linux

Linked PRs
  • gh-161731
Langage dominant
Python
Étoiles
78.2k
Forks
36.6k
Merge moyen
19 h 57 min
PR mergées (30 j)
630

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de python/cpython

Toutes les issues de python/cpython

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.