@@ -302,6 +302,17 @@ msgid ""
302
302
"which saves you the trouble of allocating memory space and loading the file "
303
303
"contents."
304
304
msgstr ""
305
+ "La fonction :c:func:`Py_SetProgramName` devrait être appelée avant :c:func:"
306
+ "`Py_Initialize` pour informer l'interpréteur des chemins vers les "
307
+ "bibliothèque Python. Ensuite, l'interpréteur Python est initialisé avec :c:"
308
+ "func:`Py_Initialize`, suivi par l'exécution d'un script Python, codé en dur, "
309
+ "qui affiche la date et l'heure. Ensuite, l'interpréteur est arrêté par un "
310
+ "appel à :c:func:`Py_Finalize`, puis le programme se termine. Dans un vrai "
311
+ "programme, vous voudrez peut-être obtenir le script Python d'une autre "
312
+ "source, peut-être d'une fonction d'un éditeur de texte, un fichier ou une "
313
+ "base de données. Obtenir le code Python à partir d'un fichier se fait plus "
314
+ "aisément avec :c:func:`PyRun_SimpleFile`,ce qui vous évite d'avoir à allouer "
315
+ "la mémoire et d'y charger le contenu du fichier."
305
316
306
317
#: extending/embedding.rst:87
307
318
msgid "Beyond Very High Level Embedding: An overview"
@@ -493,6 +504,15 @@ msgid ""
493
504
"and write some glue code that gives Python access to those routines, just "
494
505
"like you would write a normal Python extension. For example::"
495
506
msgstr ""
507
+ "Jusqu'à présent, l'interpréteur Python intégré n'avait pas accès aux "
508
+ "fonctionnalités de l'application elle-même. L'API Python le permet en "
509
+ "étendant l'interpréteur intégré. Autrement dit, l'interpréteur intégré est "
510
+ "étendu avec des fonctions fournies par l'application. Bien que cela puisse "
511
+ "sembler complexe, ce n'est pas si dur. Il suffit d'oublier que l'application "
512
+ "démarre l'interpréteur Python, au lieu de cela, voyez l'application comme un "
513
+ "ensemble de fonctions, et rédigez un peu de code pour exposer ces fonctions "
514
+ "à Python, tout comme vous écririez une extension Python normale. Par "
515
+ "exemple ::"
496
516
497
517
#: extending/embedding.rst:226
498
518
msgid ""
@@ -600,6 +620,15 @@ msgid ""
600
620
"extract the configuration values that you will want to combine together. "
601
621
"For example:"
602
622
msgstr ""
623
+ "Si cette procédure ne fonctionne pas pour vous (il n'est pas garanti "
624
+ "qu'ellefonctionne pour toutes les plateformes Unix, mais nous traiteront "
625
+ "volontiers les :ref: `rapports de bugs <reporting-bugs>`), vous devrez lire "
626
+ "ladocumentation de votre système sur la liaison dynamique (*dynamic "
627
+ "linking*) et / ouexaminer le :file:`Makefile` de Python (utilisez :func:"
628
+ "`sysconfig.get_makefile_filename` pour trouver son emplacement) et les "
629
+ "options de compilation. Dans ce cas, le module :mod:`sysconfig` est un outil "
630
+ "utile pour extraire automatiquement les valeurs de configuration que vous "
631
+ "voudrez combiner ensemble. Par example :"
603
632
604
633
#: extending/extending.rst:8
605
634
msgid "Extending Python with C or C++"
@@ -625,12 +654,19 @@ msgid ""
625
654
"aspects of the Python run-time system. The Python API is incorporated in a "
626
655
"C source file by including the header ``\" Python.h\" ``."
627
656
msgstr ""
657
+ "Pour gérer les extensions, l'API Python (*Application Programmer Interface*) "
658
+ "définit un ensemble de fonctions, macros et variables qui donnent accès à la "
659
+ "plupart des aspects du système d'exécution de Python. L'API Python est "
660
+ "incorporée dans un fichier source C en incluant l'en-tête ``\" Python.h\" ``."
628
661
629
662
#: extending/extending.rst:20
630
663
msgid ""
631
664
"The compilation of an extension module depends on its intended use as well "
632
665
"as on your system setup; details are given in later chapters."
633
666
msgstr ""
667
+ "La compilation d'un module d'extension dépend de l'usage prévu et de la "
668
+ "configuration du système, plus de détails peuvent être trouvés dans les "
669
+ "chapitres suivants."
634
670
635
671
#: extending/extending.rst:25
636
672
msgid ""
@@ -644,6 +680,17 @@ msgid ""
644
680
"with C code and are more portable between implementations of Python than "
645
681
"writing and compiling a C extension module."
646
682
msgstr ""
683
+ "L'interface d'extension C est spécifique à CPython, et les modules "
684
+ "d'extension ne fonctionne pas sur les autres implémentations de Python. Dans "
685
+ "de nombreux cas, il est possible d'éviter la rédaction des extensions en C "
686
+ "et ainsi préserver la portabilité vers d'autres implémentations. Par "
687
+ "exemple, si vous devez appeler une fonction de la bibliothèque C ou faire un "
688
+ "appel système, vous devriez envisager d'utiliser le module :mod:`ctypes` ou "
689
+ "d'utiliser la bibliothèque `CFFI <http://cffi.readthedocs.org>`_ plutôt que "
690
+ "d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du code "
691
+ "Python s'interfaçant avec le code C et sont plus portables entre les "
692
+ "implémentations de Python que l'écriture et la compilation d'une d'extension "
693
+ "C."
647
694
648
695
#: extending/extending.rst:39
649
696
#, fuzzy
@@ -658,6 +705,12 @@ msgid ""
658
705
"terminated character string as argument and returns an integer. We want "
659
706
"this function to be callable from Python as follows::"
660
707
msgstr ""
708
+ "Créons un module d'extension appelé ``spam`` (la nourriture préférée de fans "
709
+ "des Monty Python ...) et disons que nous voulons créer une interface Python "
710
+ "à la fonction de la bibliothèque C :c:func:`system`. [#] _ Cette fonction "
711
+ "prend une chaîne de caractères terminée par NULL comme argument et renvoie "
712
+ "un entier. Nous voulons que cette fonction soit appelable à partir de Python "
713
+ "comme suit ::"
661
714
662
715
#: extending/extending.rst:50
663
716
msgid ""
@@ -666,6 +719,10 @@ msgid ""
666
719
"`spammodule.c`; if the module name is very long, like ``spammify``, the "
667
720
"module name can be just :file:`spammify.c`.)"
668
721
msgstr ""
722
+ "Commencez par créer un fichier :file:`spammodule.c`. (Historiquement, si un "
723
+ "module se nomme ``spam``, le fichier C contenant son implémentation est "
724
+ "appelé :file:`spammodule.c`. Si le nom du module est très long, comme "
725
+ "``spammify``, le nom du module peut être juste :file: `spammify.c`.)"
669
726
670
727
#: extending/extending.rst:55
671
728
#, fuzzy
@@ -677,13 +734,18 @@ msgid ""
677
734
"which pulls in the Python API (you can add a comment describing the purpose "
678
735
"of the module and a copyright notice if you like)."
679
736
msgstr ""
737
+ "qui récupère l'API Python (vous pouvez ajouter un commentaire décrivant le "
738
+ "but du module et un avis de droit d'auteur si vous le souhaitez)."
680
739
681
740
#: extending/extending.rst:64
682
741
msgid ""
683
742
"Since Python may define some pre-processor definitions which affect the "
684
743
"standard headers on some systems, you *must* include :file:`Python.h` before "
685
744
"any standard headers are included."
686
745
msgstr ""
746
+ "Python pouvant définir certaines définitions pré-processeur qui affectent "
747
+ "les têtes standard sur certains systèmes, vous *devez* inclure :file:`Python."
748
+ "h` avant les en-têtes standards."
687
749
688
750
#: extending/extending.rst:68
689
751
msgid ""
@@ -695,13 +757,24 @@ msgid ""
695
757
"on your system, it declares the functions :c:func:`malloc`, :c:func:`free` "
696
758
"and :c:func:`realloc` directly."
697
759
msgstr ""
760
+ "Tous les symboles exposés par:file:`Python.h` sont préfixés de ``Py`` ou "
761
+ "``PY``, sauf ceux qui sont définis dans les en-têtes standard. Pour le "
762
+ "confort, et comme ils sont largement utilisés par l'interpréteur Python, ``"
763
+ "\" Python.h\" `` inclu lui même quelques d'en-têtes standard : ``<stdio.h>``, "
764
+ "``<string.h>``, ``<errno.h>`` et ``<stdlib.h>``. Si ce dernier n'existe pas "
765
+ "sur votre système, il déclare les fonctions :c:func:`malloc`, :c:func:`free` "
766
+ "et :c:func:`realloc` directement."
698
767
699
768
#: extending/extending.rst:76
700
769
msgid ""
701
770
"The next thing we add to our module file is the C function that will be "
702
771
"called when the Python expression ``spam.system(string)`` is evaluated "
703
772
"(we'll see shortly how it ends up being called)::"
704
773
msgstr ""
774
+ "La prochaine chose que nous ajoutons à notre fichier de module est la "
775
+ "fonction C qui sera appelée lorsque l'expression Python ``spam."
776
+ "system(chaîne)`` sera évaluée (nous verrons bientôt comment elle finit par "
777
+ "être appelée) ::"
705
778
706
779
#: extending/extending.rst:92
707
780
msgid ""
@@ -710,6 +783,10 @@ msgid ""
710
783
"C function. The C function always has two arguments, conventionally named "
711
784
"*self* and *args*."
712
785
msgstr ""
786
+ "Il ya une correspondance directe de la liste des arguments en Python (par "
787
+ "exemple, l'expression ``\" ls -l\" ``) aux arguments passés à la fonction C. "
788
+ "La fonction C a toujours deux arguments, appelés par convention *self* et "
789
+ "*args*."
713
790
714
791
#: extending/extending.rst:97
715
792
msgid ""
@@ -729,6 +806,15 @@ msgid ""
729
806
"determine the required types of the arguments as well as the types of the C "
730
807
"variables into which to store the converted values. More about this later."
731
808
msgstr ""
809
+ "L'argument *args* sera un pointeur vers un *tuple* Python contenant les "
810
+ "arguments. Chaque élément du *tuple* correspond à un argument dans la liste "
811
+ "des arguments de l'appel. Les arguments sont des objets Python --- afin d'en "
812
+ "faire quelque chose dans notre fonction C, nous devons les convertir en "
813
+ "valeurs C. La fonction :c:func:`PyArg_ParseTuple` de l'API Python vérifie "
814
+ "les types des arguments et les convertit en valeurs C. Elle utilise un "
815
+ "modèle sous forme de chaîne pour déterminer les types requis des arguments "
816
+ "ainsi que les types de variables C dans lequel stocker les valeurs "
817
+ "converties. Nous en verront plus, plus tard."
732
818
733
819
#: extending/extending.rst:110
734
820
msgid ""
@@ -739,10 +825,16 @@ msgid ""
739
825
"the calling function can return *NULL* immediately (as we saw in the "
740
826
"example)."
741
827
msgstr ""
828
+ ":c:func:`PyArg_ParseTuple` renvoie vrai (pas zéro) si tous les arguments ont "
829
+ "le bon type et que ses composants ont été stockés dans les variables dont "
830
+ "les adresses données. Il retourne faux (zéro) si une liste d'arguments "
831
+ "invalide a été passée. Dans ce dernier cas, elle soulève également une "
832
+ "exception appropriée de sorte que la fonction d'appel puisse retourner "
833
+ "*NULL* immédiatement (comme nous l'avons vu dans l'exemple)."
742
834
743
835
#: extending/extending.rst:120
744
836
msgid "Intermezzo: Errors and Exceptions"
745
- msgstr ""
837
+ msgstr "Intermezzo: Les Erreurs et Exceptions "
746
838
747
839
#: extending/extending.rst:122
748
840
msgid ""
@@ -764,6 +856,8 @@ msgid ""
764
856
"The Python API defines a number of functions to set various types of "
765
857
"exceptions."
766
858
msgstr ""
859
+ "L'API Python définit un certain nombre de fonctions pour créer différents "
860
+ "types d'exceptions."
767
861
768
862
#: extending/extending.rst:136
769
863
msgid ""
@@ -773,6 +867,11 @@ msgid ""
773
867
"indicates the cause of the error and is converted to a Python string object "
774
868
"and stored as the \" associated value\" of the exception."
775
869
msgstr ""
870
+ "La plus courante est :c:func:`PyErr_SetString`. Ses arguments sont un objet "
871
+ "exception et une chaîne C. L'objet exception est généralement un objet "
872
+ "prédéfini comme :c:data:`PyExc_ZeroDivisionError`. La chaîne C indique la "
873
+ "cause de l'erreur et est convertie en une chaîne Python puis stockée en tant "
874
+ "que \" valeur associée\" à l'exception."
776
875
777
876
#: extending/extending.rst:142
778
877
msgid ""
@@ -783,6 +882,11 @@ msgid ""
783
882
"associated value. You don't need to :c:func:`Py_INCREF` the objects passed "
784
883
"to any of these functions."
785
884
msgstr ""
885
+ "Une autre fonction utile est :c:func:`PyErr_SetFromErrno`, qui construit une "
886
+ "exception à partir de la valeur de la variable globale :c:data:`errno`. La "
887
+ "fonction la plus générale est :c:func: `PyErr_SetObject`, qui prend deux "
888
+ "arguments: l'exception et sa valeur associée. Vous ne devez pas appliquer :c:"
889
+ "func:`Py_INCREF` aux objets transmis à ces fonctions."
786
890
787
891
#: extending/extending.rst:149
788
892
msgid ""
@@ -792,6 +896,12 @@ msgid ""
792
896
"`PyErr_Occurred` to see whether an error occurred in a function call, since "
793
897
"you should be able to tell from the return value."
794
898
msgstr ""
899
+ "Vous pouvez tester de manière non destructive si une exception a été levée "
900
+ "avec :c:func:`PyErr_Occurred`. Cela renvoie l'objet exception actuel, ou "
901
+ "*NULL* si aucune exception n'a eu lieu. Cependant, vous ne devriez pas avoir "
902
+ "besoin d'appeler :c:func:`PyErr_Occurred` pour voir si une erreur est "
903
+ "survenue durant l'appel d'une fonction, puisque vous devriez être en mesure "
904
+ "de le déterminer à partir de la valeur de retour."
795
905
796
906
#: extending/extending.rst:155
797
907
msgid ""
@@ -806,6 +916,17 @@ msgid ""
806
916
"code and tries to find an exception handler specified by the Python "
807
917
"programmer."
808
918
msgstr ""
919
+ "lorsqu'une fonction *f* ayant appelé une autre fonction *g* détecte que "
920
+ "cette dernière a échoué, *f* devrait donner une valeur d'erreur à son tour "
921
+ "(habituellement *NULL* ou ``-1``). *f* ne devrait *pas* appeler l'une des "
922
+ "fonctions :c:func:`PyErr_\\ *`, l'une d'elles ayant déjà été appelée par *g*. "
923
+ "La fonction appelant *f* est alors censée retourner aussi un code d'erreur à "
924
+ "celle qui la appelée, toujours sans utiliser :c:func:`PyErr_\\ *`, et ainsi "
925
+ "de suite. La cause la plus détaillée de l'erreur a déjà été signalée par la "
926
+ "fonction l'ayant détectée en premier. Une fois l'erreur remontée à la boucle "
927
+ "principale de l'interpréteur Python, il interrompt le code en cours "
928
+ "d'exécution et essaie de trouver un gestionnaire d'exception spécifié par le "
929
+ "développeur Python."
809
930
810
931
#: extending/extending.rst:165
811
932
msgid ""
@@ -815,6 +936,12 @@ msgid ""
815
936
"can cause information about the cause of the error to be lost: most "
816
937
"operations can fail for a variety of reasons.)"
817
938
msgstr ""
939
+ "(Il ya des situations où un module peut effectivement donner un message "
940
+ "d'erreur plus détaillé en appelant une autre fonction :c:func:`PyErr_\\ *`, "
941
+ "dans de tels cas, c'est tout à fait possible de le faire. Cependant, ce "
942
+ "n'est généralement pas nécessaire, et peut amener à perdre des informations "
943
+ "sur la cause de l'erreur: la plupart des opérations peuvent échouer pour "
944
+ "tout un tas de raisons)."
818
945
819
946
#: extending/extending.rst:171
820
947
msgid ""
@@ -824,6 +951,12 @@ msgid ""
824
951
"pass the error on to the interpreter but wants to handle it completely by "
825
952
"itself (possibly by trying something else, or pretending nothing went wrong)."
826
953
msgstr ""
954
+ "Pour ignorer une exception qui aurait été émise lors d'un un appel de "
955
+ "fonction qui aurait échoué, l'exception doit être retirée explicitement en "
956
+ "appelant :c:func:`PyErr_Clear`. Le seul cas pour lequel du code C devrait "
957
+ "appeler :c:func:`PyErr_Clear` est lorsqu'il ne veut pas passer l'erreur à "
958
+ "l'interpréteur, mais souhaite la gérer lui-même (peut-être en essayant "
959
+ "quelque chose d'autre, ou de prétendre rien a mal tourné)."
827
960
828
961
#: extending/extending.rst:177
829
962
msgid ""
@@ -841,13 +974,20 @@ msgid ""
841
974
"positive value or zero for success and ``-1`` for failure, like Unix system "
842
975
"calls."
843
976
msgstr ""
977
+ "Notez également que, à l'exception notable de :c:func:`PyArg_ParseTuple` et "
978
+ "compagnie, les fonctions qui renvoient leur statut sous forme d'entier "
979
+ "donnent généralement une valeur positive ou zéro en cas de succès et ``-1`` "
980
+ "en cas d'échec, comme les appels système Unix."
844
981
845
982
#: extending/extending.rst:187
846
983
msgid ""
847
984
"Finally, be careful to clean up garbage (by making :c:func:`Py_XDECREF` or :"
848
985
"c:func:`Py_DECREF` calls for objects you have already created) when you "
849
986
"return an error indicator!"
850
987
msgstr ""
988
+ "Enfin, lorsque vous renvoyez un code d'erreur, n'oubliez pas faire un brin "
989
+ "de nettoyage (en appelant :c:func:`Py_XDECREF` ou :c: func:` Py_DECREF` avec "
990
+ "les objets que vous auriez déjà créé) !"
851
991
852
992
#: extending/extending.rst:191
853
993
msgid ""
@@ -861,12 +1001,25 @@ msgid ""
861
1001
"you have an argument whose value must be in a particular range or must "
862
1002
"satisfy other conditions, :c:data:`PyExc_ValueError` is appropriate."
863
1003
msgstr ""
1004
+ "Le choix de l'exception à lever vous incombe. Il existe des objets C "
1005
+ "correspondant à chaque exception Python, tel que :c:data:"
1006
+ "`PyExc_ZeroDivisionError`, que vous pouvez utiliser directement. Choisissez "
1007
+ "judicieusement vos exceptions, typiquement n'utilisez pas :c:data:"
1008
+ "`PyExc_TypeError` pour indiquer qu'un fichier n'a pas pu être ouvert (qui "
1009
+ "devrait probablement être :c:data:`PyExc_IOError`). Si quelque chose ne va "
1010
+ "pas avec la liste d'arguments, la fonction :c:func:`PyArg_ParseTuple` "
1011
+ "soulève habituellement une exception :c:data:`PyExc_TypeError`. Mais si vous "
1012
+ "avez un argument dont la valeur doit être dans une intervalle particulière "
1013
+ "ou qui doit satisfaire d'autres conditions, :c:data:`PyExc_ValueError` sera "
1014
+ "plus appropriée."
864
1015
865
1016
#: extending/extending.rst:201
866
1017
msgid ""
867
1018
"You can also define a new exception that is unique to your module. For this, "
868
1019
"you usually declare a static object variable at the beginning of your file::"
869
1020
msgstr ""
1021
+ "Vous pouvez également créer une exception spécifique à votre module. Pour "
1022
+ "cela, déclarez simplement une variable statique au début de votre fichier ::"
870
1023
871
1024
#: extending/extending.rst:206
872
1025
msgid ""
@@ -882,6 +1035,10 @@ msgid ""
882
1035
"class being :exc:`Exception` (unless another class is passed in instead of "
883
1036
"*NULL*), described in :ref:`bltin-exceptions`."
884
1037
msgstr ""
1038
+ "Notez que le nom de exception, côté Python, est :exc:`spam.error`. La "
1039
+ "fonction :c:func:`PyErr_NewException` peut créer une classe héritant de :exc:"
1040
+ "`Exception` (à moins qu'une autre classe ne lui soit fournie à la place de "
1041
+ "*NULL*), voir :ref:`bltin-exceptions`."
885
1042
886
1043
#: extending/extending.rst:228
887
1044
msgid ""
0 commit comments