diff --git a/reference/import.po b/reference/import.po index 3f95650a..b6ac2608 100644 --- a/reference/import.po +++ b/reference/import.po @@ -3,23 +3,23 @@ # This file is distributed under the same license as the Python package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-12-01 07:43+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"PO-Revision-Date: 2018-05-09 21:17+0200\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Last-Translator: \n" +"Language-Team: \n" +"X-Generator: Poedit 2.0.2\n" #: ../Doc/reference/import.rst:6 msgid "The import system" -msgstr "" +msgstr "Le système d'import" #: ../Doc/reference/import.rst:10 msgid "" @@ -29,6 +29,12 @@ msgid "" "way. Functions such as :func:`importlib.import_module` and built-in :func:" "`__import__` can also be used to invoke the import machinery." msgstr "" +"Le code Python d'un :term:`module` peut accéder à du code d'un autre module " +"par un mécanisme qui consiste à :term:`importer` cet autre module. " +"L'instruction :keyword:`import` est la façon la plus courante d'invoquer ce " +"système d'import, mais ce n'est pas la seule. Les fonctions telles que :func:" +"`importlib.import_module` et :func:`__import__` peuvent aussi être utilisées " +"pour invoquer le mécanisme d'import." #: ../Doc/reference/import.rst:16 msgid "" @@ -40,6 +46,14 @@ msgid "" "name binding operation of the :keyword:`import` statement. See the :keyword:" "`import` statement for the exact details of that name binding operation." msgstr "" +"L'instruction :keyword:`import` effectue deux opérations ; elle cherche le " +"module dont le nom a été donné puis elle lie le résultat de cette recherche " +"à un nom dans la portée locale. L'opération de recherche de l'instruction :" +"keyword:`import` consiste à appeler la fonction :func:`__import__` avec les " +"arguments adéquats. La valeur renvoyée par :func:`__import__` est utilisée " +"pour effectuer l'opération de liaison avec le nom fourni à l'instruction :" +"keyword:`import`. Reportez-vous à l'instruction :keyword:`import` pour les " +"détails exacts de l'opération de liaison avec le nom." #: ../Doc/reference/import.rst:25 msgid "" @@ -49,6 +63,12 @@ msgid "" "(including :data:`sys.modules`), only the :keyword:`import` statement " "performs a name binding operation." msgstr "" +"Un appel direct à :func:`__import__` effectue seulement la recherche du " +"module et, s'il est trouvé, l'opération de création du module. Bien que des " +"effets collatéraux puissent se produire, tels que l'import de paquets " +"parents et la mise à jour de divers caches (y compris :data:`sys.modules`), " +"il n'y a que l'instruction :keyword:`import` qui déclenche l'opération de " +"liaison avec le nom." #: ../Doc/reference/import.rst:31 msgid "" @@ -58,6 +78,11 @@ msgid "" "subvert :func:`__import__` and use its own solution to implement import " "semantics." msgstr "" +"Lors de l'appel à :func:`__import__` dans le déroulement de l'instruction " +"d'import, la fonction native :func:`__import__` est appelée. D'autres " +"mécanismes d'appel au système d'import (tels que :func:`importlib." +"import_module`) peuvent choisir d'ignorer :func:`__import__` et utiliser " +"leur propre solution pour implémenter la sémantique d'importation." #: ../Doc/reference/import.rst:37 msgid "" @@ -68,6 +93,12 @@ msgid "" "machinery is invoked. These strategies can be modified and extended by " "using various hooks described in the sections below." msgstr "" +"Quand un module est importé pour la première fois, Python recherche le " +"module et, s'il est trouvé, créé un objet module [#fnmo]_ en l'initialisant. " +"Si le module n'est pas trouvé, une :exc:`ModuleNotFoundError` est levée. " +"Python implémente plusieurs stratégies pour rechercher le module d'un nom " +"donné quand le mécanisme d'import est invoqué. Ces stratégies peuvent être " +"modifiées et étendues par divers moyens décrits dans les sections suivantes." #: ../Doc/reference/import.rst:44 msgid "" @@ -76,10 +107,15 @@ msgid "" "import system is exposed through :data:`sys.meta_path`. In addition, native " "namespace package support has been implemented (see :pep:`420`)." msgstr "" +"Le système d'import a été mis à jour pour implémenter complètement la " +"deuxième partie de la :pep:`302`. Il n'existe plus de mécanisme implicite " +"d'import (le système d'import complet est exposé *via* :data:`sys." +"meta_path`). En complément, la gestion du paquet des noms natifs a été " +"implémenté (voir la :pep:`420`)." #: ../Doc/reference/import.rst:52 msgid ":mod:`importlib`" -msgstr "" +msgstr ":mod:`importlib`" #: ../Doc/reference/import.rst:54 msgid "" @@ -89,10 +125,16 @@ msgid "" "import machinery. Refer to the :mod:`importlib` library documentation for " "additional detail." msgstr "" +"Le module :mod:`importlib` fournit une API riche pour interagir avec le " +"système d'import. Par exemple, :func:`importlib.import_module` fournit une " +"API (que nous vous recommandons) plus simple que la fonction native :func:" +"`__import__` pour invoquer le mécanisme d'import. Reportez-vous à la " +"documentation de la bibliothèque :mod:`importlib` pour obtenir davantage de " +"détails." #: ../Doc/reference/import.rst:63 msgid "Packages" -msgstr "Les paquets" +msgstr "Différents types de paquets" #: ../Doc/reference/import.rst:68 msgid "" @@ -101,6 +143,11 @@ msgid "" "else. To help organize modules and provide a naming hierarchy, Python has a " "concept of :term:`packages `." msgstr "" +"Python ne connait qu'un seul type d'objet module et tous les modules sont " +"donc de ce type, que le module soit implémenté en Python, en C ou quoi que " +"ce soit d'autre. Pour aider à l'organisation des modules et fournir une " +"hiérarchie des noms, Python développe le concept de :term:`paquets " +"`." #: ../Doc/reference/import.rst:73 msgid "" @@ -112,6 +159,14 @@ msgid "" "hierarchically, and packages may themselves contain subpackages, as well as " "regular modules." msgstr "" +"Vous pouvez vous représenter les paquets comme des répertoires dans le " +"système de fichiers et les modules comme des fichiers dans ces répertoires. " +"Mais ne prenez pas trop cette analogie au pied de la lettre car les paquets " +"et les modules ne proviennent pas obligatoirement du système de fichiers. " +"Dans le cadre de cette documentation, nous utilisons cette analogie bien " +"pratique des répertoires et des fichiers. Comme les répertoires du système " +"de fichiers, les paquets sont organisés de manière hiérarchique et les " +"paquets peuvent eux-mêmes contenir des sous-paquets ou des modules." #: ../Doc/reference/import.rst:81 msgid "" @@ -120,6 +175,10 @@ msgid "" "of module. Specifically, any module that contains a ``__path__`` attribute " "is considered a package." msgstr "" +"Il est important de garder à l'esprit que tous les paquets sont des modules " +"mais que tous les modules ne sont pas des paquets. Formulé autrement, les " +"paquets sont juste un certain type de modules. Spécifiquement, tout module " +"qui contient un attribut ``__path__`` est réputé être un paquet." #: ../Doc/reference/import.rst:86 msgid "" @@ -129,10 +188,16 @@ msgid "" "`email`, which in turn has a subpackage called :mod:`email.mime` and a " "module within that subpackage called :mod:`email.mime.text`." msgstr "" +"Tous les modules ont un nom. Les noms des sous-paquets sont séparés du nom " +"du paquet parent par des points (`.`), comme pour la syntaxe standard " +"d'accès aux attributs en Python. Ainsi, vous pouvez avoir un module nommé :" +"mod:`sys` et un paquet nommé :mod:`email`, qui a son tour possède un sous-" +"paquet nommé :mod:`email.mime` avec un module dans ce sous-paquet nommé :mod:" +"`email.mime.text`." #: ../Doc/reference/import.rst:94 msgid "Regular packages" -msgstr "" +msgstr "Paquets classiques" #: ../Doc/reference/import.rst:99 msgid "" @@ -146,12 +211,21 @@ msgid "" "same Python code that any other module can contain, and Python will add some " "additional attributes to the module when it is imported." msgstr "" +"Python définit deux types de paquets, les :term:`paquets classiques ` et les :term:`paquets espaces de noms `. Les " +"paquets classiques sont les paquets traditionnels tels qu'ils existaient " +"dans Python 3.2 et antérieurs. Un paquet classique est typiquement " +"implémenté sous la forme d'un répertoire contenant un fichier ``__init__." +"py``. Quand un paquet classique est importé, ce fichier ``__init__.py`` est " +"implicitement exécuté." #: ../Doc/reference/import.rst:109 msgid "" "For example, the following file system layout defines a top level ``parent`` " "package with three subpackages::" msgstr "" +"Par exemple, l'arborescence suivante définit un paquet ``parent`` au niveau " +"le plus haut et sous-paquets ::" #: ../Doc/reference/import.rst:121 msgid "" @@ -160,10 +234,14 @@ msgid "" "``parent.three`` will execute ``parent/two/__init__.py`` and ``parent/three/" "__init__.py`` respectively." msgstr "" +"Importer ``parent.one`` exécute implicitement ``parent/__init__.py`` et " +"``parent/one/__init__.py``. Les imports postérieurs de ``parent.two`` ou " +"``parent.three`` respectivement exécutent ``parent/two/__init__.py`` ou " +"``parent/three/__init__.py`` respectivement." #: ../Doc/reference/import.rst:128 msgid "Namespace packages" -msgstr "" +msgstr "Paquets espaces de noms" #: ../Doc/reference/import.rst:134 msgid "" @@ -175,6 +253,14 @@ msgid "" "objects on the file system; they may be virtual modules that have no " "concrete representation." msgstr "" +"Un paquet-espace de noms est la combinaison de plusieurs :term:`portions " +"` où chaque portion fournit un sous-paquet au paquet parent. Les " +"portions peuvent être situées à différents endroits du système de fichiers. " +"Les portions peuvent aussi être stockées dans des fichiers zip, sur le " +"réseau ou à tout autre endroit dans lequel Python cherche pendant l'import. " +"Les paquets-espace de noms peuvent correspondre directement à des objets du " +"système de fichiers, ou pas ; ils peuvent être des modules virtuels qui " +"n'ont aucune représentation concrète." #: ../Doc/reference/import.rst:142 msgid "" @@ -184,6 +270,12 @@ msgid "" "that package if the path of their parent package (or :data:`sys.path` for a " "top level package) changes." msgstr "" +"Les paquets-espaces de noms n'utilisent pas une liste ordinaire pour leur " +"attribut ``__path__``. Ils utilisent en lieu et place un type itérable " +"personnalisé qui effectue automatiquement une nouvelle recherche de portions " +"de paquets à la tentative suivante d'import dans le paquet si le chemin du " +"paquet parent (ou :data:`sys.path` pour les paquets de plus haut niveau) " +"change." #: ../Doc/reference/import.rst:148 msgid "" @@ -194,14 +286,22 @@ msgid "" "create a namespace package for the top-level ``parent`` package whenever it " "or one of its subpackages is imported." msgstr "" +"Pour les paquets-espaces de noms, il n'existe pas de fichier ``parent/" +"__init__.py``. En fait, il peut y avoir plusieurs répertoires ``parent`` " +"trouvés pendant le processus d'import, où chacun est apporté par une portion " +"différente. Ainsi, ``parent/one`` n'est pas forcément physiquement proche de " +"``parent/two``. Dans ce cas, Python crée un paquet-espace de noms pour le " +"paquet de plus haut niveau ``parent`` dès que lui ou un de ses sous-paquet " +"est importé." #: ../Doc/reference/import.rst:155 msgid "See also :pep:`420` for the namespace package specification." msgstr "" +"Voir aussi la :pep:`420` pour les spécifications des paquets-espaces de noms." #: ../Doc/reference/import.rst:159 msgid "Searching" -msgstr "" +msgstr "Recherche" #: ../Doc/reference/import.rst:161 msgid "" @@ -212,6 +312,11 @@ msgid "" "parameters to the :func:`importlib.import_module` or :func:`__import__` " "functions." msgstr "" +"Pour commencer la recherche, Python a besoin du :term:`nom qualifié " +"` du module (ou du paquet, mais ici cela ne fait pas de " +"différence) que vous souhaitez importer. Le nom peut être donné en argument " +"à l'instruction :keyword:`import` ou comme paramètre aux fonctions :func:" +"`importlib.import_module` ou :func:`__import__`." #: ../Doc/reference/import.rst:167 msgid "" @@ -221,10 +326,15 @@ msgid "" "baz``. If any of the intermediate imports fail, a :exc:`ModuleNotFoundError` " "is raised." msgstr "" +"Le nom est utilisé dans plusieurs phases de la recherche et peut être un " +"chemin séparé par des points pour un sous-module, par exemple ``truc.machin." +"bidule``. Dans ce cas, Python essaie d'abord d'importer ``truc`` puis ``truc." +"machin`` et enfin ``truc.machin.bidule``. Si n'importe lequel des imports " +"intermédiaire échoue, une :exc:`ModuleNotFoundError` est levée." #: ../Doc/reference/import.rst:174 msgid "The module cache" -msgstr "" +msgstr "Cache des modules" #: ../Doc/reference/import.rst:179 msgid "" @@ -235,6 +345,12 @@ msgid "" "and ``foo.bar.baz``. Each key will have as its value the corresponding " "module object." msgstr "" +"Le premier endroit vérifié pendant la recherche d'un import est :data:`sys." +"modules`. Ce tableau de correspondances est utilisé comme cache de tous les " +"modules déjà importés, y compris les chemins intermédiaires. Ainsi, si " +"``truc.machin.bidule`` a déjà été importé, :data:`sys.modules` contient les " +"entrées correspondantes à ``truc``, ``truc.machin`` et ``truc.machin." +"bidule``. À chaque chemin correspond une clé." #: ../Doc/reference/import.rst:186 msgid "" @@ -244,6 +360,11 @@ msgid "" "`ModuleNotFoundError` is raised. If the module name is missing, Python will " "continue searching for the module." msgstr "" +"Pendant l'import, le nom de module est cherché dans :data:`sys.modules` et, " +"s'il est trouvé, la valeur associée est le module recherché et le processus " +"est fini. Cependant, si la valeur est ``None``, alors une :exc:" +"`ModuleNotFoundError` est levée. Si le nom du module n'est pas trouvé, " +"Python continue la recherche du module." #: ../Doc/reference/import.rst:192 msgid "" @@ -254,6 +375,12 @@ msgid "" "to ``None``, forcing the next import of the module to result in a :exc:" "`ModuleNotFoundError`." msgstr "" +":data:`sys.modules` est accessible en lecture-écriture. Supprimer une clé " +"peut ne pas détruire le module associé (car d'autres modules contiennent " +"possiblement des références vers ce module), mais cela invalide l'entrée du " +"cache pour ce nom de module. Python cherche alors un nouveau module pour ce " +"nom. La clé peut aussi être assignée à ``None`` de manière à forcer, lors du " +"prochain import du module, une :exc:`ModuleNotFoundError`." #: ../Doc/reference/import.rst:199 msgid "" @@ -263,10 +390,15 @@ msgid "" "reload` will reuse the *same* module object, and simply reinitialise the " "module contents by rerunning the module's code." msgstr "" +"Attention cependant : s'il reste une référence à l'objet module et que vous " +"invalidez l'entrée dans le cache de :data:`sys.modules` puis ré-importez le " +"module, les deux objets modules ne seront pas les mêmes. À l'inverse, :func:" +"`importlib.reload` ré-utilise le *même* objet module et ré-initialise " +"simplement le contenu du module en ré-exécutant le code du module." #: ../Doc/reference/import.rst:207 msgid "Finders and loaders" -msgstr "" +msgstr "Chercheurs et chargeurs" #: ../Doc/reference/import.rst:214 msgid "" @@ -279,6 +411,14 @@ msgid "" "they return themselves when they find that they can load the requested " "module." msgstr "" +"Si le module n'est pas trouvé dans :data:`sys.modules`, alors Python utilise " +"son protocole d'import pour chercher et charger le module. Ce protocole se " +"compose de deux objets conceptuels : les :term:`chercheurs ` et les :" +"term:`chargeurs `. Le travail du chercheur consiste à trouver le " +"module dont le nom a été fourni à l'aide de différentes stratégies. Les " +"objets qui implémentent ces interfaces sont connus sous le vocable \":term:" +"`importateurs `\" (ils renvoient une référence vers eux-mêmes " +"quand ils trouvent un module qui répond aux attentes)." #: ../Doc/reference/import.rst:222 msgid "" @@ -289,12 +429,21 @@ msgid "" "system paths or zip files. It can also be extended to search for any " "locatable resource, such as those identified by URLs." msgstr "" +"Python inclut plusieurs chercheurs et importateurs par défaut. Le premier " +"sait comment trouver les modules natifs et le deuxième sait comment trouver " +"les modules gelés. Un troisième chercheur recherche les modules dans :term:" +"`import path`. :term:`import path` est une énumération sous forme de liste " +"de chemins ou de fichiers zip. Il peut être étendu pour rechercher aussi " +"dans toute ressource qui dispose d'un identifiant pour la localiser, une URL " +"par exemple." #: ../Doc/reference/import.rst:229 msgid "" "The import machinery is extensible, so new finders can be added to extend " "the range and scope of module searching." msgstr "" +"Le mécanisme d'import est extensible, vous pouvez donc ajouter de nouveaux " +"chercheurs pour étendre le domaine de recherche des modules." #: ../Doc/reference/import.rst:232 msgid "" @@ -303,6 +452,10 @@ msgid "" "related information, which the import machinery then uses when loading the " "module." msgstr "" +"Les chercheurs ne chargent pas les modules. S'il trouve le module demandé, " +"un chercheur renvoie un :dfn:`module spec`, information encapsulée pour " +"importer le module, qui est alors utilisé par le mécanisme d'import pour " +"charger le module." #: ../Doc/reference/import.rst:236 msgid "" @@ -310,6 +463,9 @@ msgid "" "detail, including how you can create and register new ones to extend the " "import machinery." msgstr "" +"Les sections suivantes décrivent plus en détail le protocole utilisé par les " +"chercheurs et les chargeurs, y compris la manière de les créer et les " +"enregistrer pour étendre le mécanisme d'import." #: ../Doc/reference/import.rst:240 msgid "" @@ -317,10 +473,14 @@ msgid "" "directly, whereas now they return module specs which *contain* loaders. " "Loaders are still used during import but have fewer responsibilities." msgstr "" +"Dans les versions précédentes de Python, les chercheurs renvoyaient " +"directement les :term:`chargeurs `. Dorénavant, ils renvoient des " +"spécificateurs de modules qui *contiennent* les chargeurs. Les chargeurs " +"sont encore utilisés lors de l'importation mais ont moins de responsabilités." #: ../Doc/reference/import.rst:246 msgid "Import hooks" -msgstr "" +msgstr "Points d'entrées automatiques pour l'import" #: ../Doc/reference/import.rst:256 msgid "" @@ -328,6 +488,10 @@ msgid "" "this are the *import hooks*. There are two types of import hooks: *meta " "hooks* and *import path hooks*." msgstr "" +"Le mécanisme d'import est conçu pour être extensible ; vous pouvez y insérer " +"des *points d'entrée automatique* (*hook* en anglais). Il existe deux types " +"de points d'entrée automatique pour l'import : les *méta-points d'entrée* et " +"les *points d'entrée sur les chemins d'import*." #: ../Doc/reference/import.rst:260 msgid "" @@ -337,6 +501,12 @@ msgid "" "modules, or even built-in modules. Meta hooks are registered by adding new " "finder objects to :data:`sys.meta_path`, as described below." msgstr "" +"Les méta-points d'entrée sont appelés au début du processus d'import, juste " +"après la vérification dans le cache :data:`sys.modules` mais avant tout le " +"reste. Ceci permet aux méta-points d'entrée de surcharger le traitement " +"effectué sur :data:`sys.path`, les modules gelés ou même les modules natifs. " +"L'enregistrement des méta-points d'entrée se fait en ajoutant de nouveaux " +"objets chercheurs à :data:`sys.meta_path`, comme décrit ci-dessous." #: ../Doc/reference/import.rst:266 msgid "" @@ -345,10 +515,15 @@ msgid "" "encountered. Import path hooks are registered by adding new callables to :" "data:`sys.path_hooks` as described below." msgstr "" +"Les points d'entrée sur les chemins d’import sont appelés pendant le " +"traitement de :data:`sys.path` (ou ``package.__path__``), au moment où le " +"chemin qui leur correspond est atteint. Les points d'entrée sur les chemins " +"d’import sont enregistrés en ajoutant de nouveaux appelables à :data:`sys." +"path_hooks`, comme décrit ci-dessous." #: ../Doc/reference/import.rst:273 msgid "The meta path" -msgstr "" +msgstr "Méta-chemins" #: ../Doc/reference/import.rst:279 msgid "" @@ -361,6 +536,15 @@ msgid "" "meta path finder can use any strategy it wants to determine whether it can " "handle the named module or not." msgstr "" +"Quand le module demandé n'est pas trouvé dans :data:`sys.modules`, Python " +"recherche alors dans :data:`sys.meta_path` qui contient une liste d'objets " +"chercheurs dans des méta-chemins. Ces chercheurs sont interrogés dans " +"l'ordre pour voir s'ils savent prendre en charge le module passé en " +"paramètre. Les chercheurs dans les méta-chemins implémentent une méthode :" +"meth:`~importlib.abc.MetaPathFinder.find_spec()` qui prend trois arguments : " +"un nom, un chemin d'import et (optionnellement) un module cible. Un " +"chercheur dans les méta-chemins peut utiliser n'importe quelle stratégie " +"pour déterminer s'il est apte à prendre en charge le module." #: ../Doc/reference/import.rst:288 msgid "" @@ -370,6 +554,12 @@ msgid "" "returning a spec, then a :exc:`ModuleNotFoundError` is raised. Any other " "exceptions raised are simply propagated up, aborting the import process." msgstr "" +"Si le chercheur dans les méta-chemins sait prendre en charge le module " +"donné, il renvoie un objet spécificateur. S'il ne sait pas, il renvoie " +"``None``. Si le traitement de :data:`sys.meta_path` arrive à la fin de la " +"liste sans qu'aucun chercheur n'a renvoyé un objet spécificateur, alors une :" +"exc:`ModuleNotFoundError` est levée. Toute autre exception levée est " +"simplement propagée à l'appelant, mettant fin au processus d'import." #: ../Doc/reference/import.rst:294 msgid "" @@ -384,6 +574,17 @@ msgid "" "existing module object that will be the target of loading later. The import " "system passes in a target module only during reload." msgstr "" +"La méthode :meth:`~importlib.abc.MetaPathFinder.find_spec()` des chercheurs " +"dans les méta-chemins est appelée avec deux ou trois arguments. Le premier " +"est le nom complètement qualifié du module à importer, par exemple ``truc." +"machin.bidule``. Le deuxième argument est l'ensemble des chemins dans " +"lesquels chercher. Pour les modules de plus haut niveau, le deuxième " +"argument est ``None`` mais pour les sous-modules ou les paquets, le deuxième " +"argument est la valeur de l'attribut ``__path__`` du paquet parent. Si " +"l'attribut ``__path__`` approprié n'est pas accessible, une :exc:" +"`ModuleNotFoundError` est levée. Le troisième argument est un objet module " +"existant qui va être la cible du chargement (plus tard). Le système d'import " +"ne passe le module cible en paramètre que lors d'un rechargement." #: ../Doc/reference/import.rst:305 msgid "" @@ -396,6 +597,16 @@ msgid "" "__path__, None)``. Once ``foo.bar`` has been imported, the final traversal " "will call ``mpf.find_spec(\"foo.bar.baz\", foo.bar.__path__, None)``." msgstr "" +"Le méta-chemin peut être parcouru plusieurs fois pour une seule requête " +"d'import. Par exemple, si nous supposons qu'aucun des modules concernés n'a " +"déjà été mis en cache, importer ``truc.machin.bidule`` effectue un premier " +"import au niveau le plus haut, en appelant ``mpf.find_spec(\"truc\", None, " +"None)`` pour chaque chercheur dans les méta-chemins (``mpf``). Après que " +"``truc`` a été importé, ``truc.machin`` est importé en parcourant le méta-" +"chemin une deuxième fois, appelant ``mpf.find_spec(\"truc.machin\", truc." +"__path__, None)``. Une fois ``truc.machin`` importé, le parcours final " +"appelle ``mpf.find_spec(\"truc.machin.bidule\", truc.machin.__path__, " +"None)``." #: ../Doc/reference/import.rst:315 msgid "" @@ -403,6 +614,9 @@ msgid "" "always return ``None`` when anything other than ``None`` is passed as the " "second argument." msgstr "" +"Quelques chercheurs dans les méta-chemins ne gèrent que les imports de plus " +"haut niveau. Ces importateurs renvoient toujours ``None`` si on leur passe " +"un deuxième argument autre que ``None``." #: ../Doc/reference/import.rst:319 msgid "" @@ -411,6 +625,10 @@ msgid "" "modules, and one that knows how to import modules from an :term:`import " "path` (i.e. the :term:`path based finder`)." msgstr "" +"Par défaut, le :data:`sys.meta_path` de Python comprend trois chercheurs : " +"un qui sait importer les modules natifs, un qui sait importer les modules " +"gelés et un qui sait importer les modules depuis un :term:`import path` " +"(c'est le :term:`chercheur dans les chemins`)." #: ../Doc/reference/import.rst:324 msgid "" @@ -419,10 +637,15 @@ msgid "" "now deprecated. While it will continue to work without change, the import " "machinery will try it only if the finder does not implement ``find_spec()``." msgstr "" +"La méthode :meth:`~importlib.abc.MetaPathFinder.find_spec` des chercheurs " +"dans les méta-chemins a remplacé :meth:`~importlib.abc.MetaPathFinder." +"find_module`, devenu obsolète. Bien qu'il continue toujours de fonctionner " +"comme avant, le mécanisme d'import l'essaie uniquement si le chercheur " +"n'implémente pas ``find_spec()``." #: ../Doc/reference/import.rst:333 msgid "Loading" -msgstr "" +msgstr "Chargement" #: ../Doc/reference/import.rst:335 msgid "" @@ -430,16 +653,21 @@ msgid "" "the loader it contains) when loading the module. Here is an approximation " "of what happens during the loading portion of import::" msgstr "" +"Quand un spécificateur de module est trouvé, le mécanisme d'import l'utilise " +"(et le chargeur qu'il contient) pour charger le module. Voici à peu près ce " +"qui se passe au sein d'import pendant la phase de chargement ::" #: ../Doc/reference/import.rst:370 msgid "Note the following details:" -msgstr "" +msgstr "Notez les détails suivants :" #: ../Doc/reference/import.rst:372 msgid "" "If there is an existing module object with the given name in :data:`sys." "modules`, import will have already returned it." msgstr "" +"S'il existe un objet module dans :data:`sys.modules` avec le même nom, " +"import l'aurait déjà renvoyé." #: ../Doc/reference/import.rst:375 msgid "" @@ -449,6 +677,11 @@ msgid "" "prevents unbounded recursion in the worst case and multiple loading in the " "best." msgstr "" +"Le module existe dans :data:`sys.modules` avant que le chargeur exécute le " +"code du module. C'est crucial car le code du module peut (directement ou " +"indirectement) s'importer lui-même ; l'ajouter à :data:`sys.modules` avant " +"évite les récursions infinies dans le pire cas et le chargement multiple " +"dans le meilleur des cas." #: ../Doc/reference/import.rst:381 msgid "" @@ -458,6 +691,11 @@ msgid "" "effect, must remain in the cache. This contrasts with reloading where even " "the failing module is left in :data:`sys.modules`." msgstr "" +"Si le chargement échoue, le module en cause -- et seulement ce module -- est " +"enlevé de :data:`sys.modules`. Tout module déjà dans le cache de :data:`sys." +"modules` et tout module qui a été chargé avec succès par effet de bord doit " +"rester dans le cache. C'est différent dans le cas d'un rechargement où même " +"un module qui échoue est conservé dans :data:`sys.modules`." #: ../Doc/reference/import.rst:387 msgid "" @@ -466,6 +704,10 @@ msgid "" "code example above), as summarized in a :ref:`later section `." msgstr "" +"Après que le module est créé mais avant son exécution, le mécanisme d'import " +"définit les attributs relatifs à l'import (\"_init_module_attrs\" dans " +"l'exemple de pseudo-code ci-dessus), comme indiqué brièvement dans une :ref:" +"`section ` que nous abordons ensuite." #: ../Doc/reference/import.rst:392 msgid "" @@ -473,12 +715,17 @@ msgid "" "namespace gets populated. Execution is entirely delegated to the loader, " "which gets to decide what gets populated and how." msgstr "" +"L'exécution du module est le moment clé du chargement dans lequel l'espace " +"de noms du module est peuplé. L'exécution est entièrement déléguée au " +"chargeur qui doit décider ce qui est peuplé et comment." #: ../Doc/reference/import.rst:396 msgid "" "The module created during loading and passed to exec_module() may not be the " "one returned at the end of import [#fnlo]_." msgstr "" +"Le modulé créé pendant le chargement et passé à exec_module() peut ne pas " +"être celui qui est renvoyé à la fin de l'import [#fnlo]_." #: ../Doc/reference/import.rst:399 msgid "" @@ -486,10 +733,13 @@ msgid "" "loaders. These were previously performed by the :meth:`importlib.abc.Loader." "load_module` method." msgstr "" +"Le système d'import a pris en charge les responsabilités des chargeurs. " +"Celles-ci étaient auparavant effectuées par la méthode :meth:`importlib.abc." +"Loader.load_module`." #: ../Doc/reference/import.rst:405 msgid "Loaders" -msgstr "" +msgstr "Chargeurs" #: ../Doc/reference/import.rst:407 msgid "" @@ -498,10 +748,15 @@ msgid "" "method with a single argument, the module object to execute. Any value " "returned from :meth:`~importlib.abc.Loader.exec_module` is ignored." msgstr "" +"Les chargeurs de modules fournissent la fonction critique du chargement : " +"l'exécution du module. Le mécanisme d'import appelle la méthode :meth:" +"`importlib.abc.Loader.exec_module` avec un unique argument, l'objet module à " +"exécuter. Toute valeur renvoyée par :meth:`~importlib.abc.Loader." +"exec_module` est ignorée." #: ../Doc/reference/import.rst:412 msgid "Loaders must satisfy the following requirements:" -msgstr "" +msgstr "Les chargeurs doivent satisfaire les conditions suivantes :" #: ../Doc/reference/import.rst:414 msgid "" @@ -509,6 +764,9 @@ msgid "" "dynamically loaded extension), the loader should execute the module's code " "in the module's global name space (``module.__dict__``)." msgstr "" +"Si le module est un module Python (par opposition aux modules natifs ou aux " +"extensions chargées dynamiquement), le chargeur doit exécuter le code du " +"module dans l'espace des noms globaux du module (``module.__dict__``)." #: ../Doc/reference/import.rst:418 msgid "" @@ -516,6 +774,9 @@ msgid "" "`ImportError`, although any other exception raised during :meth:`~importlib." "abc.Loader.exec_module` will be propagated." msgstr "" +"Si le chargeur ne peut pas exécuter le module, il doit lever une :exc:" +"`ImportError`, alors que toute autre exception levée durant :meth:" +"`~importlib.abc.Loader.exec_module` est propagée." #: ../Doc/reference/import.rst:422 msgid "" @@ -523,6 +784,9 @@ msgid "" "the :meth:`~importlib.abc.MetaPathFinder.find_spec` method would just return " "a spec with the loader set to ``self``." msgstr "" +"Souvent, le chercheur et le chargeur sont le même objet ; dans ce cas, la " +"méthode :meth:`~importlib.abc.MetaPathFinder.find_spec` doit juste renvoyer " +"un spécificateur avec le chargeur défini à ``self``." #: ../Doc/reference/import.rst:426 msgid "" @@ -533,10 +797,17 @@ msgid "" "the module object. If the method returns ``None``, the import machinery " "will create the new module itself." msgstr "" +"Les chargeurs de modules peuvent choisir de créer l'objet module pendant le " +"chargement en implémentant une méthode :meth:`~importlib.abc.Loader." +"create_module`. Elle prend un argument, l'objet spécificateur du module et " +"renvoie le nouvel objet du module à utiliser pendant le chargement. Notez " +"que ``create_module()`` n'a besoin de définir aucun attribut sur l'objet " +"module. Si cette méthode renvoie ``None``, le mécanisme d'import crée le " +"nouveau module lui-même." #: ../Doc/reference/import.rst:433 msgid "The :meth:`~importlib.abc.Loader.create_module` method of loaders." -msgstr "" +msgstr "La méthode :meth:`~importlib.abc.Loader.create_module` des chargeurs." #: ../Doc/reference/import.rst:436 msgid "" @@ -544,6 +815,9 @@ msgid "" "`~importlib.abc.Loader.exec_module` and the import machinery assumed all the " "boilerplate responsibilities of loading." msgstr "" +"La méthode :meth:`~importlib.abc.Loader.load_module` a été remplacée par :" +"meth:`~importlib.abc.Loader.exec_module` et le mécanisme d'import assume " +"toutes les responsabilités du chargement." #: ../Doc/reference/import.rst:441 msgid "" @@ -552,6 +826,11 @@ msgid "" "also implement ``exec_module()``. However, ``load_module()`` has been " "deprecated and loaders should implement ``exec_module()`` instead." msgstr "" +"Par compatibilité avec les chargeurs existants, le mécanisme d'import " +"utilise la méthode ``load_module()`` des chargeurs si elle existe et si le " +"chargeur n'implémente pas ``exec_module()``. Cependant, ``load_module()`` " +"est déclarée obsolète et les chargeurs doivent implémenter ``exec_module()`` " +"à la place." #: ../Doc/reference/import.rst:446 msgid "" @@ -559,6 +838,10 @@ msgid "" "functionality described above in addition to executing the module. All the " "same constraints apply, with some additional clarification:" msgstr "" +"La méthode ``load_module()`` *doit* implémenter toutes les fonctionnalités " +"de chargement décrites ci-dessus en plus de l'exécution du module. Toutes " +"les contraintes s'appliquent aussi, avec quelques précisions " +"supplémentaires :" #: ../Doc/reference/import.rst:450 msgid "" @@ -568,12 +851,20 @@ msgid "" "exist in :data:`sys.modules`, the loader must create a new module object and " "add it to :data:`sys.modules`." msgstr "" +"S'il y a un objet module existant avec le même nom dans :data:`sys.modules`, " +"le chargeur doit utiliser le module existant (sinon, :func:`importlib." +"reload` ne fonctionnera pas correctement). Si le module nommé n'est pas " +"trouvé dans :data:`sys.modules`, le chargeur doit créer un nouvel objet " +"module et l'ajouter à :data:`sys.modules`." #: ../Doc/reference/import.rst:456 msgid "" "The module *must* exist in :data:`sys.modules` before the loader executes " "the module code, to prevent unbounded recursion or multiple loading." msgstr "" +"Le module *doit* exister dans :data:`sys.modules` avant que le chargeur " +"n'exécute le code du module, afin d'éviter les récursions infinies ou le " +"chargement multiple." #: ../Doc/reference/import.rst:460 msgid "" @@ -581,22 +872,30 @@ msgid "" "data:`sys.modules`, but it must remove **only** the failing module(s), and " "only if the loader itself has loaded the module(s) explicitly." msgstr "" +"Si le chargement échoue, le chargeur doit enlever tous les modules qu'il a " +"ajoutés dans :data:`sys.modules` mais il ne doit enlever **que** les modules " +"ayant échoué et seulement si le chargeur lui-même a chargé le module " +"explicitement." #: ../Doc/reference/import.rst:465 msgid "" "A :exc:`DeprecationWarning` is raised when ``exec_module()`` is defined but " "``create_module()`` is not." msgstr "" +"Un avertissement :exc:`DeprecationWarning` est levé quand ``exec_module()`` " +"est définie mais ``create_module()`` ne l'est pas." #: ../Doc/reference/import.rst:469 msgid "" "An :exc:`ImportError` is raised when ``exec_module()`` is defined but " "``create_module()`` is not." msgstr "" +"Une exception :exc:`ImportError` est levée quand ``exec_module()`` est " +"définie mais ``create_module()`` ne l'est pas." #: ../Doc/reference/import.rst:474 msgid "Submodules" -msgstr "" +msgstr "Sous-modules" #: ../Doc/reference/import.rst:476 msgid "" @@ -629,7 +928,7 @@ msgstr "" #: ../Doc/reference/import.rst:509 msgid "Module spec" -msgstr "" +msgstr "Spécificateurs de modules" #: ../Doc/reference/import.rst:511 msgid "" @@ -657,7 +956,7 @@ msgstr "" #: ../Doc/reference/import.rst:531 msgid "Import-related module attributes" -msgstr "" +msgstr "Attributs des modules importés" #: ../Doc/reference/import.rst:533 msgid "" @@ -1048,7 +1347,7 @@ msgstr "" #: ../Doc/reference/import.rst:822 msgid "Path entry finder protocol" -msgstr "" +msgstr "Protocole de recherche des chemins de modules" #: ../Doc/reference/import.rst:824 msgid "" @@ -1267,7 +1566,7 @@ msgstr "" #: ../Doc/reference/import.rst:965 msgid "References" -msgstr "" +msgstr "Références" #: ../Doc/reference/import.rst:967 msgid "" @@ -1276,12 +1575,18 @@ msgid "" "packages/>`_ is still available to read, although some details have changed " "since the writing of that document." msgstr "" +"Le mécanisme d'import a considérablement évolué depuis les débuts de Python. " +"La `spécification des paquets `_ originale est toujours disponible, bien que quelques détails ont changé " +"depuis l'écriture de ce document." #: ../Doc/reference/import.rst:972 msgid "" "The original specification for :data:`sys.meta_path` was :pep:`302`, with " "subsequent extension in :pep:`420`." msgstr "" +"La spécification originale de :data:`sys.meta_path` se trouve dans la :pep:" +"`302`. La :pep:`420` contient des extensions significatives." #: ../Doc/reference/import.rst:975 msgid "" @@ -1289,12 +1594,18 @@ msgid "" "Python 3.3. :pep:`420` also introduced the :meth:`find_loader` protocol as " "an alternative to :meth:`find_module`." msgstr "" +"La :pep:`420` a introduit les :term:`paquets-espaces de noms ` pour Python 3.3. :pep:`420` a aussi introduit le protocole :meth:" +"`recherche du chargeur ` comme une alternative à :meth:" +"`find_module`." #: ../Doc/reference/import.rst:979 msgid "" ":pep:`366` describes the addition of the ``__package__`` attribute for " "explicit relative imports in main modules." msgstr "" +"La :pep:`366` décrit l'ajout de l'attribut ``__package__`` pour les imports " +"relatifs explicites dans les modules principaux." #: ../Doc/reference/import.rst:982 msgid "" @@ -1302,10 +1613,13 @@ msgid "" "proposed ``__name__`` for semantics :pep:`366` would eventually specify for " "``__package__``." msgstr "" +"La :pep:`328` a introduit les imports absolus et les imports relatifs " +"explicites. Elle a aussi proposé ``__name__`` pour la sémantique que la :pep:" +"`366` attribuait à ``__package__``." #: ../Doc/reference/import.rst:986 msgid ":pep:`338` defines executing modules as scripts." -msgstr "" +msgstr ":pep:`338` définit l'exécution de modules en tant que scripts." #: ../Doc/reference/import.rst:988 msgid "" @@ -1315,6 +1629,11 @@ msgid "" "of several APIs in the import system and also addition of new methods to " "finders and loaders." msgstr "" +":pep:`451` ajoute l'encapsulation dans les objets spec de l'état des imports " +"module par module. Elle reporte aussi la majorité des responsabilités des " +"chargeurs vers le mécanisme d'import. Ces changements permettent de " +"supprimer plusieurs API dans le système d'import et d'ajouter de nouvelles " +"méthodes aux chercheurs et chargeurs." #: ../Doc/reference/import.rst:995 msgid "Footnotes" @@ -1322,7 +1641,7 @@ msgstr "Notes" #: ../Doc/reference/import.rst:996 msgid "See :class:`types.ModuleType`." -msgstr "" +msgstr "Voir :class:`types.ModuleType`." #: ../Doc/reference/import.rst:998 msgid "" @@ -1332,6 +1651,12 @@ msgid "" "replace itself in :data:`sys.modules`. This is implementation-specific " "behavior that is not guaranteed to work in other Python implementations." msgstr "" +"L'implémentation de importlib évite d'utiliser directement la valeur de " +"retour. À la place, elle récupère l'objet module en recherchant le nom du " +"module dans :data:`sys.modules`. L'effet indirect est que le module importé " +"peut remplacer le module de même nom dans :data:`sys.modules`. C'est un " +"comportement spécifique à l'implémentation dont le résultat n'est pas " +"garanti pour les autres implémentations de Python." #: ../Doc/reference/import.rst:1005 msgid "" @@ -1340,3 +1665,7 @@ msgid "" "that code be changed to use ``None`` instead. See :ref:`portingpythoncode` " "for more details." msgstr "" +"Dans du code historique, il est possible de trouver des instances de :class:" +"`imp.NullImporter` dans :data:`sys.path_importer_cache`. Il est recommandé " +"de modifier ce code afin d'utiliser ``None`` à la place. Lisez :ref:" +"`portingpythoncode` pour plus de détails."