{"id":442173,"date":"2024-01-25T18:22:23","date_gmt":"2024-01-25T17:22:23","guid":{"rendered":"https:\/\/www.eenewseurope.com\/?p=442173"},"modified":"2024-01-25T18:23:43","modified_gmt":"2024-01-25T17:23:43","slug":"deboguer-du-code-python-avec-un-time-travel-debugger","status":"publish","type":"post","link":"https:\/\/test.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/","title":{"rendered":"D\u00e9boguer du code Python avec un Time Travel Debugger"},"content":{"rendered":"<h3>Time Travel est la meilleure chose qui soit arriv\u00e9e aux d\u00e9bogueurs depuis des d\u00e9cennies, mais il ne peut pas \u00eatre utilis\u00e9 avec Python.<\/h3>\n<p>Des soci\u00e9t\u00e9s telles qu&rsquo;Undo ont d\u00e9velopp\u00e9 un d\u00e9bogage avec Time Travel de qualit\u00e9 industrielle pour la plupart des langages couramment utilis\u00e9s : C\/C++, Java, Javascript, Go, C# et Rust, et m\u00eame FORTRAN et COBOL, mais pour l&rsquo;instant, il n&rsquo;y a rien de natif pour Python. Il existe plusieurs d\u00e9bogueurs Python, mais aucun ne permet de voyager dans le temps.<\/p>\n<p>Traditionnellement, les d\u00e9bogueurs permettaient aux d\u00e9veloppeurs de voir ce qu&rsquo;un programme \u00e9tait en train de faire ; la nouvelle g\u00e9n\u00e9ration de d\u00e9bogueurs temporels leur permet de voir ce que le programme a fait, en revenant en arri\u00e8re pour voir n&rsquo;importe quelle ligne de code ex\u00e9cut\u00e9e et n&rsquo;importe quelle valeur de variable \u00e0 n&rsquo;importe quel moment de l&rsquo;histoire, explique Magne Hov, ing\u00e9nieur en logiciel chez Undo.<\/p>\n<p>Les utilisateurs signalent que la capacit\u00e9 de d\u00e9bogage a \u00e9t\u00e9 multipli\u00e9e par 10, voire par 100. Il ne s&rsquo;agit pas seulement d&rsquo;\u00eatre plus productif ; des bogues qui n&rsquo;auraient jamais \u00e9t\u00e9 corrig\u00e9s auparavant le sont d\u00e9sormais, d\u00e9clare Hov.<\/p>\n<p>Il est \u00e9galement beaucoup plus facile de travailler sur une base de code inconnue.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.eenewseurope.com\/en\/tool-debugs-non-deterministic-defects-in-multi-process-systems\/\">Outil de d\u00e9bogage des d\u00e9fauts non d\u00e9terministes dans les processus multiples <\/a><\/li>\n<li><a href=\"https:\/\/www.eenewseurope.com\/en\/ide-and-debugger-ease-automotive-software-development\/\">L&rsquo;IDE et le d\u00e9bogueur facilitent le d\u00e9veloppement de logiciels automobiles<\/a><\/li>\n<\/ul>\n<h4>Le d\u00e9bogueur Python standard<\/h4>\n<p>Python est livr\u00e9 avec un d\u00e9bogueur appel\u00e9 pdb qui permet aux d\u00e9veloppeurs d&rsquo;interagir avec un programme en cours d&rsquo;ex\u00e9cution &#8211; c&rsquo;est-\u00e0-dire de voir en d\u00e9tail ce qu&rsquo;il fait. L&rsquo;utilisation de pdb est aussi simple que l&rsquo;appel de la fonction int\u00e9gr\u00e9e breakpoint() pour obtenir une invite de d\u00e9bogage et, \u00e0 partir de l\u00e0, l&rsquo;acc\u00e8s aux commandes pour \u00e9valuer les expressions, naviguer dans la pile d&rsquo;appels, avancer dans le code et mettre en place des points d&rsquo;arr\u00eat conditionnels.<\/p>\n<p>Les d\u00e9bogueurs comme pdb fonctionnent dans le m\u00eame interpr\u00e9teur Python que le programme en cours d&rsquo;ex\u00e9cution. Cela facilite l&rsquo;inspection et la manipulation des objets, car le d\u00e9bogueur peut \u00e9valuer directement les expressions et acc\u00e9der aux modules de traceback et d&rsquo;introspection de Python. Toutefois, cela exclut \u00e9galement certains flux de travail de d\u00e9bogage.<\/p>\n<p>Les d\u00e9bogueurs temporels comme UDB et rr fonctionnent sur le principe de l&rsquo;enregistrement d&rsquo;un programme pendant qu&rsquo;il s&rsquo;ex\u00e9cute normalement, puis de la relecture de l&rsquo;ex\u00e9cution tout en permettant \u00e0 l&rsquo;utilisateur de naviguer et d&rsquo;inspecter l&rsquo;\u00e9tat du programme \u00e0 diff\u00e9rents moments. Ils fonctionnent au niveau du processus &#8211; en rembobinant et en rejouant l&rsquo;\u00e9tat de l&rsquo;ensemble du processus Linux (ou Windows).<\/p>\n<p>Pendant que le programme est rejou\u00e9, il doit suivre exactement le m\u00eame chemin d&rsquo;ex\u00e9cution que lorsqu&rsquo;il a \u00e9t\u00e9 enregistr\u00e9, ce qui emp\u00eache un d\u00e9bogueur comme pdb d&rsquo;ex\u00e9cuter au moment de la relecture des fonctions Python qui n&rsquo;ont pas d\u00e9j\u00e0 \u00e9t\u00e9 ex\u00e9cut\u00e9es au moment de l&rsquo;enregistrement.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.eenewseurope.com\/en\/tracing-tool-simplifies-software-testing-and-debugging-of-automotive-mcus\/\">L&rsquo;outil de tra\u00e7age simplifie les tests et le d\u00e9bogage des logiciels <\/a><\/li>\n<li><a href=\"https:\/\/www.eenewseurope.com\/en\/efficient-debugging-of-multi-core-mcus\/\">D\u00e9bogage efficace des MCU multic\u0153urs <\/a><\/li>\n<\/ul>\n<p>Techniquement, l&rsquo;UDB permet d&rsquo;ex\u00e9cuter de nouveaux chemins de code au moment de la relecture, mais ces ex\u00e9cutions sont isol\u00e9es et tous les effets secondaires sont \u00e9limin\u00e9s. Ainsi, m\u00eame si nous pouvions ex\u00e9cuter du code \u00e0 partir du module pdb, nous ne serions pas en mesure d&rsquo;utiliser des fonctions telles que la d\u00e9finition de points d&rsquo;arr\u00eat.<\/p>\n<p>Les crash dumps tels que les fichiers core ne sont pas non plus compatibles avec pdb, car il n&rsquo;existe pas de processus r\u00e9el dans lequel ex\u00e9cuter le code Python de pdb.<\/p>\n<p>Un programme Python en cours d&rsquo;ex\u00e9cution n&rsquo;est en fin de compte qu&rsquo;un processus, de sorte que le d\u00e9bogage d&rsquo;un processus Python avec GDB (ou UDB) signifie en fait le d\u00e9bogage de l&rsquo;interpr\u00e9teur cpython.<\/p>\n<p>Le d\u00e9bogueur ne conna\u00eet aucune des fonctions ou variables Python pr\u00e9sentes dans un programme. Heureusement, le projet cpython g\u00e8re une biblioth\u00e8que d&rsquo;extensions GDB qui permettent \u00e0 GDB de comprendre le code Python. La biblioth\u00e8que libpython.py sait comment inspecter les structures internes de cpython afin de pr\u00e9senter l&rsquo;\u00e9tat du programme Python \u00e0 l&rsquo;utilisateur. La biblioth\u00e8que est ex\u00e9cut\u00e9e par un interpr\u00e8te cpython \u00e0 l&rsquo;int\u00e9rieur du processus de d\u00e9bogage, ce qui signifie qu&rsquo;aucun code Python ne doit \u00eatre ex\u00e9cut\u00e9 dans le contexte du programme lui-m\u00eame.<\/p>\n<p>Comme l&rsquo;interpr\u00e9teur est impl\u00e9ment\u00e9 dans le langage de programmation C, les informations de d\u00e9bogage DWARF doivent \u00eatre disponibles pour l&rsquo;ex\u00e9cutable Python pour que cela fonctionne, c&rsquo;est-\u00e0-dire que l&rsquo;ex\u00e9cutable Python doit avoir \u00e9t\u00e9 compil\u00e9 avec l&rsquo;option -g du compilateur.<\/p>\n<p>Le code pour le d\u00e9bogage se trouve sur <a href=\"https:\/\/github.com\/undoio\/python-debugging\/tree\/blog-post-2024-01-18\">github.com\/undoio\/python-debugging\/tree\/blog-post-2024-01-18<\/a> dans le fichier README.md. <a href=\"https:\/\/undo.io\/udb-free-trial\">undo.io\/udb-free-trial<\/a> pour une version d&rsquo;essai gratuite d&rsquo;UDB avec un programme Python 3.10 d&rsquo;exemple race.py qui contient quelques appels de fonctions simples ainsi qu&rsquo;un probl\u00e8me de concurrence impliquant plusieurs threads. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Time Travel est la meilleure chose qui soit arriv\u00e9e aux d\u00e9bogueurs depuis des d\u00e9cennies, mais il ne peut pas \u00eatre utilis\u00e9 avec Python. Des soci\u00e9t\u00e9s telles qu&rsquo;Undo ont d\u00e9velopp\u00e9 un d\u00e9bogage avec Time Travel de qualit\u00e9 industrielle pour la plupart des langages couramment utilis\u00e9s : C\/C++, Java, Javascript, Go, C# et Rust, et m\u00eame FORTRAN [&hellip;]<\/p>\n","protected":false},"author":34,"featured_media":442159,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[887],"tags":[1042,4302],"domains":[47],"ppma_author":[1153,3640],"class_list":["post-442173","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-applications","tag-embarque","tag-python-fr","domains-electronique-eci"],"acf":[],"yoast_head":"<title>D\u00e9boguer du code Python avec un Time Travel Debugger ...<\/title>\n<meta name=\"description\" content=\"Il n&#039;y a rien de natif pour d\u00e9boguer Python avec la capacit\u00e9 de voyager dans le temps, Undo montre comment cela peut \u00eatre r\u00e9alis\u00e9 avec UDB.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/posts\/442173\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"D\u00e9boguer du code Python avec un Time Travel Debugger\" \/>\n<meta property=\"og:description\" content=\"Il n&#039;y a rien de natif pour d\u00e9boguer Python avec la capacit\u00e9 de voyager dans le temps, Undo montre comment cela peut \u00eatre r\u00e9alis\u00e9 avec UDB.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/posts\/442173\/\" \/>\n<meta property=\"og:site_name\" content=\"EENewsEurope\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-25T17:22:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-25T17:23:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.ecinews.fr\/wp-content\/uploads\/2024\/01\/GDB_UDB-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"A Delapalisse, Nick Flaherty\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"A Delapalisse\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/\"},\"author\":{\"name\":\"A Delapalisse\",\"@id\":\"https:\/\/www.eenewseurope.com\/fr\/#\/schema\/person\/0aa2cfb0bd8949724a68cbac8d8321b4\"},\"headline\":\"D\u00e9boguer du code Python avec un Time Travel Debugger\",\"datePublished\":\"2024-01-25T17:22:23+00:00\",\"dateModified\":\"2024-01-25T17:23:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/\"},\"wordCount\":927,\"publisher\":{\"@id\":\"https:\/\/www.eenewseurope.com\/fr\/#organization\"},\"keywords\":[\"Embarqu\u00e9\",\"Python\"],\"articleSection\":[\"Applications\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/\",\"url\":\"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/\",\"name\":\"D\u00e9boguer du code Python avec un Time Travel Debugger -\",\"isPartOf\":{\"@id\":\"https:\/\/www.eenewseurope.com\/fr\/#website\"},\"datePublished\":\"2024-01-25T17:22:23+00:00\",\"dateModified\":\"2024-01-25T17:23:43+00:00\",\"description\":\"Il n'y a rien de natif pour d\u00e9boguer Python avec la capacit\u00e9 de voyager dans le temps, Undo montre comment cela peut \u00eatre r\u00e9alis\u00e9 avec UDB.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/test.ecinews.fr\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"D\u00e9boguer du code Python avec un Time Travel Debugger\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.eenewseurope.com\/fr\/#website\",\"url\":\"https:\/\/www.eenewseurope.com\/fr\/\",\"name\":\"EENewsEurope\",\"description\":\"Just another WordPress site\",\"publisher\":{\"@id\":\"https:\/\/www.eenewseurope.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.eenewseurope.com\/fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.eenewseurope.com\/fr\/#organization\",\"name\":\"EENewsEurope\",\"url\":\"https:\/\/www.eenewseurope.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.eenewseurope.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.ecinews.fr\/wp-content\/uploads\/2022\/02\/logo-1.jpg\",\"contentUrl\":\"https:\/\/www.ecinews.fr\/wp-content\/uploads\/2022\/02\/logo-1.jpg\",\"width\":283,\"height\":113,\"caption\":\"EENewsEurope\"},\"image\":{\"@id\":\"https:\/\/www.eenewseurope.com\/fr\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.eenewseurope.com\/fr\/#\/schema\/person\/0aa2cfb0bd8949724a68cbac8d8321b4\",\"name\":\"A Delapalisse\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.eenewseurope.com\/fr\/#\/schema\/person\/image\/211ac42237c2e9683c0964086c393cb4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ad45a8c5da24bc9c7c4940dd1c48a695?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ad45a8c5da24bc9c7c4940dd1c48a695?s=96&d=mm&r=g\",\"caption\":\"A Delapalisse\"},\"sameAs\":[\"http:\/\/ECI\"]}]}<\/script>","yoast_head_json":{"title":"D\u00e9boguer du code Python avec un Time Travel Debugger ...","description":"Il n'y a rien de natif pour d\u00e9boguer Python avec la capacit\u00e9 de voyager dans le temps, Undo montre comment cela peut \u00eatre r\u00e9alis\u00e9 avec UDB.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/posts\/442173\/","og_locale":"fr_FR","og_type":"article","og_title":"D\u00e9boguer du code Python avec un Time Travel Debugger","og_description":"Il n'y a rien de natif pour d\u00e9boguer Python avec la capacit\u00e9 de voyager dans le temps, Undo montre comment cela peut \u00eatre r\u00e9alis\u00e9 avec UDB.","og_url":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/posts\/442173\/","og_site_name":"EENewsEurope","article_published_time":"2024-01-25T17:22:23+00:00","article_modified_time":"2024-01-25T17:23:43+00:00","og_image":[{"width":1200,"height":1200,"url":"https:\/\/www.ecinews.fr\/wp-content\/uploads\/2024\/01\/GDB_UDB-1.png","type":"image\/png"}],"author":"A Delapalisse, Nick Flaherty","twitter_card":"summary_large_image","twitter_misc":{"Written by":"A Delapalisse","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/#article","isPartOf":{"@id":"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/"},"author":{"name":"A Delapalisse","@id":"https:\/\/www.eenewseurope.com\/fr\/#\/schema\/person\/0aa2cfb0bd8949724a68cbac8d8321b4"},"headline":"D\u00e9boguer du code Python avec un Time Travel Debugger","datePublished":"2024-01-25T17:22:23+00:00","dateModified":"2024-01-25T17:23:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/"},"wordCount":927,"publisher":{"@id":"https:\/\/www.eenewseurope.com\/fr\/#organization"},"keywords":["Embarqu\u00e9","Python"],"articleSection":["Applications"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/","url":"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/","name":"D\u00e9boguer du code Python avec un Time Travel Debugger -","isPartOf":{"@id":"https:\/\/www.eenewseurope.com\/fr\/#website"},"datePublished":"2024-01-25T17:22:23+00:00","dateModified":"2024-01-25T17:23:43+00:00","description":"Il n'y a rien de natif pour d\u00e9boguer Python avec la capacit\u00e9 de voyager dans le temps, Undo montre comment cela peut \u00eatre r\u00e9alis\u00e9 avec UDB.","breadcrumb":{"@id":"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.ecinews.fr\/fr\/deboguer-du-code-python-avec-un-time-travel-debugger\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/test.ecinews.fr\/fr\/"},{"@type":"ListItem","position":2,"name":"D\u00e9boguer du code Python avec un Time Travel Debugger"}]},{"@type":"WebSite","@id":"https:\/\/www.eenewseurope.com\/fr\/#website","url":"https:\/\/www.eenewseurope.com\/fr\/","name":"EENewsEurope","description":"Just another WordPress site","publisher":{"@id":"https:\/\/www.eenewseurope.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.eenewseurope.com\/fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.eenewseurope.com\/fr\/#organization","name":"EENewsEurope","url":"https:\/\/www.eenewseurope.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.eenewseurope.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.ecinews.fr\/wp-content\/uploads\/2022\/02\/logo-1.jpg","contentUrl":"https:\/\/www.ecinews.fr\/wp-content\/uploads\/2022\/02\/logo-1.jpg","width":283,"height":113,"caption":"EENewsEurope"},"image":{"@id":"https:\/\/www.eenewseurope.com\/fr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.eenewseurope.com\/fr\/#\/schema\/person\/0aa2cfb0bd8949724a68cbac8d8321b4","name":"A Delapalisse","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.eenewseurope.com\/fr\/#\/schema\/person\/image\/211ac42237c2e9683c0964086c393cb4","url":"https:\/\/secure.gravatar.com\/avatar\/ad45a8c5da24bc9c7c4940dd1c48a695?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ad45a8c5da24bc9c7c4940dd1c48a695?s=96&d=mm&r=g","caption":"A Delapalisse"},"sameAs":["http:\/\/ECI"]}]}},"authors":[{"term_id":1153,"user_id":34,"is_guest":0,"slug":"adelapalisse","display_name":"A Delapalisse","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/ad45a8c5da24bc9c7c4940dd1c48a695?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""},{"term_id":3640,"user_id":0,"is_guest":1,"slug":"nick-flaherty","display_name":"Nick Flaherty","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/posts\/442173"}],"collection":[{"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/comments?post=442173"}],"version-history":[{"count":0,"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/posts\/442173\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/media\/442159"}],"wp:attachment":[{"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/media?parent=442173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/categories?post=442173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/tags?post=442173"},{"taxonomy":"domains","embeddable":true,"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/domains?post=442173"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/test.ecinews.fr\/fr\/wp-json\/wp\/v2\/ppma_author?post=442173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}