{"id":1116,"date":"2021-10-09T07:42:17","date_gmt":"2021-10-09T06:42:17","guid":{"rendered":"https:\/\/www.netexpertise.eu\/fr\/?p=1116"},"modified":"2021-10-17T19:06:13","modified_gmt":"2021-10-17T18:06:13","slug":"toutes-les-icones-disponibles-du-diagram-as-code","status":"publish","type":"post","link":"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html","title":{"rendered":"Toutes les Ic\u00f4nes Disponibles du Diagram as Code"},"content":{"rendered":"\n<p>Le Diagram as Code de <a href=\"https:\/\/diagrams.mingrammer.com\/docs\/getting-started\/examples\" target=\"_blank\" rel=\"noreferrer noopener\">Mingrammer<\/a> permet de r\u00e9aliser de tr\u00e8s <a href=\"\/fr\/code\/python\/faites-de-beaux-diagrammes-avec-le-diagram-as-code.html\">beaux diagrammes<\/a> tout en offrant de nombreuses ic\u00f4nes. C&rsquo;est juste frustrant de devoir aller dans chaque sous-r\u00e9pertoire pour chercher toutes les ic\u00f4nes disponibles. J&rsquo;ai ainsi d\u00e9cid\u00e9 d&rsquo;\u00e9crire un bout de code qui importe les classes des sous-modules du package Diagram as Code.<br>J&rsquo;ai ensuite rassembl\u00e9 les sous-modules de chaque groupe dans un cluster &#8211; qui s&rsquo;affichent dans la partie bleue &#8211; et les classes en vert. Une classe correspond \u00e0 une ic\u00f4ne sp\u00e9cifique.<br><br>Vous trouverez sur cette image toutes les ic\u00f4nes disponibles pour vos diagrammes as code. Cliquez pour agrandir l&rsquo;image dans une meilleure r\u00e9solution. Vous pouvez l&rsquo;enregistrer d&rsquo;un simple clic droit.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"\/images\/diagram_as_code_all_icons_650.png\" alt=\"Diagram as code toutes les icones\"\/><\/figure>\n\n\n\n<p><br>Voici le code source qui g\u00e9n\u00e8re l&rsquo;image ci-dessus que vous pouvez adapter \u00e0 vos besoins pour obtenir toutes les derni\u00e8res ic\u00f4nes. Peut-\u00eatre voulez-vous afficher les ic\u00f4nes d&rsquo;un groupe particulier ou g\u00e9n\u00e9rer des images s\u00e9par\u00e9es pour chacun d&rsquo;entre eux.<br><br>J&rsquo;ai d\u00fb lier les ic\u00f4nes entre elles pour qu&rsquo;elles s&rsquo;affichent horizontalement plut\u00f4t que sur une colonne simple infinie. C&rsquo;est ce que fait la fonction r\u00e9cursive display_icons. Pour une raison qui m&rsquo;\u00e9chappe, la r\u00e9cursivit\u00e9 fonctionne en supprimant le dernier \u00e9l\u00e9ment, mais pas le premier.<br><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">#!\/usr\/bin\/env python3\n \nimport importlib\nimport pkgutil\nimport sys, inspect\n \nimport diagrams\nfrom diagrams import Cluster, Diagram, Edge\n \ndef get_modules(module):\n   path_list = []\n   spec_list = []\n   for importer, modname, ispkg in pkgutil.walk_packages(module.__path__):\n      import_path = f\"{module.__name__}.{modname}\"\n      if ispkg:\n         spec = pkgutil._get_spec(importer, modname)\n         importlib._bootstrap._load(spec)\n         spec_list.append(spec)\n      else:\n         path_list.append(import_path)\n   return path_list\n \ndef get_classes(module):\n   class_list = []\n   for name, obj in inspect.getmembers(module,inspect.isclass):\n      if not name.startswith('_'):\n         class_list.append([name,obj]) \n   return class_list\n \ndef add_module_to_provider_list(providers, module):\n   # eg diagrams.azure.database\n   # add \"database\" to array linked to key \"azure\"\n   (diagram,provider,pclass) = module.split('.')\n   if provider not in providers:\n      providers[provider] = [pclass]\n   else:\n      providers[provider].append(pclass)\n \ndef get_provider_list(providers):\n   return providers.keys()\n \ndef get_provider_classes(providers, provider):\n   return providers[provider]\n \ndef display_icons(class_list):\n   if len(class_list) &lt; 1: return\n   if len(class_list) == 1: return class_list[0][1](class_list[0][0])\n   length = len(class_list)\n   return display_icons(class_list[:-1]) - class_list[length-1][1](class_list[length-1][0])\n \nif __name__ == \"__main__\":\n   providers = {}\n   modules = get_modules(diagrams)\n \n   for module in modules:\n      # Module exception\n      # \/usr\/local\/lib\/python3.8\/site-packages\/diagrams\/oci\/database.py\n      # NameError: name 'AutonomousDatabase' is not defined\n      if module not in ['diagrams.oci.database']:\n         add_module_to_provider_list(providers, module)\n \n   with Diagram(\"all_Icons\", show=\"False\", outformat=\"png\"):\n      for provider in get_provider_list(providers):\n         with Cluster(provider):\n            for pclassname in get_provider_classes(providers, provider):\n               with Cluster(pclassname):\n                  classes = get_classes(importlib.import_module('diagrams.'+provider+'.'+pclassname))\n                  display_classes(classes)<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Le Diagram as Code de Mingrammer permet de r\u00e9aliser de tr\u00e8s beaux diagrammes tout en offrant de nombreuses ic\u00f4nes. C&rsquo;est juste frustrant de devoir aller dans chaque sous-r\u00e9pertoire pour chercher toutes les ic\u00f4nes disponibles. J&rsquo;ai ainsi d\u00e9cid\u00e9 d&rsquo;\u00e9crire un bout de code qui importe les classes des sous-modules du package Diagram as Code.J&rsquo;ai ensuite rassembl\u00e9 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[446],"tags":[448,447,451],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Netexpertise - Toutes les Ic\u00f4nes Disponibles du Diagram as Code<\/title>\n<meta name=\"description\" content=\"Affichez toutes les ic\u00f4nes disponibles du diagram as code dans une image unique. Fourni avec le code Python pour une g\u00e9n\u00e9ration en local\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Netexpertise - Toutes les Ic\u00f4nes Disponibles du Diagram as Code\" \/>\n<meta property=\"og:description\" content=\"Affichez toutes les ic\u00f4nes disponibles du diagram as code dans une image unique. Fourni avec le code Python pour une g\u00e9n\u00e9ration en local\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html\" \/>\n<meta property=\"og:site_name\" content=\"Netexpertise\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-09T06:42:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-17T18:06:13+00:00\" \/>\n<meta name=\"author\" content=\"dave\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@netexpertise\" \/>\n<meta name=\"twitter:site\" content=\"@netexpertise\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html\",\"url\":\"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html\",\"name\":\"Netexpertise - Toutes les Ic\u00f4nes Disponibles du Diagram as Code\",\"isPartOf\":{\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#website\"},\"datePublished\":\"2021-10-09T06:42:17+00:00\",\"dateModified\":\"2021-10-17T18:06:13+00:00\",\"author\":{\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632\"},\"description\":\"Affichez toutes les ic\u00f4nes disponibles du diagram as code dans une image unique. Fourni avec le code Python pour une g\u00e9n\u00e9ration en local\",\"breadcrumb\":{\"@id\":\"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.netexpertise.eu\/fr\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toutes les Ic\u00f4nes Disponibles du Diagram as Code\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#website\",\"url\":\"https:\/\/www.netexpertise.eu\/fr\/\",\"name\":\"Netexpertise\",\"description\":\"Syst\u00e8mes \/ R\u00e9seaux \/ DevOps\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.netexpertise.eu\/fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632\",\"name\":\"dave\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"caption\":\"dave\"},\"sameAs\":[\"http:\/\/www.netexpertise.eu\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Netexpertise - Toutes les Ic\u00f4nes Disponibles du Diagram as Code","description":"Affichez toutes les ic\u00f4nes disponibles du diagram as code dans une image unique. Fourni avec le code Python pour une g\u00e9n\u00e9ration en local","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":"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html","og_locale":"fr_FR","og_type":"article","og_title":"Netexpertise - Toutes les Ic\u00f4nes Disponibles du Diagram as Code","og_description":"Affichez toutes les ic\u00f4nes disponibles du diagram as code dans une image unique. Fourni avec le code Python pour une g\u00e9n\u00e9ration en local","og_url":"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html","og_site_name":"Netexpertise","article_published_time":"2021-10-09T06:42:17+00:00","article_modified_time":"2021-10-17T18:06:13+00:00","author":"dave","twitter_card":"summary_large_image","twitter_creator":"@netexpertise","twitter_site":"@netexpertise","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html","url":"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html","name":"Netexpertise - Toutes les Ic\u00f4nes Disponibles du Diagram as Code","isPartOf":{"@id":"https:\/\/www.netexpertise.eu\/fr\/#website"},"datePublished":"2021-10-09T06:42:17+00:00","dateModified":"2021-10-17T18:06:13+00:00","author":{"@id":"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632"},"description":"Affichez toutes les ic\u00f4nes disponibles du diagram as code dans une image unique. Fourni avec le code Python pour une g\u00e9n\u00e9ration en local","breadcrumb":{"@id":"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.netexpertise.eu\/fr\/code\/python\/toutes-les-icones-disponibles-du-diagram-as-code.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.netexpertise.eu\/fr"},{"@type":"ListItem","position":2,"name":"Toutes les Ic\u00f4nes Disponibles du Diagram as Code"}]},{"@type":"WebSite","@id":"https:\/\/www.netexpertise.eu\/fr\/#website","url":"https:\/\/www.netexpertise.eu\/fr\/","name":"Netexpertise","description":"Syst\u00e8mes \/ R\u00e9seaux \/ DevOps","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.netexpertise.eu\/fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632","name":"dave","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/image\/","url":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","contentUrl":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","caption":"dave"},"sameAs":["http:\/\/www.netexpertise.eu"]}]}},"_links":{"self":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/posts\/1116"}],"collection":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/comments?post=1116"}],"version-history":[{"count":0,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/posts\/1116\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/media?parent=1116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/categories?post=1116"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/tags?post=1116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}