1
0
Fork 0

Traduction de faq/programming.rst (#1717)

Co-authored-by: Julien Palard <julien@palard.fr>
This commit is contained in:
Jean-Abou-Samra 2021-10-22 15:34:35 +02:00 committed by GitHub
parent cce81d7f7b
commit 78a89988a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 135 additions and 46 deletions

View File

@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-10-21 15:04+0200\n"
"PO-Revision-Date: 2021-05-19 22:42+0200\n"
"Last-Translator: Jules Lasne <jules.lasne@gmail.com>\n"
"PO-Revision-Date: 2021-10-17 02:06+0200\n"
"Last-Translator: Jean Abou Samra <jean@abou-samra.fr>\n"
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.2\n"
"X-Generator: Poedit 3.0\n"
#: faq/programming.rst:5
msgid "Programming FAQ"
@ -70,7 +70,6 @@ msgstr ""
"idle``) contient un débogueur graphique."
#: faq/programming.rst:31
#, fuzzy
msgid ""
"PythonWin is a Python IDE that includes a GUI debugger based on pdb. The "
"PythonWin debugger colors breakpoints and has quite a few cool features such "
@ -83,10 +82,9 @@ msgstr ""
"embarque un débogueur graphique basé sur ``pdb``. Le débogueur *PythonWin* "
"colore les points d'arrêts et possède quelques fonctionnalités sympathiques, "
"comme la possibilité de déboguer des programmes développés sans "
"*PythonWin*. *PythonWin* est disponible dans le projet `Extensions Python "
"pour Windows <https://sourceforge.net/projects/pywin32/>`__ et fait partie "
"de la distribution ActivePython (voir https://www.activestate.com/"
"activepython\\ )."
"*PythonWin*. *PythonWin* est disponible dans le projet `pywin32 <https://"
"github.com/mhammond/pywin32>`_ et fait partie de la distribution "
"`ActivePython <https://www.activestate.com/products/python/>`_."
#: faq/programming.rst:38
msgid ""
@ -101,12 +99,17 @@ msgid ""
"`trepan3k <https://github.com/rocky/python3-trepan/>`_ is a gdb-like "
"debugger."
msgstr ""
"`trepan3k <https://github.com/rocky/python3-trepan/>`_ est un débogueur "
"semblable à GDB."
#: faq/programming.rst:43
msgid ""
"`Visual Studio Code <https://code.visualstudio.com/>`_ is an IDE with "
"debugging tools that integrates with version-control software."
msgstr ""
"`Visual Studio Code <https://code.visualstudio.com/>`_ est un EDI qui "
"contient des outils de débogage. Il sait interagir avec les outils de "
"gestion de version."
#: faq/programming.rst:46
msgid ""
@ -114,20 +117,19 @@ msgid ""
"debuggers. They include:"
msgstr ""
"Il existe de nombreux EDI Python propriétaires qui embarquent un débogueur "
"graphique. Notamment :"
"graphique, notamment :"
#: faq/programming.rst:49
msgid "`Wing IDE <https://wingware.com/>`_"
msgstr "`Wing IDE <https://wingware.com/>`_"
msgstr "`Wing IDE <https://wingware.com/>`_ ;"
#: faq/programming.rst:50
msgid "`Komodo IDE <https://www.activestate.com/products/komodo-ide/>`_"
msgstr ""
msgstr "`Komodo IDE <https://www.activestate.com/products/komodo-ide/>`_ ;"
#: faq/programming.rst:51
#, fuzzy
msgid "`PyCharm <https://www.jetbrains.com/pycharm/>`_"
msgstr "PyCharm (https://www.jetbrains.com/pycharm/)"
msgstr "`PyCharm <https://www.jetbrains.com/pycharm/>`_ ;"
#: faq/programming.rst:55
msgid "Are there tools to help find bugs or perform static analysis?"
@ -215,33 +217,40 @@ msgid ""
"The following packages can help with the creation of console and GUI "
"executables:"
msgstr ""
"Voici quelques paquets qui permettent de créer des exécutables en ligne de "
"commande comme graphiques :"
#: faq/programming.rst:97
msgid "`Nuitka <https://nuitka.net/>`_ (Cross-platform)"
msgstr ""
msgstr "`Nuitka <https://nuitka.net/>`_ (multi-plateforme) ;"
#: faq/programming.rst:98
msgid "`PyInstaller <http://www.pyinstaller.org/>`_ (Cross-platform)"
msgstr ""
msgstr "`PyInstaller <http://www.pyinstaller.org/>`_ (multi-plateforme) ;"
#: faq/programming.rst:99
msgid ""
"`PyOxidizer <https://pyoxidizer.readthedocs.io/en/stable/>`_ (Cross-platform)"
msgstr ""
"`PyOxidizer <https://pyoxidizer.readthedocs.io/en/stable/>`_ (multi-"
"plateforme) ;"
#: faq/programming.rst:100
msgid ""
"`cx_Freeze <https://marcelotduarte.github.io/cx_Freeze/>`_ (Cross-platform)"
msgstr ""
"`cx_Freeze <https://marcelotduarte.github.io/cx_Freeze/>`_ (multi-"
"plateforme) ;"
#: faq/programming.rst:101
msgid "`py2app <https://github.com/ronaldoussoren/py2app>`_ (macOS only)"
msgstr ""
"`py2app <https://github.com/ronaldoussoren/py2app>`_ (uniquement pour "
"macOS) ;"
#: faq/programming.rst:102
#, fuzzy
msgid "`py2exe <http://www.py2exe.org/>`_ (Windows only)"
msgstr "http://www.py2exe.org/"
msgstr "`py2exe <http://www.py2exe.org/>`_ (uniquement pour Windows)."
#: faq/programming.rst:105
msgid "Are there coding standards or a style guide for Python programs?"
@ -1868,7 +1877,6 @@ msgstr ""
"différents types."
#: faq/programming.rst:1206
#, fuzzy
msgid ""
"The ``array`` module also provides methods for creating arrays of fixed "
"types with compact representations, but they are slower to index than "
@ -1877,9 +1885,8 @@ msgid ""
msgstr ""
"Le module ``array`` fournit des méthodes pour créer des tableaux de types "
"fixes dans une représentation compacte, mais ils sont plus lents à indexer "
"que les listes. Notez aussi que l'extension ``Numeric`` (et d'autres) "
"fournissent différentes structures de type tableaux, avec des "
"caractéristiques différentes."
"que les listes. Notez aussi que NumPy (et d'autres) fournissent différentes "
"structures de type tableaux, avec des caractéristiques différentes."
#: faq/programming.rst:1211
msgid ""
@ -2225,6 +2232,12 @@ msgid ""
"registered class even if hasn't directly or indirectly inherited from it. "
"To test for \"true inheritance\", scan the :term:`MRO` of the class:"
msgstr ""
"Notez que :func:`isinstance` prend aussi en compte l'héritage virtuel d'une :"
"term:`classe de base abstraite <abstract base class>`, c'est à dire qu'elle "
"renvoie ``True`` pour une classe A enregistrée auprès d'une classe de base "
"abstraite B même si A n'est pas directement ou indirectement une classe "
"fille de B. Pour vérifier l'héritage dans le sens plus restreint, parcourez "
"l'\\ :term:`ordre de résolution des méthodes <MRO>` de la classe :"
#: faq/programming.rst:1483
msgid ""
@ -2320,7 +2333,6 @@ msgstr ""
"récursion infinie."
#: faq/programming.rst:1558
#, fuzzy
msgid ""
"How do I call a method defined in a base class from a derived class that "
"extends it?"
@ -2339,6 +2351,11 @@ msgid ""
"resolution order` (MRO) with ``type(self).__mro__``, and return the next in "
"line after ``Derived`` in the MRO: ``Base``."
msgstr ""
"Dans cet exemple, :func:`super` détermine automatiquement l'instance dont "
"une méthode l'appelle (l'objet ``self``), observe l'\\ :term:`ordre de "
"résolution des méthodes <method resolution order>` obtenu avec ``type(self)."
"__mro__``, et renvoie la classe qui suit ``Derived`` dans cet ordre, donc "
"``Base``."
#: faq/programming.rst:1573
msgid "How can I organize my code to make it easier to change the base class?"
@ -2634,13 +2651,15 @@ msgstr ""
#: faq/programming.rst:1765
msgid "When can I rely on identity tests with the *is* operator?"
msgstr ""
msgstr "Quand puis-je raisonnablement utiliser le test d'identité *is* ?"
#: faq/programming.rst:1767
msgid ""
"The ``is`` operator tests for object identity. The test ``a is b`` is "
"equivalent to ``id(a) == id(b)``."
msgstr ""
"L'opérateur ``is`` détermine si deux objets sont identiques, c'est à dire le "
"même objet. Le test ``a is b`` est équivalent à ``id(a) == id(b)``."
#: faq/programming.rst:1770
msgid ""
@ -2649,6 +2668,11 @@ msgid ""
"usually faster than equality tests. And unlike equality tests, identity "
"tests are guaranteed to return a boolean ``True`` or ``False``."
msgstr ""
"La propriété la plus importante du test d'identité est qu'un objet est "
"toujours identique à lui-même. Quel que soit la valeur de *a*, ``a is a`` "
"vaut toujours ``True``. Un test d'identité est généralement plus rapide "
"qu'un test d'égalité. De plus, contrairement à l'opérateur ``==``, "
"l'opérateur ``is`` renvoie toujours un booléen, ``True`` ou ``False``."
#: faq/programming.rst:1775
msgid ""
@ -2656,12 +2680,18 @@ msgid ""
"object identity is assured. Generally, there are three circumstances where "
"identity is guaranteed:"
msgstr ""
"Cependant, les tests d'identité ne peuvent remplacer les tests d'égalité que "
"si l'identité est garantie. C'est le cas dans les trois situations "
"suivantes :"
#: faq/programming.rst:1779
msgid ""
"1) Assignments create new names but do not change object identity. After "
"the assignment ``new = old``, it is guaranteed that ``new is old``."
msgstr ""
"1) Les affectations créent de nouvelles variables, mais pas de nouveaux "
"objets. Après l'affectation ``nouveau = ancien``, ``nouveau is ancien`` "
"vaudra toujours ``True``."
#: faq/programming.rst:1782
msgid ""
@ -2669,6 +2699,10 @@ msgid ""
"change object identity. After the list assignment ``s[0] = x``, it is "
"guaranteed that ``s[0] is x``."
msgstr ""
"Le stockage d'un objet dans un conteneur qui fonctionne avec des références "
"n'altère pas l'identité. Si ``s`` est une liste, alors après l'affectation "
"de *x* à l'indice 0, ``s[0] = x``, le test ``s[0] is x`` s'évalue forcément "
"à ``True``."
#: faq/programming.rst:1786
msgid ""
@ -2676,6 +2710,9 @@ msgid ""
"object can exist. After the assignments ``a = None`` and ``b = None``, it "
"is guaranteed that ``a is b`` because ``None`` is a singleton."
msgstr ""
"3) Les singletons sont des objets spéciaux qui ne sont jamais dupliqués. "
"Après les affectations ``a = None`` et ``b = None``, on a forcément ``a is "
"b``, puisque ``None`` est un singleton."
#: faq/programming.rst:1790
msgid ""
@ -2684,16 +2721,26 @@ msgid ""
"check constants such as :class:`int` and :class:`str` which aren't "
"guaranteed to be singletons::"
msgstr ""
"Dans la plupart des autres cas, un test d'identité n'est pas approprié par "
"rapport à un test d'égalité. En particulier, il ne faut pas utiliser ``is`` "
"pour comparer à des constantes comme les entiers (type :class:`int`) ou des "
"chaînes de caractères (type :class:`str`) car ces valeurs ne sont pas "
"nécessairement des singletons :"
#: faq/programming.rst:1807
msgid "Likewise, new instances of mutable containers are never identical::"
msgstr ""
"De même, deux instances fraîchement créées d'un type de conteneurs muables "
"ne sont jamais identiques :"
#: faq/programming.rst:1814
msgid ""
"In the standard library code, you will see several common patterns for "
"correctly using identity tests:"
msgstr ""
"Voici quelques exemples de la bibliothèque standard qui illustrent comment "
"utiliser correctement les tests d'identité dans certaines situations "
"particulières :"
#: faq/programming.rst:1817
msgid ""
@ -2702,6 +2749,10 @@ msgid ""
"confusion with other objects that may have boolean values that evaluate to "
"false."
msgstr ""
"1) Comme recommandé par la :pep:`8`, il est préférable de comparer avec "
"``None`` par identité. Le test se lit comme de la prose anglaise (``x is "
"None``, ``x is not None``), et cela évite des surprises avec les objets dont "
"la valeur booléenne est ``False``."
#: faq/programming.rst:1821
msgid ""
@ -2710,6 +2761,11 @@ msgid ""
"guaranteed to be distinct from other objects. For example, here is how to "
"implement a method that behaves like :meth:`dict.pop`::"
msgstr ""
"2) Savoir si un paramètre facultatif a été passé ou pas peut nécessiter un "
"peu de subtilité lorsque ``None`` est une valeur acceptable pour le "
"paramètre. Dans ces cas, il faut créer un objet singleton dit "
 sentinelle », distinct de toute valeur acceptable. Voici par exemple "
"comment écrire une méthode qui émule :meth:`dict.pop` :"
#: faq/programming.rst:1837
msgid ""
@ -2717,17 +2773,24 @@ msgid ""
"identity tests. This prevents the code from being confused by objects such "
"as ``float('NaN')`` that are not equal to themselves."
msgstr ""
"3) Il arrive que l'implémentation d'un type de conteneurs doive ajouter des "
"tests d'identité aux tests d'égalité, ceci afin d'éviter un comportement non "
"souhaité avec les objets comme ``float('NaN')`` qui ne sont pas égaux à eux-"
"mêmes."
#: faq/programming.rst:1841
msgid ""
"For example, here is the implementation of :meth:`collections.abc.Sequence."
"__contains__`::"
msgstr ""
"Par exemple, l'implémentation de :meth:`collections.abc.Sequence."
"__contains__` est :"
#: faq/programming.rst:1852
msgid ""
"How can a subclass control what data is stored in an immutable instance?"
msgstr ""
"Comment définir dans une classe fille les attributs d'une instance immuable ?"
#: faq/programming.rst:1854
msgid ""
@ -2736,21 +2799,27 @@ msgid ""
"instance is created, which is too late to alter data in an immutable "
"instance."
msgstr ""
"Lorsque l'on crée une classe héritant d'une classe d'objets immuables, il "
"faut remplacer la méthode :meth:`__new__`, et non pas la méthode :meth:"
"`__init__`. En effet, cette dernière est exécutée seulement après que "
"l'instance soit créée, donc il y est trop tard pour modifier le contenu "
"d'une instance si elle est immuable."
#: faq/programming.rst:1859
msgid ""
"All of these immutable classes have a different signature than their parent "
"class:"
msgstr ""
"Toutes les classes d'objets immuables suivantes ont des signatures de "
"constructeur différentes de leur classe mère :"
#: faq/programming.rst:1885
msgid "The classes can be used like this:"
msgstr ""
msgstr "Ces classes s'utilisent comme ceci :"
#: faq/programming.rst:1900
#, fuzzy
msgid "How do I cache method calls?"
msgstr "Comment créer une liste à plusieurs dimensions ?"
msgstr "Comment mettre en cache le résultat d'une méthode ?"
#: faq/programming.rst:1902
msgid ""
@ -2758,6 +2827,10 @@ msgid ""
"cached_property` and :func:`functools.lru_cache`. The former stores results "
"at the instance level and the latter at the class level."
msgstr ""
"Il existe deux outils principaux pour mettre en cache la valeur de retour "
"d'une méthode, à savoir :func:`functools.cached_property`, qui stocke les "
"valeurs au niveau de l'instance, et :func:`functools.lru_cache`, qui le fait "
"au niveau de la classe."
#: faq/programming.rst:1907
msgid ""
@ -2765,6 +2838,9 @@ msgid ""
"arguments. It does not create a reference to the instance. The cached "
"method result will be kept only as long as the instance is alive."
msgstr ""
"La fonction ``cached_property`` n'est applicable qu'aux méthodes sans "
"argument. Elle n'induit aucune de référence vers l'instance. Le cache est "
"simplement conservé aussi longtemps que l'instance elle-même."
#: faq/programming.rst:1911
msgid ""
@ -2773,6 +2849,9 @@ msgid ""
"accumulate, so too will the accumulated method results. They can grow "
"without bound."
msgstr ""
"L'avantage est que le cache est supprimé aussitôt que l'instance est "
"détruite. L'inconvénient est que les caches peuvent s'accumuler avec les "
"instances, sans limite de nombre."
#: faq/programming.rst:1916
msgid ""
@ -2780,6 +2859,9 @@ msgid ""
"It creates a reference to the instance unless special efforts are made to "
"pass in weak references."
msgstr ""
"La fonction ``lru_cache`` s'applique quant à elle aux méthodes dont les "
"arguments sont hachables. Elle crée une référence forte à l'instance, sauf à "
"passer par des circonvolutions pour que la référence soit faible."
#: faq/programming.rst:1920
msgid ""
@ -2787,11 +2869,17 @@ msgid ""
"bounded by the specified *maxsize*. The disadvantage is that instances are "
"kept alive until they age out of the cache or until the cache is cleared."
msgstr ""
"L'avantage de l'algorithme LRU est d'offrir une limitation sur la taille du "
"cache, que l'on peut régler avec le paramètre *maxsize* (LRU signifie *Least "
"Recently Used* en anglais, les entrées du cache les plus anciennes sont "
"évincées pour conserver la taille). L'inconvénient est qu'une référence "
"forte vers l'instance est conservée dans le cache, ce qui maintient "
"l'instance hors de portée du ramasse-miettes jusqu'à ce que l'entrée soit "
"effacée du cache ou que le cache soit remis à zéro."
#: faq/programming.rst:1925
#, fuzzy
msgid "This example shows the various techniques::"
msgstr "Il y a plusieurs façons de faire."
msgstr "Voici une démonstration des différentes techniques :"
#: faq/programming.rst:1949
msgid ""
@ -2799,6 +2887,10 @@ msgid ""
"relevant instance attributes are mutable, the *cached_property* approach "
"can't be made to work because it cannot detect changes to the attributes."
msgstr ""
"Cet exemple suppose que l'attribut *station_id* n'est jamais changé. Si les "
"attributs utilisés par la méthode sont susceptible d'être modifiés, "
"``cached_property`` ne peut pas fonctionner car elle ne peut pas détecter "
"les mutations pour invalider le cache."
#: faq/programming.rst:1954
msgid ""
@ -2806,6 +2898,9 @@ msgid ""
"the *__eq__* and *__hash__* methods so the cache can detect relevant "
"attribute updates::"
msgstr ""
"En revanche, ``lru_cache`` est utilisable à condition de définir les "
"méthodes ``__eq__`` et ``__hash__`` pour que le cache soit à même de "
"détecter toute modification des attributs."
#: faq/programming.rst:1980
msgid "Modules"
@ -2947,63 +3042,57 @@ msgid "Suppose you have the following modules:"
msgstr "Considérons les modules suivants :"
#: faq/programming.rst:2054
#, fuzzy
msgid ":file:`foo.py`::"
msgstr "*foo.py* ::"
msgstr ":file:`foo.py` :"
#: faq/programming.rst:2059
#, fuzzy
msgid ":file:`bar.py`::"
msgstr "*bar.py* ::"
msgstr ":file:`bar.py` :"
#: faq/programming.rst:2064
msgid "The problem is that the interpreter will perform the following steps:"
msgstr "Le problème réside dans les étapes que l'interpréteur va réaliser :"
#: faq/programming.rst:2066
#, fuzzy
msgid "main imports ``foo``"
msgstr "*main* importe *foo*"
msgstr "*main* importe *foo* ;"
#: faq/programming.rst:2067
#, fuzzy
msgid "Empty globals for ``foo`` are created"
msgstr "Les variables globales (vides) de *foo* sont créées"
msgstr "Les variables globales (vides) de *foo* sont créées ;"
#: faq/programming.rst:2068
#, fuzzy
msgid "``foo`` is compiled and starts executing"
msgstr "*foo* est compilé et commence à s'exécuter"
msgstr "*foo* est compilé et commence à s'exécuter ;"
#: faq/programming.rst:2069
#, fuzzy
msgid "``foo`` imports ``bar``"
msgstr "*foo* importe *bar*"
msgstr "*foo* importe *bar* ;"
#: faq/programming.rst:2070
#, fuzzy
msgid "Empty globals for ``bar`` are created"
msgstr "Les variables globales (vides) de *bar* sont créées"
msgstr "Les variables globales (vides) de *bar* sont créées ;"
#: faq/programming.rst:2071
#, fuzzy
msgid "``bar`` is compiled and starts executing"
msgstr "*bar* est compilé et commence à s'exécuter"
msgstr "*bar* est compilé et commence à s'exécuter ;"
#: faq/programming.rst:2072
#, fuzzy
msgid ""
"``bar`` imports ``foo`` (which is a no-op since there already is a module "
"named ``foo``)"
msgstr ""
"*bar* importe *foo* (en réalité, rien ne passe car il y a déjà un module "
"appelé *foo*)"
"appelé *foo*) ;"
#: faq/programming.rst:2073
msgid ""
"The import mechanism tries to read ``foo_var`` from ``foo`` globals, to set "
"``bar.foo_var = foo.foo_var``"
msgstr ""
"La machinerie des imports tente de lire *foo_var* dans les variables "
"globales de *foo* pour procéder à l'affectation ``bar.foo_var = foo."
"foo_var``."
#: faq/programming.rst:2075
msgid ""