# Topolib 🚀
[](https://www.python.org/)
[](LICENSE)
[](https://gitlab.com/DaniloBorquez/topolib/-/issues)
[](https://gitlab.com/DaniloBorquez/topolib/-/pipelines?ref=develop)
[](https://gitlab.com/DaniloBorquez/topolib/-/pipelines?ref=release)
[](https://topolib.readthedocs.io/en/latest/?badge=latest)
> **Topolib** is a compact, modular Python library for modeling, analyzing, and visualizing optical network topologies.
> **Goal:** Provide researchers and engineers with a simple, extensible toolkit for working with nodes, links, metrics, and map-based visualizations.
>
> 🌐 **Model** | 📊 **Analyze** | 🗺️ **Visualize** | 🧩 **Extend**
---
## 📂 Examples
Explore ready-to-run usage examples in the [`examples/`](examples/) folder!
- [Show topology on a map](examples/show_topology_in_map.py) 🗺️
- [Show default topology in map](examples/show_default_topology_in_map.py) 🗺️
- [Export topology as PNG](examples/export_topology_png.py) 🖼️
- [Export topology to CSV and JSON](examples/export_csv_json.py) 📄
- [Export topology and k-shortest paths for FlexNetSim](examples/export_flexnetsim.py) 🔀
---
## 🧭 Overview
Topolib is organized into four main modules:
- 🧱 **Elements:** `Node`, `Link` — basic building blocks
- 🕸️ **Topology:** `Topology`, `Path` — manage nodes, links, paths, and adjacency
- 📈 **Analysis:** `Metrics` — compute node degree, link stats, connection matrices
- 🖼️ **Visualization:** `MapView` — plot topologies on real maps
---
## ✨ Features
- Modular, extensible design
- Easy-to-use classes for nodes, links, and paths
- Built-in metrics and analysis helpers
- JSON import/export and interoperability
- Ready for Sphinx, Read the Docs, and PyPI
---
## ⚡ Quickstart
```bash
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install topolib
```
---
## 📚 Documentation
Full documentation: [https://topolib.readthedocs.io/](https://topolib.readthedocs.io/)
---
## 📝 Basic usage
```python
from topolib.elements.node import Node
from topolib.topology.topology import Topology
n1 = Node(1, 'A', 10.0, 20.0)
n2 = Node(2, 'B', 11.0, 21.0)
topo = Topology(nodes=[n1, n2])
# Add links, compute metrics, visualize, etc.
```
---
## 🛠️ Development
See [`CONTRIBUTING.md`](CONTRIBUTING.md) for development guidelines, commit message rules, and pre-commit setup.
---
## 📄 License
MIT — see [`LICENSE`](LICENSE) for details.
Raw data
{
"_id": null,
"home_page": "https://gitlab.com/DaniloBorquez/topolib",
"name": "topolib",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "network, topology, optical, analysis, visualization",
"author": "Danilo B\u00f3rquez-Paredes",
"author_email": "danilo.borquez.p@uai.cl",
"download_url": "https://files.pythonhosted.org/packages/d4/4b/910d04be2a00a03ad44e1bb1d1bf947c9f7f76a42482e25e88e3a5b12a83/topolib-0.7.0.tar.gz",
"platform": null,
"description": "# Topolib \ud83d\ude80\n\n[](https://www.python.org/)\n[](LICENSE)\n[](https://gitlab.com/DaniloBorquez/topolib/-/issues)\n[](https://gitlab.com/DaniloBorquez/topolib/-/pipelines?ref=develop)\n[](https://gitlab.com/DaniloBorquez/topolib/-/pipelines?ref=release)\n[](https://topolib.readthedocs.io/en/latest/?badge=latest)\n\n> **Topolib** is a compact, modular Python library for modeling, analyzing, and visualizing optical network topologies. \n> **Goal:** Provide researchers and engineers with a simple, extensible toolkit for working with nodes, links, metrics, and map-based visualizations. \n> \n> \ud83c\udf10 **Model** | \ud83d\udcca **Analyze** | \ud83d\uddfa\ufe0f **Visualize** | \ud83e\udde9 **Extend**\n\n---\n\n## \ud83d\udcc2 Examples\n\n\nExplore ready-to-run usage examples in the [`examples/`](examples/) folder!\n\n- [Show topology on a map](examples/show_topology_in_map.py) \ud83d\uddfa\ufe0f\n- [Show default topology in map](examples/show_default_topology_in_map.py) \ud83d\uddfa\ufe0f\n- [Export topology as PNG](examples/export_topology_png.py) \ud83d\uddbc\ufe0f\n- [Export topology to CSV and JSON](examples/export_csv_json.py) \ud83d\udcc4\n- [Export topology and k-shortest paths for FlexNetSim](examples/export_flexnetsim.py) \ud83d\udd00\n\n---\n\n## \ud83e\udded Overview\n\nTopolib is organized into four main modules:\n\n- \ud83e\uddf1 **Elements:** `Node`, `Link` \u2014 basic building blocks\n- \ud83d\udd78\ufe0f **Topology:** `Topology`, `Path` \u2014 manage nodes, links, paths, and adjacency\n- \ud83d\udcc8 **Analysis:** `Metrics` \u2014 compute node degree, link stats, connection matrices\n- \ud83d\uddbc\ufe0f **Visualization:** `MapView` \u2014 plot topologies on real maps\n\n---\n\n## \u2728 Features\n\n- Modular, extensible design\n- Easy-to-use classes for nodes, links, and paths\n- Built-in metrics and analysis helpers\n- JSON import/export and interoperability\n- Ready for Sphinx, Read the Docs, and PyPI\n\n---\n\n## \u26a1 Quickstart\n\n```bash\npython -m venv .venv\nsource .venv/bin/activate\npip install -U pip\npip install topolib\n```\n\n---\n\n## \ud83d\udcda Documentation\n\nFull documentation: [https://topolib.readthedocs.io/](https://topolib.readthedocs.io/)\n\n---\n\n## \ud83d\udcdd Basic usage\n\n```python\nfrom topolib.elements.node import Node\nfrom topolib.topology.topology import Topology\n\nn1 = Node(1, 'A', 10.0, 20.0)\nn2 = Node(2, 'B', 11.0, 21.0)\ntopo = Topology(nodes=[n1, n2])\n# Add links, compute metrics, visualize, etc.\n```\n\n---\n\n## \ud83d\udee0\ufe0f Development\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for development guidelines, commit message rules, and pre-commit setup.\n\n---\n\n## \ud83d\udcc4 License\n\nMIT \u2014 see [`LICENSE`](LICENSE) for details.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A compact Python library for modeling, analyzing, and visualizing optical network topologies.",
"version": "0.7.0",
"project_urls": {
"Documentation": "https://topolib.readthedocs.io/",
"Homepage": "https://gitlab.com/DaniloBorquez/topolib",
"Repository": "https://gitlab.com/DaniloBorquez/topolib"
},
"split_keywords": [
"network",
" topology",
" optical",
" analysis",
" visualization"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d1104942350e1fdefcb36c5aee1bc98f2ec8ef168dd727d131b5905b14143a7a",
"md5": "ddab050343ee3b2e4cdd0280aefc0542",
"sha256": "3f50ca95843900ee1aefe84a941ab22cc6b172e67739bc7e6170294251f4b467"
},
"downloads": -1,
"filename": "topolib-0.7.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ddab050343ee3b2e4cdd0280aefc0542",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 88533,
"upload_time": "2025-10-22T16:24:26",
"upload_time_iso_8601": "2025-10-22T16:24:26.279850Z",
"url": "https://files.pythonhosted.org/packages/d1/10/4942350e1fdefcb36c5aee1bc98f2ec8ef168dd727d131b5905b14143a7a/topolib-0.7.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d44b910d04be2a00a03ad44e1bb1d1bf947c9f7f76a42482e25e88e3a5b12a83",
"md5": "9e1bbdce2eb0aae51d4ac41f702a2c09",
"sha256": "c56f86b5bbf3e4b383519be5666e68fa4af5d7eb265196a2ffb58c031d3fd75b"
},
"downloads": -1,
"filename": "topolib-0.7.0.tar.gz",
"has_sig": false,
"md5_digest": "9e1bbdce2eb0aae51d4ac41f702a2c09",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 67814,
"upload_time": "2025-10-22T16:24:27",
"upload_time_iso_8601": "2025-10-22T16:24:27.206231Z",
"url": "https://files.pythonhosted.org/packages/d4/4b/910d04be2a00a03ad44e1bb1d1bf947c9f7f76a42482e25e88e3a5b12a83/topolib-0.7.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-22 16:24:27",
"github": false,
"gitlab": true,
"bitbucket": false,
"codeberg": false,
"gitlab_user": "DaniloBorquez",
"gitlab_project": "topolib",
"lcname": "topolib"
}