IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Python 3.11 améliore de l'emplacement des erreurs dans les tracebacks


Sujet :

Python

  1. #1
    Chroniqueur Actualités
    Avatar de Bruno
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    mai 2019
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : mai 2019
    Messages : 436
    Points : 8 008
    Points
    8 008
    Par défaut Python 3.11 améliore de l'emplacement des erreurs dans les tracebacks
    Python 3.11 améliore l'emplacement des erreurs dans les tracebacks,
    et apporte de nouvelles fonctionnalités

    L'équipe de développement de Python a annoncé le 4 octobre les améliorations et les nouvelles fonctionnalités de la version 3.11 de Python. Cette version améliore la localisation des erreurs dans les logs et optimise le formatage de style C avec un format littéral ne contenant que les codes de format %s, %r et %. Les compréhensions asynchrones sont maintenant autorisées à l'intérieur des compréhensions dans les fonctions asynchrones. Les compréhensions externes deviennent implicitement asynchrones.

    Python est un langage de programmation interprété, multi-paradigme et multi-plateformes. Il favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et d'un système de gestion d'exceptions ; il est ainsi similaire à Perl, Ruby, Scheme, Smalltalk et Tcl.

    Nom : python.png
Affichages : 67554
Taille : 3,4 Ko

    Le langage Python est placé sous une licence libre proche de la licence BSD et fonctionne sur la plupart des plateformes informatiques, des smartphones aux ordinateurs, de Windows à Unix avec notamment GNU/Linux en passant par macOS, ou encore Android, iOS, et peut aussi être traduit en Java ou .NET. Il est conçu pour optimiser la productivité des programmeurs en offrant des outils de haut niveau et une syntaxe simple à utiliser. Voici, ci-dessous, quelques nouveautés apportées par la version 3.11 de Python.

    Amélioration de la localisation des erreurs dans les logs

    Lors de l'impression des traces, l'interpréteur pointe désormais vers l'expression exacte qui a causé l'erreur au lieu de la ligne. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Traceback (most recent call last):
      File "distance.py", line 11, in <module>
        print(manhattan_distance(p1, p2))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "distance.py", line 6, in manhattan_distance
        return abs(point_1.x - point_2.x) + abs(point_1.y - point_2.y)
                               ^^^^^^^^^
    AttributeError: 'NoneType' object has no attribute 'x'
    Les versions précédentes de l'interpréteur ne pointaient que sur la ligne, ce qui rendait ambiguë la question de savoir quel objet était None. Ces erreurs améliorées peuvent également être utiles lorsqu'il s'agit d'objets de dictionnaire profondément imbriqués et d'appels de fonction multiples,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Traceback (most recent call last):
      File "query.py", line 37, in <module>
        magic_arithmetic('foo')
        ^^^^^^^^^^^^^^^^^^^^^^^
      File "query.py", line 18, in magic_arithmetic
        return add_counts(x) / 25
               ^^^^^^^^^^^^^
      File "query.py", line 24, in add_counts
        return 25 + query_user(user1) + query_user(user2)
                    ^^^^^^^^^^^^^^^^^
      File "query.py", line 32, in query_user
        return 1 + query_count(db, response['a']['b']['c']['user'], retry=True)
                                   ~~~~~~~~~~~~~~~~~~^^^^^
    TypeError: 'NoneType' object is not subscriptable

    Modules améliorés

    maths

    • ajout de math.cbrt() : retourne la racine cubique de x ;
    • le comportement de deux cas particuliers de math.pow() a été modifié, par souci de cohérence avec la spécification IEEE 754. Les opérations math.pow(0.0, -math.inf) et math.pow(-0.0, -math.inf) retournent maintenant inf. Auparavant, elles indiquaient ValueError.

    opérateur
    Une nouvelle fonction operator.call a été ajoutée, telle que operator.call(obj, *args, **kwargs) == obj(*args, **kwargs).

    Système d’exploitation

    Sous Windows, os.urandom() utilise maintenant BCryptGenRandom(), au lieu de CryptGenRandom() qui est déprécié.

    sqlite3

    • il est maintenant possible de désactiver l'authorizer en passant None à set_authorizer() ;
    • le nom de collation create_collation() peut maintenant contenir n'importe quel caractère Unicode. Les noms de collation avec des caractères non valides indiquent maintenant UnicodeEncodeError au lieu de sqlite3.ProgrammingError ;
    • les exceptions sqlite3 incluent maintenant le code d'erreur SQLite comme sqlite_errorcode et le nom de l'erreur SQLite comme sqlite_errorname.

    threading

    • Sous Unix, si la fonction sem_clockwait() est disponible dans la bibliothèque C (glibc 2.30 et plus récent), la méthode threading.Lock.acquire() utilise maintenant l'horloge monotonique (time.CLOCK_MONOTONIC) pour le délai d'attente, plutôt que d'utiliser l'horloge système (time.CLOCK_REALTIME), pour ne pas être affecté par les changements d'horloge système ;
    • Sous Unix, time.sleep() utilise désormais la fonction clock_nanosleep() ou nanosleep(), si elle est disponible, qui a une résolution de 1 nanoseconde (10-9 secondes), plutôt que d'utiliser select() qui a une résolution de 1 microseconde (10-6 secondes) ;
    • Sous Windows, time.sleep() utilise désormais un timer waitable dont la résolution est de 100 nanosecondes (10-7 secondes). Auparavant, il avait une résolution de 1 milliseconde (10-3 secondes).

    Portage vers Python 3.11

    Les anciennes macros (Py_TRASHCAN_SAFE_BEGIN/Py_TRASHCAN_SAFE_END) sont désormais obsolètes. Elles doivent être remplacées par les nouvelles macros Py_TRASHCAN_BEGIN et Py_TRASHCAN_END.
    Les anciennes macros, telles que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    static void
    mytype_dealloc(mytype *p)
    {
        PyObject_GC_UnTrack(p);
        Py_TRASHCAN_SAFE_BEGIN(p);
        ...
        Py_TRASHCAN_SAFE_END
    }
    doivent migrer vers les nouvelles macros comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    static void
    mytype_dealloc(mytype *p)
    {
        PyObject_GC_UnTrack(p);
        Py_TRASHCAN_BEGIN(p, mytype_dealloc)
        ...
        Py_TRASHCAN_END
    }
    Optimisations

    • le compilateur optimise maintenant le formatage simple de style C avec un format littéral contenant seulement les codes de format %s, %r et %a et le rend aussi rapide que l'expression f-string correspondante ;
    • les exceptions "à coût zéro" sont implémentées. Le coût des instructions try est pratiquement éliminé lorsqu'aucune exception n'est levée ;
    • les appels de méthodes avec des mots-clés sont maintenant plus rapides grâce à des modifications du bytecode qui évitent de créer des instances de méthodes liées. Auparavant, cette optimisation n'était appliquée qu'aux appels de méthodes avec des arguments purement positionnels.

    Source : Python

    Et vous ?

    Quel est votre avis sur le sujet ?

    Quel amélioration vous intéresse le plus ?

    Voir aussi :

    Django 3.1 est disponible, compatible avec Python 3.6, 3.7 et 3.8 et introduit JSONField pour tous les backends de base de données supportés

    La version 3.2 du framework Django est disponible, avec la découverte automatique d'AppConfig, elle apporte de nouveaux décorateurs pour le module d'administration

    Django 2.0 est disponible en version stable, quelles sont les nouveautés dans cette version du framework Web écrit en Python ?

    JetBrains soutient Django : bénéficiez d'une remise de 30 % pour l'achat d'une licence individuelle PyCharm Professional et l'intégralité des sommes perçues seront reversées à la Fondation Django
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 18 408
    Points : 31 818
    Points
    31 818
    Par défaut
    Salut,

    Citation Envoyé par Bruno Voir le message
    Et vous ?

    Quel est votre avis sur le sujet ?
    Une version beta-test n'est pas "disponible" et même la version 3.10 n'est pas encore sortie "officiellement" (toujours en tests). A ce stade, il n'est pas exclu que certaines fonctionnalités annoncées soient retirées, quelques mineures ajoutées,...

    Et en l'état, seuls les développeurs qui ont le temps (et des environnements) pour faire des tests de non-régression ou très intéressés par quelques unes des nouvelles fonctionnalités vont y passer du temps.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé Avatar de jvallois
    Homme Profil pro
    Enseignant
    Inscrit en
    février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2013
    Messages : 85
    Points : 566
    Points
    566
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Une version beta-test n'est pas "disponible" et même la version 3.10 n'est pas encore sortie "officiellement" (toujours en tests). A ce stade, il n'est pas exclu que certaines fonctionnalités annoncées soient retirées, quelques mineures ajoutées,...
    Tout à fait d'accord, sauf pour un point : la 3.10 est disponible depuis aujourd'hui : https://www.python.org/downloads/

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 18 408
    Points : 31 818
    Points
    31 818
    Par défaut
    Citation Envoyé par jvallois Voir le message
    Tout à fait d'accord, sauf pour un point : la 3.10 est disponible depuis aujourd'hui : https://www.python.org/downloads/
    Quand j'ai regardé hier, elle ne l'était pas encore.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    Homme Profil pro
    indépendant
    Inscrit en
    mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : indépendant

    Informations forums :
    Inscription : mai 2016
    Messages : 11
    Points : 17
    Points
    17
    Par défaut C'est bien cette meilleure localisation des erreurs, on va apprécier A+
    A+

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/06/2021, 17h14
  2. Réponses: 0
    Dernier message: 07/10/2020, 20h29
  3. Kernel Linux : la version stable 2.6.38 est disponible
    Par Hinault Romaric dans le forum Linux
    Réponses: 0
    Dernier message: 16/03/2011, 13h10
  4. Linux : la version finale de Gentoo 2010 est disponible
    Par Katleen Erna dans le forum Actualités
    Réponses: 1
    Dernier message: 06/10/2009, 09h13
  5. Réponses: 56
    Dernier message: 03/09/2009, 01h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo