# Copyright (C) 2001-2018, Python Software Foundation
# For licence information, see README file.
#
msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-17 16:05+0100\n"
"PO-Revision-Date: 2019-11-17 01:26+0100\n"
"Last-Translator: Mathieu Dupuy <deronnax@gmail.com>\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.2.4\n"

#: library/asyncio-policy.rst:8
msgid "Policies"
msgstr "Stratégies"

#: library/asyncio-policy.rst:10
msgid ""
"An event loop policy is a global per-process object that controls the "
"management of the event loop. Each event loop has a default policy, which "
"can be changed and customized using the policy API."
msgstr ""
"Une stratégie de boucle d'événements est un objet global, pour chaque "
"processus, qui contrôle la gestion de la boucle d'événement. Chaque boucle "
"d'événement a une stratégie par défaut, qui peut être modifiée et "
"personnalisée à l'aide de l'API de la stratégie."

#: library/asyncio-policy.rst:14
msgid ""
"A policy defines the notion of *context* and manages a separate event loop "
"per context. The default policy defines *context* to be the current thread."
msgstr ""
"Une stratégie définit la notion de *contexte* et gère une boucle d'événement "
"distincte par contexte. La stratégie par défaut définit le *contexte* comme "
"étant le fil d'exécution actuel."

#: library/asyncio-policy.rst:18
msgid ""
"By using a custom event loop policy, the behavior of :func:"
"`get_event_loop`, :func:`set_event_loop`, and :func:`new_event_loop` "
"functions can be customized."
msgstr ""
"En utilisant une stratégie de boucle d'événement personnalisée, le "
"comportement des fonctions :func:`get_event_loop`, :func:`set_event_loop` "
"et :func:`new_event_loop` peut être personnalisé."

#: library/asyncio-policy.rst:22
msgid ""
"Policy objects should implement the APIs defined in the :class:"
"`AbstractEventLoopPolicy` abstract base class."
msgstr ""
"Les objets de stratégie doivent implémenter les API définies dans la classe "
"de base abstraite :class:`AbstractEventLoopPolicy`."

#: library/asyncio-policy.rst:27
msgid "Getting and Setting the Policy"
msgstr "Obtenir et définir la stratégie"

#: library/asyncio-policy.rst:29
msgid ""
"The following functions can be used to get and set the policy for the "
"current process:"
msgstr ""
"Les fonctions suivantes peuvent être utilisées pour obtenir et définir la "
"stratégie du processus en cours :"

#: library/asyncio-policy.rst:34
msgid "Return the current process-wide policy."
msgstr "Renvoie la stratégie actuelle à l'échelle du processus."

#: library/asyncio-policy.rst:38
msgid "Set the current process-wide policy to *policy*."
msgstr ""
"Définit la stratégie actuelle sur l'ensemble du processus sur *policy*."

#: library/asyncio-policy.rst:40
msgid "If *policy* is set to ``None``, the default policy is restored."
msgstr ""
"Si *policy* est définie sur ``None``, la stratégie par défaut est restaurée."

#: library/asyncio-policy.rst:44
msgid "Policy Objects"
msgstr "Sujets de stratégie"

#: library/asyncio-policy.rst:46
msgid "The abstract event loop policy base class is defined as follows:"
msgstr ""
"La classe de base abstraite de la stratégie de boucle d'événements est "
"définie comme suit:"

#: library/asyncio-policy.rst:50
msgid "An abstract base class for asyncio policies."
msgstr "Une classe de base abstraite pour les stratégies *asyncio*."

#: library/asyncio-policy.rst:54
msgid "Get the event loop for the current context."
msgstr "Récupère la boucle d'évènements pour le contexte actuel."

#: library/asyncio-policy.rst:56
msgid ""
"Return an event loop object implementing the :class:`AbstractEventLoop` "
"interface."
msgstr ""
"Renvoie un objet de boucle d'événements en implémentant l'interface :class:"
"`AbstractEventLoop`."

#: library/asyncio-policy.rst:71
msgid "This method should never return ``None``."
msgstr "Cette méthode ne devrait jamais renvoyer ``None``."

#: library/asyncio-policy.rst:65
msgid "Set the event loop for the current context to *loop*."
msgstr "Définit la boucle d'événements du contexte actuel sur *loop*."

#: library/asyncio-policy.rst:69
msgid "Create and return a new event loop object."
msgstr "Crée et renvoie un nouvel objet de boucle d'événements."

#: library/asyncio-policy.rst:75
msgid "Get a child process watcher object."
msgstr "Récupère un objet observateur du processus enfant."

#: library/asyncio-policy.rst:77
msgid ""
"Return a watcher object implementing the :class:`AbstractChildWatcher` "
"interface."
msgstr ""
"Renvoie un objet observateur implémentant l'interface :class:"
"`AbstractChildWatcher`."

#: library/asyncio-policy.rst:86
msgid "This function is Unix specific."
msgstr "Cette fonction est spécifique à Unix."

#: library/asyncio-policy.rst:84
msgid "Set the current child process watcher to *watcher*."
msgstr "Définit l'observateur du processus enfant actuel à *watcher*."

#: library/asyncio-policy.rst:89
msgid "asyncio ships with the following built-in policies:"
msgstr "*asyncio* est livré avec les stratégies intégrées suivantes :"

#: library/asyncio-policy.rst:94
msgid ""
"The default asyncio policy.  Uses :class:`SelectorEventLoop` on Unix and :"
"class:`ProactorEventLoop` on Windows."
msgstr ""
"La stratégie *asyncio* par défaut. Utilise :class:`SelectorEventLoop` sur "
"les plates-formes Unix et :class:`ProactorEventLoop` sur Windows."

#: library/asyncio-policy.rst:97
msgid ""
"There is no need to install the default policy manually. asyncio is "
"configured to use the default policy automatically."
msgstr ""
"Il n'est pas nécessaire d'installer la stratégie par défaut manuellement. "
"*asyncio* est configuré pour utiliser automatiquement la stratégie par "
"défaut."

#: library/asyncio-policy.rst:102
msgid "On Windows, :class:`ProactorEventLoop` is now used by default."
msgstr ""

#: library/asyncio-policy.rst:107
msgid ""
"An alternative event loop policy that uses the :class:`SelectorEventLoop` "
"event loop implementation."
msgstr ""
"Stratégie de boucle d'événements alternative utilisant l'implémentation de "
"la boucle d'événements :class:`ProactorEventLoop`."

#: library/asyncio-policy.rst:118
msgid ":ref:`Availability <availability>`: Windows."
msgstr ":ref:`Disponibilité <availability>` : Windows."

#: library/asyncio-policy.rst:115
#, fuzzy
msgid ""
"An alternative event loop policy that uses the :class:`ProactorEventLoop` "
"event loop implementation."
msgstr ""
"Stratégie de boucle d'événements alternative utilisant l'implémentation de "
"la boucle d'événements :class:`ProactorEventLoop`."

#: library/asyncio-policy.rst:123
msgid "Process Watchers"
msgstr "Observateurs de processus"

#: library/asyncio-policy.rst:125
msgid ""
"A process watcher allows customization of how an event loop monitors child "
"processes on Unix. Specifically, the event loop needs to know when a child "
"process has exited."
msgstr ""
"Un observateur de processus permet de personnaliser la manière dont une "
"boucle d'événements surveille les processus enfants sous Unix. Plus "
"précisément, la boucle d'événements a besoin de savoir quand un processus "
"enfant s'est terminé."

#: library/asyncio-policy.rst:129
msgid ""
"In asyncio, child processes are created with :func:`create_subprocess_exec` "
"and :meth:`loop.subprocess_exec` functions."
msgstr ""
"Dans *asyncio*, les processus enfants sont créés avec les fonctions :func:"
"`create_subprocess_exec` et :meth:`loop.subprocess_exec`."

#: library/asyncio-policy.rst:133
#, fuzzy
msgid ""
"asyncio defines the :class:`AbstractChildWatcher` abstract base class, which "
"child watchers should implement, and has four different implementations: :"
"class:`ThreadedChildWatcher` (configured to be used by default), :class:"
"`MultiLoopChildWatcher`, :class:`SafeChildWatcher`, and :class:"
"`FastChildWatcher`."
msgstr ""
"*asyncio* définit la classe de base abstraite :class:`AbstractChildWatcher`, "
"que les observateurs enfants doivent implémenter et possède deux "
"implémentations différentes : :class:`SafeChildWatcher` (configurée pour "
"être utilisé par défaut) et :class:`FastChildWatcher`."

#: library/asyncio-policy.rst:139
msgid ""
"See also the :ref:`Subprocess and Threads <asyncio-subprocess-threads>` "
"section."
msgstr ""
"Voir aussi la section :ref:`sous-processus et fils d'exécution <asyncio-"
"subprocess-threads>`."

#: library/asyncio-policy.rst:142
msgid ""
"The following two functions can be used to customize the child process "
"watcher implementation used by the asyncio event loop:"
msgstr ""
"Les deux fonctions suivantes peuvent être utilisées pour personnaliser "
"l'implémentation de l'observateur de processus enfant utilisé par la boucle "
"d'événements *asyncio* :"

#: library/asyncio-policy.rst:147
msgid "Return the current child watcher for the current policy."
msgstr "Renvoie l'observateur enfant actuel pour la stratégie actuelle."

#: library/asyncio-policy.rst:151
msgid ""
"Set the current child watcher to *watcher* for the current policy.  "
"*watcher* must implement methods defined in the :class:"
"`AbstractChildWatcher` base class."
msgstr ""
"Définit l'observateur enfant actuel à *watcher* pour la stratégie actuelle. "
"*watcher* doit implémenter les méthodes définies dans la classe de base :"
"class:`AbstractChildWatcher`."

#: library/asyncio-policy.rst:156
msgid ""
"Third-party event loops implementations might not support custom child "
"watchers.  For such event loops, using :func:`set_child_watcher` might be "
"prohibited or have no effect."
msgstr ""
"Les implémentations de boucles d'événement tierces peuvent ne pas prendre en "
"charge les observateurs enfants personnalisés. Pour ces boucles "
"d'événements, utiliser :func:`set_child_watcher` pourrait être  interdit ou "
"n'avoir aucun effet."

#: library/asyncio-policy.rst:164
msgid "Register a new child handler."
msgstr "Enregistre un nouveau gestionnaire."

#: library/asyncio-policy.rst:166
msgid ""
"Arrange for ``callback(pid, returncode, *args)`` to be called when a process "
"with PID equal to *pid* terminates.  Specifying another callback for the "
"same process replaces the previous handler."
msgstr ""
"Organise l'appel de ``callback(pid, returncode, * args)`` lorsqu'un "
"processus dont le PID est égal à *pid* se termine. La spécification d'un "
"autre rappel pour le même processus remplace le gestionnaire précédent."

#: library/asyncio-policy.rst:171
msgid "The *callback* callable must be thread-safe."
msgstr ""
"L'appelable *callback* doit être compatible avec les programmes à fils "
"d'exécution multiples."

#: library/asyncio-policy.rst:175
msgid "Removes the handler for process with PID equal to *pid*."
msgstr "Supprime le gestionnaire de processus avec un PID égal à *pid*."

#: library/asyncio-policy.rst:177
msgid ""
"The function returns ``True`` if the handler was successfully removed, "
"``False`` if there was nothing to remove."
msgstr ""
"La fonction renvoie ``True`` si le gestionnaire a été supprimé avec succès, "
"``False`` s'il n'y a rien à supprimer."

#: library/asyncio-policy.rst:182
msgid "Attach the watcher to an event loop."
msgstr "Attache l'observateur à une boucle d'événement."

#: library/asyncio-policy.rst:184
msgid ""
"If the watcher was previously attached to an event loop, then it is first "
"detached before attaching to the new loop."
msgstr ""
"Si l'observateur était précédemment attaché à une boucle d'événements, il "
"est d'abord détaché avant d'être rattaché à la nouvelle boucle."

#: library/asyncio-policy.rst:187
msgid "Note: loop may be ``None``."
msgstr "Remarque : la boucle peut être ``None``."

#: library/asyncio-policy.rst:191
msgid "Return ``True`` if the watcher is ready to use."
msgstr ""

#: library/asyncio-policy.rst:193
msgid ""
"Spawning a subprocess with *inactive* current child watcher raises :exc:"
"`RuntimeError`."
msgstr ""

#: library/asyncio-policy.rst:200
msgid "Close the watcher."
msgstr "Ferme l'observateur."

#: library/asyncio-policy.rst:202
msgid ""
"This method has to be called to ensure that underlying resources are cleaned-"
"up."
msgstr ""
"Cette méthode doit être appelée pour s'assurer que les ressources sous-"
"jacentes sont nettoyées."

#: library/asyncio-policy.rst:207
#, fuzzy
msgid ""
"This implementation starts a new waiting thread for every subprocess spawn."
msgstr ""
"Cette implémentation évite de perturber un autre code qui aurait besoin de "
"générer des processus en interrogeant chaque processus explicitement par un "
"signal :py:data:`SIGCHLD`."

#: library/asyncio-policy.rst:209
#, fuzzy
msgid ""
"It works reliably even when the asyncio event loop is run in a non-main OS "
"thread."
msgstr ""
"C'est une solution sûre, mais elle nécessite un temps système important lors "
"de la manipulation d'un grand nombre de processus (*O(n)* à chaque fois que "
"un :py:data:`SIGCHLD` est reçu)."

#: library/asyncio-policy.rst:211
#, fuzzy
msgid ""
"There is no noticeable overhead when handling a big number of children "
"(*O(1)* each time a child terminates), but starting a thread per process "
"requires extra memory."
msgstr ""
"Il n'y a pas de surcharge visible lors de la manipulation d'un grand nombre "
"d'enfants (*O(1)* à chaque fois qu'un enfant se termine)."

#: library/asyncio-policy.rst:214
msgid "This watcher is used by default."
msgstr ""

#: library/asyncio-policy.rst:220
msgid ""
"This implementation registers a :py:data:`SIGCHLD` signal handler on "
"instantiation. That can break third-party code that installs a custom "
"handler for :py:data:`SIGCHLD` signal."
msgstr ""

#: library/asyncio-policy.rst:242
msgid ""
"The watcher avoids disrupting other code spawning processes by polling every "
"process explicitly on a :py:data:`SIGCHLD` signal."
msgstr ""

#: library/asyncio-policy.rst:227
msgid ""
"There is no limitation for running subprocesses from different threads once "
"the watcher is installed."
msgstr ""

#: library/asyncio-policy.rst:230
msgid ""
"The solution is safe but it has a significant overhead when handling a big "
"number of processes (*O(n)* each time a :py:data:`SIGCHLD` is received)."
msgstr ""

#: library/asyncio-policy.rst:238
msgid ""
"This implementation uses active event loop from the main thread to handle :"
"py:data:`SIGCHLD` signal. If the main thread has no running event loop "
"another thread cannot spawn a subprocess (:exc:`RuntimeError` is raised)."
msgstr ""

#: library/asyncio-policy.rst:245
msgid ""
"This solution is as safe as :class:`MultiLoopChildWatcher` and has the same "
"*O(N)* complexity but requires a running event loop in the main thread to "
"work."
msgstr ""

#: library/asyncio-policy.rst:250
msgid ""
"This implementation reaps every terminated processes by calling ``os."
"waitpid(-1)`` directly, possibly breaking other code spawning processes and "
"waiting for their termination."
msgstr ""
"Cette implémentation récupère tous les processus terminés en appelant "
"directement ``os.waitpid(-1)``, cassant éventuellement un autre code qui "
"génère des processus et attend leur fin."

#: library/asyncio-policy.rst:254
msgid ""
"There is no noticeable overhead when handling a big number of children "
"(*O(1)* each time a child terminates)."
msgstr ""
"Il n'y a pas de surcharge visible lors de la manipulation d'un grand nombre "
"d'enfants (*O(1)* à chaque fois qu'un enfant se termine)."

#: library/asyncio-policy.rst:257
msgid ""
"This solution requires a running event loop in the main thread to work, as :"
"class:`SafeChildWatcher`."
msgstr ""

#: library/asyncio-policy.rst:262
msgid ""
"This implementation polls process file descriptors (pidfds) to await child "
"process termination. In some respects, :class:`PidfdChildWatcher` is a "
"\"Goldilocks\" child watcher implementation. It doesn't require signals or "
"threads, doesn't interfere with any processes launched outside the event "
"loop, and scales linearly with the number of subprocesses launched by the "
"event loop. The main disadvantage is that pidfds are specific to Linux, and "
"only work on recent (5.3+) kernels."
msgstr ""

#: library/asyncio-policy.rst:274
msgid "Custom Policies"
msgstr "Stratégies personnalisées"

#: library/asyncio-policy.rst:276
msgid ""
"To implement a new event loop policy, it is recommended to subclass :class:"
"`DefaultEventLoopPolicy` and override the methods for which custom behavior "
"is wanted, e.g.::"
msgstr ""
"Pour implémenter une nouvelle politique de boucle d’événements, il est "
"recommandé de sous-classer :class:`DefaultEventLoopPolicy` et de "
"réimplémenter les méthodes pour lesquelles un comportement personnalisé est "
"souhaité, par exemple ::"
