From af89cd9453c2b7137c439cc2a599717a9631e5b0 Mon Sep 17 00:00:00 2001 From: Dmitrii Gudov Date: Wed, 25 Feb 2026 09:39:47 +0300 Subject: [PATCH] add dummy readme --- UML/UML.png | Bin 23601 -> 0 bytes UML/UML.svg | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++ readme.md | 5 +++ 3 files changed, 111 insertions(+) delete mode 100644 UML/UML.png create mode 100644 UML/UML.svg create mode 100644 readme.md diff --git a/UML/UML.png b/UML/UML.png deleted file mode 100644 index 1aff8d4e0c1f1f2fd13f42cd0c6c44ca00bc6bb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23601 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[str, Device]+networksDict[str, Network]+__init__(self)void+add_device(self, device: Device)void+rm_device(self, device: Device)void+add_network(self, network: Network)void+rm_network(self, network: Network)void+__repr__(self)strNetwork+namestr+interfacesList[Interface]+vlanOptional[str]+network_ipOptional[str]+subnet_maskOptional[str]+__init__(self, ...)void+add_interface(self, interface: Interface)void+rm_interface(self, interface: Interface)void+__repr__(self)strHostRouterSwitchDevice+namestr+rolestr+interfacesDict[str, Interface]+__init__(self, name: str)void+add_interface(self, interface: Interface)void+rm_interface(self, interface: Interface)void+__repr__(self)strVirtualInterfaceInterface+namestr+ip_addressOptional[str]+networkOptional[str]+default_gatewayOptional[str]+deviceDevice+__init__(self, ...)void+__repr__(self)str has1..*1has1..*1has1..*1has1..*1has1..*1 + + + + + + + diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..8f61d35 --- /dev/null +++ b/readme.md @@ -0,0 +1,5 @@ +# Network Diagrams Tool + +## UML Topology + +![[UML/UML.svg]]