unifi-network-maps 1.4.3__py3-none-any.whl → 1.4.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. unifi_network_maps/__init__.py +1 -1
  2. unifi_network_maps/assets/themes/dark.yaml +2 -2
  3. unifi_network_maps/cli/__init__.py +2 -38
  4. unifi_network_maps/cli/args.py +166 -0
  5. unifi_network_maps/cli/main.py +18 -747
  6. unifi_network_maps/cli/render.py +255 -0
  7. unifi_network_maps/cli/runtime.py +157 -0
  8. unifi_network_maps/io/mkdocs_assets.py +21 -0
  9. unifi_network_maps/io/mock_generate.py +2 -294
  10. unifi_network_maps/model/mock.py +307 -0
  11. unifi_network_maps/render/device_ports_md.py +44 -27
  12. unifi_network_maps/render/legend.py +30 -0
  13. unifi_network_maps/render/lldp_md.py +81 -60
  14. unifi_network_maps/render/markdown_tables.py +21 -0
  15. unifi_network_maps/render/mermaid.py +72 -85
  16. unifi_network_maps/render/mkdocs.py +167 -0
  17. unifi_network_maps/render/templates/device_port_block.md.j2 +5 -0
  18. unifi_network_maps/render/templates/legend_compact.html.j2 +14 -0
  19. unifi_network_maps/render/templates/lldp_device_section.md.j2 +15 -0
  20. unifi_network_maps/render/templates/markdown_section.md.j2 +3 -0
  21. unifi_network_maps/render/templates/mermaid_legend.mmd.j2 +30 -0
  22. unifi_network_maps/render/templates/mkdocs_document.md.j2 +23 -0
  23. unifi_network_maps/render/templates/mkdocs_dual_theme_style.html.j2 +8 -0
  24. unifi_network_maps/render/templates/mkdocs_html_block.html.j2 +2 -0
  25. unifi_network_maps/render/templates/mkdocs_legend.css.j2 +29 -0
  26. unifi_network_maps/render/templates/mkdocs_legend.js.j2 +18 -0
  27. unifi_network_maps/render/templates/mkdocs_mermaid_block.md.j2 +4 -0
  28. unifi_network_maps/render/templating.py +19 -0
  29. {unifi_network_maps-1.4.3.dist-info → unifi_network_maps-1.4.5.dist-info}/METADATA +2 -1
  30. {unifi_network_maps-1.4.3.dist-info → unifi_network_maps-1.4.5.dist-info}/RECORD +34 -14
  31. {unifi_network_maps-1.4.3.dist-info → unifi_network_maps-1.4.5.dist-info}/WHEEL +0 -0
  32. {unifi_network_maps-1.4.3.dist-info → unifi_network_maps-1.4.5.dist-info}/entry_points.txt +0 -0
  33. {unifi_network_maps-1.4.3.dist-info → unifi_network_maps-1.4.5.dist-info}/licenses/LICENSE +0 -0
  34. {unifi_network_maps-1.4.3.dist-info → unifi_network_maps-1.4.5.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,23 @@
1
+ # {{ title }}
2
+
3
+ {% if timestamp_line -%}
4
+ {{ timestamp_line }}
5
+
6
+ {% endif -%}
7
+ {% if dual_style -%}
8
+ {{ dual_style }}{% endif -%}
9
+ {% set title = "Map" %}
10
+ {% set body = map_block %}
11
+ {% include "markdown_section.md.j2" %}
12
+
13
+ {% if legend_title -%}
14
+ {% set title = legend_title %}
15
+ {% set body = legend_block %}
16
+ {% include "markdown_section.md.j2" %}
17
+
18
+ {% else -%}
19
+ {{ legend_block }}
20
+
21
+ {% endif -%}
22
+
23
+ {{ device_overview }}
@@ -0,0 +1,8 @@
1
+ <style>
2
+ .unifi-mermaid--light,.unifi-legend--light{display:none;}
3
+ .unifi-mermaid--dark,.unifi-legend--dark{display:none;}
4
+ [data-md-color-scheme="default"] .unifi-mermaid--light{display:block;}
5
+ [data-md-color-scheme="default"] .unifi-legend--light{display:block;}
6
+ [data-md-color-scheme="slate"] .unifi-mermaid--dark{display:block;}
7
+ [data-md-color-scheme="slate"] .unifi-legend--dark{display:block;}
8
+ </style>
@@ -0,0 +1,2 @@
1
+ <div class="{{ class_name }}"{% if data_unifi_legend %} data-unifi-legend{% endif %}>
2
+ {{ content | safe }}</div>
@@ -0,0 +1,29 @@
1
+ .unifi-legend-hidden,
2
+ .unifi-legend-hidden.unifi-legend,
3
+ .unifi-legend-hidden.unifi-legend--light,
4
+ .unifi-legend-hidden.unifi-legend--dark {
5
+ display: none !important;
6
+ }
7
+ .unifi-legend-sidebar {
8
+ margin-top: 1rem;
9
+ padding: 0.5rem 0.75rem;
10
+ border: 1px solid rgba(0, 0, 0, 0.08);
11
+ border-radius: 6px;
12
+ font-size: 0.75rem;
13
+ }
14
+ .unifi-legend-title {
15
+ font-weight: 600;
16
+ margin-bottom: 0.5rem;
17
+ }
18
+ .unifi-legend-sidebar table {
19
+ width: 100%;
20
+ border-collapse: collapse;
21
+ }
22
+ .unifi-legend-sidebar td,
23
+ .unifi-legend-sidebar th {
24
+ border: 0;
25
+ padding: 0.15rem 0;
26
+ }
27
+ .unifi-legend-sidebar svg {
28
+ display: block;
29
+ }
@@ -0,0 +1,18 @@
1
+ document.addEventListener("DOMContentLoaded", () => {
2
+ const legends = document.querySelectorAll("[data-unifi-legend]");
3
+ const sidebar = document.querySelector(".md-sidebar--secondary .md-sidebar__scrollwrap");
4
+ if (!legends.length || !sidebar) {
5
+ return;
6
+ }
7
+ const wrapper = document.createElement("div");
8
+ wrapper.className = "unifi-legend-sidebar";
9
+ const title = document.createElement("div");
10
+ title.className = "unifi-legend-title";
11
+ title.textContent = "Legend";
12
+ wrapper.appendChild(title);
13
+ legends.forEach((legend) => {
14
+ wrapper.appendChild(legend.cloneNode(true));
15
+ legend.classList.add("unifi-legend-hidden");
16
+ });
17
+ sidebar.appendChild(wrapper);
18
+ });
@@ -0,0 +1,4 @@
1
+ <div class="{{ class_name }}">
2
+ ```mermaid
3
+ {{ content }}```
4
+ </div>
@@ -0,0 +1,19 @@
1
+ """Jinja2 helpers for Markdown/HTML rendering."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from jinja2 import Environment, PackageLoader, StrictUndefined, select_autoescape
6
+
7
+ _ENV = Environment(
8
+ loader=PackageLoader("unifi_network_maps.render", "templates"),
9
+ autoescape=select_autoescape(enabled_extensions=("html", "xml")),
10
+ trim_blocks=True,
11
+ lstrip_blocks=True,
12
+ keep_trailing_newline=True,
13
+ undefined=StrictUndefined,
14
+ )
15
+
16
+
17
+ def render_template(name: str, **context: object) -> str:
18
+ template = _ENV.get_template(name)
19
+ return template.render(**context)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: unifi-network-maps
3
- Version: 1.4.3
3
+ Version: 1.4.5
4
4
  Summary: Dynamic UniFi -> network maps in mermaid or svg
5
5
  Author: Merlijn
6
6
  License-Expression: MIT
@@ -23,6 +23,7 @@ License-File: LICENSE
23
23
  Requires-Dist: unifi-controller-api==0.3.2
24
24
  Requires-Dist: python-dotenv==1.2.1
25
25
  Requires-Dist: PyYAML==6.0.3
26
+ Requires-Dist: Jinja2==3.1.6
26
27
  Provides-Extra: dev
27
28
  Requires-Dist: Faker==40.1.0; extra == "dev"
28
29
  Requires-Dist: behave==1.3.3; extra == "dev"
@@ -1,4 +1,4 @@
1
- unifi_network_maps/__init__.py,sha256=rxvQUWSe6nvSADkIyuziyi8Irk70s2DZSxOB9c8cpAQ,22
1
+ unifi_network_maps/__init__.py,sha256=Fv2JHnR-ADpzdVitwHAsUrkhe-BpoDkmx7MxtXxlm1k,22
2
2
  unifi_network_maps/__main__.py,sha256=XsOjaqslAVgyVlOTokjVddZ2iT8apZXpJ_OB-9WEEe4,179
3
3
  unifi_network_maps/adapters/__init__.py,sha256=nzx1KsiYalL_YuXKE6acW8Dj5flmMg0-i4gyYO0gV54,22
4
4
  unifi_network_maps/adapters/config.py,sha256=Bx9JDZxxY7Gjxyb8FDT0dxiKfgXt_TmzTDbgvpwB53s,1548
@@ -48,32 +48,52 @@ unifi_network_maps/assets/icons/isometric/truck-2.svg,sha256=I7MFGbXW2fmr9WdD29N
48
48
  unifi_network_maps/assets/icons/isometric/truck.svg,sha256=BrpBr9Qf8hplQIrBpfhN2USxUlPvGCKahlV5e-G13r0,7195
49
49
  unifi_network_maps/assets/icons/isometric/user.svg,sha256=bYpr0t8rETJ1M7RDTWaNkK-nfF3kq9eMxmxYCthNmE0,23026
50
50
  unifi_network_maps/assets/icons/isometric/vm.svg,sha256=in6x9cdS6JgQVJl0KAbA79rap4X140dfIBCuxmgQI7s,3694
51
- unifi_network_maps/assets/themes/dark.yaml,sha256=SxK6QnnvrljQxg82NFbU052vlqTVTVp9jiYGu9b0bxI,932
51
+ unifi_network_maps/assets/themes/dark.yaml,sha256=6n4_H6MZbA6DKLdF2eaNcCXYLKNJjVjNN9gmwZX97sA,932
52
52
  unifi_network_maps/assets/themes/default.yaml,sha256=F2Jj18NmdaJ_zyERvGAn8NEWBwapjtozrtZUxayd5AU,849
53
- unifi_network_maps/cli/__init__.py,sha256=2FdmLMpYFh_7P0ew2LnieLANf6ni43Ht9FKzYUDiNis,770
53
+ unifi_network_maps/cli/__init__.py,sha256=cds9GvFNZmYAR22Ab3TSzfriSAW--kf9jvC5U-21AoA,70
54
54
  unifi_network_maps/cli/__main__.py,sha256=nK_jh78VW3h3DRvSpjzpcf64zkCqniP2k82xUR9Hw2I,147
55
- unifi_network_maps/cli/main.py,sha256=y053K-EbnAvxZ073-AEHhAGYWSvc4-UcoDTKpaBsvZY,27319
55
+ unifi_network_maps/cli/args.py,sha256=lIgQDeob_SIhjXg76hJsnpgNOKupSjSYum_MqarWOkE,5552
56
+ unifi_network_maps/cli/main.py,sha256=8r4zxhDYzDNJ-JMzX3HjPD1QTIUIyrrQeCGxcqe2vqc,4015
57
+ unifi_network_maps/cli/render.py,sha256=sUyDWm_I_zbEcKuNEpKUXDxhe1XptgOYsmdMP9BJ3Eg,7040
58
+ unifi_network_maps/cli/runtime.py,sha256=Hln4LMpuTrEsy6gIBmqkOrUpMb4nTeZ-AH72KyxpZwA,4723
56
59
  unifi_network_maps/io/__init__.py,sha256=nzx1KsiYalL_YuXKE6acW8Dj5flmMg0-i4gyYO0gV54,22
57
60
  unifi_network_maps/io/debug.py,sha256=eUVs6GLfs6VqI6ma8ra7NLhC3q4ek2K8OSRLnpQDF9s,1745
58
61
  unifi_network_maps/io/export.py,sha256=2vURunQDja-_fKKMb-gQG-n34aeM8GFprNJqcGaP4qg,843
62
+ unifi_network_maps/io/mkdocs_assets.py,sha256=oueDLiiIW05mN-mZ2BWV7oECX-EXDjJt8msCJHMcQwg,596
59
63
  unifi_network_maps/io/mock_data.py,sha256=uiQ8Ta8oxs5D1MUA1ONWmp09sxH0-FNlz3SJBXMeezo,714
60
- unifi_network_maps/io/mock_generate.py,sha256=xKaPRj-STtI154SMTPP9iCl0s7AVZekX4uPb-bMxRvA,8508
64
+ unifi_network_maps/io/mock_generate.py,sha256=xiJz_qtNW7iVj7dezLNyVXAHtCHAi8U5CSXK5mrJE4U,233
61
65
  unifi_network_maps/model/__init__.py,sha256=nzx1KsiYalL_YuXKE6acW8Dj5flmMg0-i4gyYO0gV54,22
62
66
  unifi_network_maps/model/labels.py,sha256=m_k8mbzWtOSDOjjHhLUqwIw93pg98HAtGtHkiERXmek,1135
63
67
  unifi_network_maps/model/lldp.py,sha256=SrPW5XC2lfJgaGeVx-KnSFNltyok7gIWWQNg1SkOaj4,3300
68
+ unifi_network_maps/model/mock.py,sha256=kd1MSiIn-7KKu_nMVmheYPfTyAN5DHt4dzRrBifF_lI,8706
64
69
  unifi_network_maps/model/ports.py,sha256=o3NBlXcC5VV5iPWJsO4Ll1mRKJZC0f8zTHdlkkE34GU,609
65
70
  unifi_network_maps/model/topology.py,sha256=JfpY6Pam_pgqnnmsBmzy3oDv4OCi4Ezc8msxvp5Z5NQ,26784
66
71
  unifi_network_maps/render/__init__.py,sha256=nzx1KsiYalL_YuXKE6acW8Dj5flmMg0-i4gyYO0gV54,22
67
- unifi_network_maps/render/device_ports_md.py,sha256=QoRiuP9l2CH8BYRHXRaWM5wyucAURz-zByzwMetnND4,15473
68
- unifi_network_maps/render/lldp_md.py,sha256=Eg5c5SWEwTfEn6AN0fOfD3f41GlsqwZQRO8AzIXFQf4,10753
69
- unifi_network_maps/render/mermaid.py,sha256=GVn7VN0xdmweDnjk-0Q8nuivqOZ3YFBQ_iTonNydy28,9675
72
+ unifi_network_maps/render/device_ports_md.py,sha256=vt5kGFSIAabMbcSxIuVVLSzdb_i58NHGi4hJM2ZLZR4,15975
73
+ unifi_network_maps/render/legend.py,sha256=TmZsxgCVOM2CZImI9zgRVyzrcg01HZFDj9F715d4CGo,772
74
+ unifi_network_maps/render/lldp_md.py,sha256=K6qTaI8HPsU7Cn0rNCJxn-Gvzkol1-m4kt0atI2NAXA,11347
75
+ unifi_network_maps/render/markdown_tables.py,sha256=VvM0fSnSmpeeDPcD5pXaL_j_PTF0STrMCaqnr2BVHn4,547
76
+ unifi_network_maps/render/mermaid.py,sha256=xsC57Xg-nKhmlVATzEbwLkMM2BOeDYlBjZuxBIPhHeI,8324
70
77
  unifi_network_maps/render/mermaid_theme.py,sha256=7nqLlvhaUA4z0YOs0ByEx_yHWcQD_hJJjhDtRcbSpg4,1781
78
+ unifi_network_maps/render/mkdocs.py,sha256=EOST9_eP1ZoZQax-p-2fjlelrl3AKEJ9Gn-KXW8TI-o,5389
71
79
  unifi_network_maps/render/svg.py,sha256=RHmSmlKxrS8m3-zYsTJu-GZugsZt8X8TDsPpK7DA6tg,38807
72
80
  unifi_network_maps/render/svg_theme.py,sha256=Si1ArM3v_-wAvHZyLFPiOZ0ohQRd6ezIckwC3_b-WIw,2684
81
+ unifi_network_maps/render/templating.py,sha256=VJbXzZFBPjL8LFFPcLf_EU5Eu53GN9_vpten2Mf9A-k,576
73
82
  unifi_network_maps/render/theme.py,sha256=vKYdPhcGEOV1o_irwqzJlIXPgRvZqQEzYYV2_TxZn4E,4301
74
- unifi_network_maps-1.4.3.dist-info/licenses/LICENSE,sha256=mYo1siIIfIwyfdOuK2-Zt0ij2xBTii2hnpeTu79nD80,1074
75
- unifi_network_maps-1.4.3.dist-info/METADATA,sha256=DbY9aCDyMocST84Fsr9Ukx2uSKxta0f3SM4TVHrrKbM,9529
76
- unifi_network_maps-1.4.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
77
- unifi_network_maps-1.4.3.dist-info/entry_points.txt,sha256=cdJ7jsBgNgHxSflYUOqgz5BbvuM0Nnh-x8_Hbyh_LFg,67
78
- unifi_network_maps-1.4.3.dist-info/top_level.txt,sha256=G0rUX1PNfVCn1u-KtB6QjFQHopCOVLnPMczvPOoraHg,19
79
- unifi_network_maps-1.4.3.dist-info/RECORD,,
83
+ unifi_network_maps/render/templates/device_port_block.md.j2,sha256=ZfyE_lEHz6ZyYRxAYhAhwpxlLczn_U9eTkRLUrwU5Io,50
84
+ unifi_network_maps/render/templates/legend_compact.html.j2,sha256=DaY2m6N6Yd7qNKLuB5Bc395MHfrKOU9myAZvgcJrhpE,738
85
+ unifi_network_maps/render/templates/lldp_device_section.md.j2,sha256=ewX-SBrL5Hn1kuwDKo4fqqetj9tTpR7LQavSn6No_yY,206
86
+ unifi_network_maps/render/templates/markdown_section.md.j2,sha256=ZKWErGcMoLtrZ3AsXVFqf04sFW4E_cYQBpa0DX1koOY,27
87
+ unifi_network_maps/render/templates/mermaid_legend.mmd.j2,sha256=nuamV8SAaFuA3Fp9rkAmoIIJSsG-DKjWDDCIRhTQlh4,1253
88
+ unifi_network_maps/render/templates/mkdocs_document.md.j2,sha256=SW52jDxyyunC2ZOjp-n3iaFQzYB0mfCIqbDdJjAl9V8,408
89
+ unifi_network_maps/render/templates/mkdocs_dual_theme_style.html.j2,sha256=n1LTmihCHThKhKXhNcYeVlQxcfjnSd8o43Xky1RsLTE,407
90
+ unifi_network_maps/render/templates/mkdocs_html_block.html.j2,sha256=5l5-BbNujOcERnWwVlaQ4H3qZ3GTEn_KLBwIMHjwj5w,113
91
+ unifi_network_maps/render/templates/mkdocs_legend.css.j2,sha256=tkTI-RagBSgdjUygVenlTsQFenU09ePbXOfDt_Q7YRM,612
92
+ unifi_network_maps/render/templates/mkdocs_legend.js.j2,sha256=qMYyCKsJ84uXf1wGgzbc7Bc49RU4oyuaGK9KrgQDQEI,685
93
+ unifi_network_maps/render/templates/mkdocs_mermaid_block.md.j2,sha256=9IncllWQpoI8BN3A7b2zOQ5cksj97ddsjHJ-aBhpw7o,66
94
+ unifi_network_maps-1.4.5.dist-info/licenses/LICENSE,sha256=mYo1siIIfIwyfdOuK2-Zt0ij2xBTii2hnpeTu79nD80,1074
95
+ unifi_network_maps-1.4.5.dist-info/METADATA,sha256=AVMHFRRAIPqB5nH1lObiLgXDGnwx_Ia38TkZaUzi60k,9558
96
+ unifi_network_maps-1.4.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
97
+ unifi_network_maps-1.4.5.dist-info/entry_points.txt,sha256=cdJ7jsBgNgHxSflYUOqgz5BbvuM0Nnh-x8_Hbyh_LFg,67
98
+ unifi_network_maps-1.4.5.dist-info/top_level.txt,sha256=G0rUX1PNfVCn1u-KtB6QjFQHopCOVLnPMczvPOoraHg,19
99
+ unifi_network_maps-1.4.5.dist-info/RECORD,,