{"id":497,"date":"2021-10-17T19:04:25","date_gmt":"2021-10-17T18:04:25","guid":{"rendered":"https:\/\/www.netexpertise.eu\/es\/?p=497"},"modified":"2021-10-17T19:04:27","modified_gmt":"2021-10-17T18:04:27","slug":"todos-los-iconos-disponibles-del-diagram-as-code","status":"publish","type":"post","link":"http:\/\/www.netexpertise.eu\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html","title":{"rendered":"Todos los Iconos Disponibles del Diagram as Code"},"content":{"rendered":"\n<p>El Diagram as Code de <a href=\"https:\/\/diagrams.mingrammer.com\/docs\/getting-started\/examples\" target=\"_blank\" rel=\"noreferrer noopener\">Mingrammer<\/a> le permite crear <a href=\"\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html\">hermosos diagramas<\/a> ofreciendo muchos iconos. Es frustrante tener que ir a cada subdirectorio para encontrar todos los \u00edconos disponibles. As\u00ed que decid\u00ed escribir un fragmento de c\u00f3digo que importe las clases de los subm\u00f3dulos del paquete Diagram as Code.<br>Luego reun\u00ed los subm\u00f3dulos de cada grupo en un cluster &#8211; que se muestran en la parte azul &#8211; y las clases en verde. Una clase corresponde a un icono espec\u00edfico.<br><br>En esta imagen encontrar\u00e1s todos los iconos disponibles para sus diagramas as code. Haga clic para ampliar la imagen en una mejor resoluci\u00f3n. Puede guardarlo con un simple clic derecho.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/www.netexpertise.eu\/images\/diagram_as_code_all_icons_650.png\" alt=\"Diagram as code todos los iconos\"\/><\/figure>\n\n\n\n<p>Aqu\u00ed est\u00e1 el c\u00f3digo fuente que genera la imagen de arriba, la cual puede adaptar a sus necesidades para obtener todos los \u00edconos m\u00e1s recientes. Tal vez desee mostrar iconos para un grupo en particular o generar im\u00e1genes separadas para cada uno de ellos.<br><br>Tuve que vincular los \u00edconos juntos para que se mostraran horizontalmente en lugar de en una sola columna infinita. Esto es lo que hace la funci\u00f3n recursiva display_icons. Por alguna raz\u00f3n que se me escapa, la recursividad funciona eliminando el \u00faltimo elemento, pero no el primero.<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>El Diagram as Code de Mingrammer le permite crear hermosos diagramas ofreciendo muchos iconos. Es frustrante tener que ir a cada subdirectorio para encontrar todos los \u00edconos disponibles. As\u00ed que decid\u00ed escribir un fragmento de c\u00f3digo que importe las clases de los subm\u00f3dulos del paquete Diagram as Code.Luego reun\u00ed los subm\u00f3dulos de cada grupo en [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[65],"tags":[108,66,59],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Netexpertise - Todos los Iconos Disponibles del Diagram as Code<\/title>\n<meta name=\"description\" content=\"Muestre todos los iconos disponibles del diagram as code en una \u00fanica imagen. Suministrado con c\u00f3digo Python para generaci\u00f3n 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\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Netexpertise - Todos los Iconos Disponibles del Diagram as Code\" \/>\n<meta property=\"og:description\" content=\"Muestre todos los iconos disponibles del diagram as code en una \u00fanica imagen. Suministrado con c\u00f3digo Python para generaci\u00f3n local\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.netexpertise.eu\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html\" \/>\n<meta property=\"og:site_name\" content=\"Netexpertise\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-17T18:04:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-17T18:04:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.netexpertise.eu\/images\/diagram_as_code_all_icons_650.png\" \/>\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\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html\",\"url\":\"http:\/\/www.netexpertise.eu\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html\",\"name\":\"Netexpertise - Todos los Iconos Disponibles del Diagram as Code\",\"isPartOf\":{\"@id\":\"http:\/\/www.netexpertise.eu\/es\/#website\"},\"datePublished\":\"2021-10-17T18:04:25+00:00\",\"dateModified\":\"2021-10-17T18:04:27+00:00\",\"author\":{\"@id\":\"http:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf\"},\"description\":\"Muestre todos los iconos disponibles del diagram as code en una \u00fanica imagen. Suministrado con c\u00f3digo Python para generaci\u00f3n local\",\"breadcrumb\":{\"@id\":\"http:\/\/www.netexpertise.eu\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.netexpertise.eu\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.netexpertise.eu\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"http:\/\/www.netexpertise.eu\/es\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Todos los Iconos Disponibles del Diagram as Code\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.netexpertise.eu\/es\/#website\",\"url\":\"http:\/\/www.netexpertise.eu\/es\/\",\"name\":\"Netexpertise\",\"description\":\"Sistemas \/ Redes \/ DevOps\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/www.netexpertise.eu\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf\",\"name\":\"dave\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"http:\/\/www.netexpertise.eu\/es\/#\/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\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Netexpertise - Todos los Iconos Disponibles del Diagram as Code","description":"Muestre todos los iconos disponibles del diagram as code en una \u00fanica imagen. Suministrado con c\u00f3digo Python para generaci\u00f3n 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\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html","og_locale":"es_ES","og_type":"article","og_title":"Netexpertise - Todos los Iconos Disponibles del Diagram as Code","og_description":"Muestre todos los iconos disponibles del diagram as code en una \u00fanica imagen. Suministrado con c\u00f3digo Python para generaci\u00f3n local","og_url":"http:\/\/www.netexpertise.eu\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html","og_site_name":"Netexpertise","article_published_time":"2021-10-17T18:04:25+00:00","article_modified_time":"2021-10-17T18:04:27+00:00","og_image":[{"url":"https:\/\/www.netexpertise.eu\/images\/diagram_as_code_all_icons_650.png"}],"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\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html","url":"http:\/\/www.netexpertise.eu\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html","name":"Netexpertise - Todos los Iconos Disponibles del Diagram as Code","isPartOf":{"@id":"http:\/\/www.netexpertise.eu\/es\/#website"},"datePublished":"2021-10-17T18:04:25+00:00","dateModified":"2021-10-17T18:04:27+00:00","author":{"@id":"http:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf"},"description":"Muestre todos los iconos disponibles del diagram as code en una \u00fanica imagen. Suministrado con c\u00f3digo Python para generaci\u00f3n local","breadcrumb":{"@id":"http:\/\/www.netexpertise.eu\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.netexpertise.eu\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.netexpertise.eu\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"http:\/\/www.netexpertise.eu\/es"},{"@type":"ListItem","position":2,"name":"Todos los Iconos Disponibles del Diagram as Code"}]},{"@type":"WebSite","@id":"http:\/\/www.netexpertise.eu\/es\/#website","url":"http:\/\/www.netexpertise.eu\/es\/","name":"Netexpertise","description":"Sistemas \/ Redes \/ DevOps","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.netexpertise.eu\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Person","@id":"http:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf","name":"dave","image":{"@type":"ImageObject","inLanguage":"es","@id":"http:\/\/www.netexpertise.eu\/es\/#\/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"}}]}},"_links":{"self":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts\/497"}],"collection":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/comments?post=497"}],"version-history":[{"count":5,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts\/497\/revisions"}],"predecessor-version":[{"id":503,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts\/497\/revisions\/503"}],"wp:attachment":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/media?parent=497"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/categories?post=497"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/tags?post=497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}