Projet

Général

Profil

Development #32815

python3 : déprécier le builtin @file@

Ajouté par Paul Marillonnet il y a presque 5 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
06 mai 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

N'existe plus en python3


Fichiers

Révisions associées

Révision a516e02d (diff)
Ajouté par Paul Marillonnet il y a presque 5 ans

python3: define a FileType in tests/test_commands.py (#32815)

as file is not a builtin anymore

Révision 23145898 (diff)
Ajouté par Paul Marillonnet il y a presque 5 ans

python3: deprecate file builtin (#32815)

Historique

#1

Mis à jour par Paul Marillonnet il y a presque 5 ans

#2

Mis à jour par Thomas Noël il y a presque 5 ans

Met l'affaire "FileType" dans les tests directement, inutile de "pourrir" authentic.compat avec ça.

#5

Mis à jour par Thomas Noël il y a presque 5 ans

  • Statut changé de Solution proposée à Solution validée

Sounds good ; à pousser en un seul patch

Quand même, je ne pige pas trop le remplacement des simple « x=file.read » par des tordus « with open as f: x=f.read »

#6

Mis à jour par Paul Marillonnet il y a presque 5 ans

Thomas Noël a écrit :

Quand même, je ne pige pas trop le remplacement des simple « x=file.read » par des tordus « with open as f: x=f.read »

C'est très simple, les chances de voir le patch acké par Benj sont multipliées par 3 si on parvient à placer des gestionnaires de contexte ☺
(ça permet aussi d'éviter une fermeture explicite du fichier, cette fermeture étant effectuée à la sortie du contexte.)

#7

Mis à jour par Thomas Noël il y a presque 5 ans

Paul Marillonnet a écrit :

(ça permet aussi d'éviter une fermeture explicite du fichier, cette fermeture étant effectuée à la sortie du contexte.)

Sauf erreur de ma part, open().read() ferme le fichier aussitôt après le read. Non ? Ah, je découvre que c'est de la magie CPython.

Ok pour le with, donc.

#8

Mis à jour par Paul Marillonnet il y a presque 5 ans

Ok oui, je pensais à un équivalent sans gestionnaire de contexte :

f = open(...)
f.read()

qui laisse des descripteurs de fichier ouverts, d'où, je crois, le conseil de Benj d'utiliser des gestionnaires de contexte.

#9

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Thomas Noël a écrit :

Sauf erreur de ma part, open().read() ferme le fichier aussitôt après le read. Non ? Ah, je découvre que c'est de la magie CPython.

La réponse c'est peut-être1; mais avec with c'est certain et c'est comme ça qu'il faut faire et ça permet de prendre de bonnes habitudes de gestion des ressources en général, et en fait je trouve ça joli à force. Logiquement le compteur de référence doit tomber à zéro en sortie de scope et le descripteur de fichier être fermé, mais si il y a une exception dans read() ça peut ne pas le faire pour diverses raisons.

1 https://stackoverflow.com/questions/4599980/python-close-file-descriptor-question

#10

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

ducktype powa ! remplacé isinstance(x, file) par hasattr(x, 'read').

#11

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Assigné à mis à Benjamin Dauvergne
#12

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 23145898bde4f26d51c8dfedba59f8a980dabf79
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Wed Apr 10 18:56:46 2019 +0200

    python3: deprecate file builtin (#32815)

commit a516e02de09eff340f37b3ded2e59d7a289d66f2
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Wed Apr 10 19:20:46 2019 +0200

    python3: define a FileType in tests/test_commands.py (#32815)

        as file is not a builtin anymore
#13

Mis à jour par Frédéric Péters il y a presque 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF