Graphinate 0.3.1__tar.gz → 0.4.0__tar.gz

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 (108) hide show
  1. {graphinate-0.3.1 → graphinate-0.4.0}/.github/workflows/test-beta.yml +1 -1
  2. graphinate-0.4.0/.sonarcloud.properties +15 -0
  3. {graphinate-0.3.1 → graphinate-0.4.0}/PKG-INFO +54 -49
  4. {graphinate-0.3.1 → graphinate-0.4.0}/README.md +38 -33
  5. graphinate-0.4.0/docs/assets/stylesheets/extra.css +64 -0
  6. {graphinate-0.3.1 → graphinate-0.4.0}/docs/examples/github.md +0 -7
  7. graphinate-0.4.0/docs/examples/math.md +29 -0
  8. {graphinate-0.3.1 → graphinate-0.4.0}/docs/index.md +25 -19
  9. {graphinate-0.3.1 → graphinate-0.4.0}/docs/intro.md +31 -30
  10. {graphinate-0.3.1 → graphinate-0.4.0}/docs/start.md +7 -3
  11. {graphinate-0.3.1 → graphinate-0.4.0}/examples/code/python_ast.py +1 -1
  12. {graphinate-0.3.1 → graphinate-0.4.0}/examples/code/python_dependencies.py +3 -4
  13. graphinate-0.4.0/examples/code/requirements.txt +2 -0
  14. {graphinate-0.3.1 → graphinate-0.4.0}/examples/github/followers.py +6 -1
  15. {graphinate-0.3.1 → graphinate-0.4.0}/examples/github/repositories.py +4 -2
  16. graphinate-0.4.0/examples/github/requirements.txt +2 -0
  17. graphinate-0.4.0/examples/math/graph_atlas.py +52 -0
  18. graphinate-0.4.0/examples/math/graphs.py +808 -0
  19. {graphinate-0.3.1/src/graphinate/tools → graphinate-0.4.0/examples/math}/gui.py +3 -3
  20. {graphinate-0.3.1 → graphinate-0.4.0}/examples/math/polygonal_graph.py +7 -4
  21. {graphinate-0.3.1 → graphinate-0.4.0}/examples/system/processes.py +3 -2
  22. graphinate-0.4.0/examples/system/requirements.txt +2 -0
  23. {graphinate-0.3.1 → graphinate-0.4.0}/examples/web/page_links.py +4 -1
  24. graphinate-0.4.0/examples/web/requirements.txt +4 -0
  25. {graphinate-0.3.1 → graphinate-0.4.0}/pyproject.toml +21 -18
  26. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/__init__.py +4 -5
  27. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/builders.py +23 -12
  28. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/cli.py +2 -2
  29. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/color.py +1 -1
  30. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/materializers/__init__.py +16 -26
  31. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/modeling.py +25 -19
  32. graphinate-0.4.0/src/graphinate/server/web/static/js/murmurhash3_gc.js +64 -0
  33. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/viewer/index.html +1 -1
  34. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/tools/mutators.py +2 -2
  35. graphinate-0.4.0/src/graphinate/typing.py +65 -0
  36. {graphinate-0.3.1 → graphinate-0.4.0}/tests/conftest.py +8 -7
  37. {graphinate-0.3.1 → graphinate-0.4.0}/tests/graphinate/test_builders.py +37 -34
  38. {graphinate-0.3.1 → graphinate-0.4.0}/tests/graphinate/test_cli.py +3 -2
  39. {graphinate-0.3.1 → graphinate-0.4.0}/tests/graphinate/test_color.py +1 -0
  40. graphinate-0.4.0/tests/graphinate/test_materializers.py +87 -0
  41. {graphinate-0.3.1 → graphinate-0.4.0}/tests/graphinate/test_modeling.py +13 -5
  42. {graphinate-0.3.1 → graphinate-0.4.0}/tests/graphinate/test_server.py +4 -3
  43. graphinate-0.3.1/docs/assets/stylesheets/extra.css +0 -13
  44. graphinate-0.3.1/docs/examples/math.md +0 -15
  45. graphinate-0.3.1/examples/code/requirements.txt +0 -2
  46. graphinate-0.3.1/examples/github/requirements.txt +0 -2
  47. graphinate-0.3.1/examples/math/graph_atlas.py +0 -826
  48. graphinate-0.3.1/examples/system/requirements.txt +0 -2
  49. graphinate-0.3.1/examples/web/requirements.txt +0 -4
  50. graphinate-0.3.1/src/graphinate/typing.py +0 -54
  51. graphinate-0.3.1/tests/graphinate/test_materializers.py +0 -79
  52. {graphinate-0.3.1 → graphinate-0.4.0}/.coveragerc +0 -0
  53. {graphinate-0.3.1 → graphinate-0.4.0}/.github/dependabot.yml +0 -0
  54. {graphinate-0.3.1 → graphinate-0.4.0}/.github/workflows/codeql.yml +0 -0
  55. {graphinate-0.3.1 → graphinate-0.4.0}/.github/workflows/publish-docs.yaml +0 -0
  56. {graphinate-0.3.1 → graphinate-0.4.0}/.github/workflows/publish.yml +0 -0
  57. {graphinate-0.3.1 → graphinate-0.4.0}/.github/workflows/test.yml +0 -0
  58. {graphinate-0.3.1 → graphinate-0.4.0}/.gitignore +0 -0
  59. {graphinate-0.3.1 → graphinate-0.4.0}/LICENSE +0 -0
  60. {graphinate-0.3.1 → graphinate-0.4.0}/STATS.md +0 -0
  61. {graphinate-0.3.1 → graphinate-0.4.0}/docs/acknowledge.md +0 -0
  62. {graphinate-0.3.1 → graphinate-0.4.0}/docs/assets/images/logo-128.png +0 -0
  63. {graphinate-0.3.1 → graphinate-0.4.0}/docs/assets/images/network_graph.png +0 -0
  64. {graphinate-0.3.1 → graphinate-0.4.0}/docs/dev.md +0 -0
  65. {graphinate-0.3.1 → graphinate-0.4.0}/docs/examples/code.md +0 -0
  66. {graphinate-0.3.1 → graphinate-0.4.0}/docs/examples/system.md +0 -0
  67. {graphinate-0.3.1 → graphinate-0.4.0}/docs/examples/web.md +0 -0
  68. {graphinate-0.3.1 → graphinate-0.4.0}/docs/gen_ref_pages.py +0 -0
  69. {graphinate-0.3.1 → graphinate-0.4.0}/docs/usage/cli.md +0 -0
  70. {graphinate-0.3.1 → graphinate-0.4.0}/docs/usage/lib.md +0 -0
  71. {graphinate-0.3.1 → graphinate-0.4.0}/examples/github/_client.py +0 -0
  72. {graphinate-0.3.1 → graphinate-0.4.0}/examples/github/commits_visibilty_graph.py +0 -0
  73. {graphinate-0.3.1 → graphinate-0.4.0}/examples/github/followers.graphql +0 -0
  74. {graphinate-0.3.1 → graphinate-0.4.0}/examples/github/graphql.config.yml +0 -0
  75. {graphinate-0.3.1 → graphinate-0.4.0}/examples/github/repositories.graphql +0 -0
  76. {graphinate-0.3.1 → graphinate-0.4.0}/examples/math/requirements.txt +0 -0
  77. {graphinate-0.3.1 → graphinate-0.4.0}/mkdocs.yml +0 -0
  78. {graphinate-0.3.1 → graphinate-0.4.0}/playground/ethernet/traceroute.py +0 -0
  79. {graphinate-0.3.1 → graphinate-0.4.0}/playground/genric_graph.graphql +0 -0
  80. {graphinate-0.3.1 → graphinate-0.4.0}/playground/graphql.config.yml +0 -0
  81. {graphinate-0.3.1 → graphinate-0.4.0}/playground/house_of_graphs.py +0 -0
  82. {graphinate-0.3.1 → graphinate-0.4.0}/playground/social/albums.json +0 -0
  83. {graphinate-0.3.1 → graphinate-0.4.0}/playground/social/musicisians.py +0 -0
  84. {graphinate-0.3.1 → graphinate-0.4.0}/playground/text/nlp_graph.py +0 -0
  85. {graphinate-0.3.1 → graphinate-0.4.0}/playground/text/requirements.txt +0 -0
  86. {graphinate-0.3.1 → graphinate-0.4.0}/playground/time_series/requirements.txt +0 -0
  87. {graphinate-0.3.1 → graphinate-0.4.0}/playground/time_series/visibility_graph.py +0 -0
  88. {graphinate-0.3.1 → graphinate-0.4.0}/sonar-project.properties +0 -0
  89. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/__main__.py +0 -0
  90. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/materializers/matplotlib.py +0 -0
  91. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/__init__.py +0 -0
  92. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/starlette/__init__.py +0 -0
  93. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/starlette/views.py +0 -0
  94. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/__init__.py +0 -0
  95. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/elements/__init__.py +0 -0
  96. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/elements/index.html +0 -0
  97. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/graphiql/__init__.py +0 -0
  98. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/graphiql/index.html +0 -0
  99. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/rapidoc/__init__.py +0 -0
  100. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/rapidoc/index.html +0 -0
  101. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/static/images/logo-128.png +0 -0
  102. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/static/images/network_graph.png +0 -0
  103. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/viewer/__init__.py +0 -0
  104. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/voyager/__init__.py +0 -0
  105. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/server/web/voyager/index.html +0 -0
  106. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/tools/__init__.py +0 -0
  107. {graphinate-0.3.1 → graphinate-0.4.0}/src/graphinate/tools/converters.py +0 -0
  108. {graphinate-0.3.1 → graphinate-0.4.0}/tests/graphinate/test_tools.py +0 -0
@@ -16,7 +16,7 @@ jobs:
16
16
  fail-fast: false
17
17
  matrix:
18
18
  # https://github.com/actions/python-versions/blob/main/versions-manifest.json
19
- python-version: [ "3.14.0-alpha.1" ]
19
+ python-version: [ "3.14.0-alpha.4" ]
20
20
  steps:
21
21
  - uses: actions/checkout@v4
22
22
  - name: Set up Python ${{ matrix.python-version }}
@@ -0,0 +1,15 @@
1
+ # Path to sources
2
+ #sonar.sources=.
3
+ #sonar.exclusions=
4
+ #sonar.inclusions=
5
+
6
+ # Path to tests
7
+ #sonar.tests=
8
+ #sonar.test.exclusions=
9
+ #sonar.test.inclusions=
10
+
11
+ # Source encoding
12
+ #sonar.sourceEncoding=UTF-8
13
+
14
+ # Exclusions for copy-paste detection
15
+ #sonar.cpd.exclusions=
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: Graphinate
3
- Version: 0.3.1
3
+ Version: 0.4.0
4
4
  Summary: Graphinate. Data to Graphs.
5
5
  Project-URL: Homepage, https://erivlis.github.io/graphinate
6
6
  Project-URL: Documentation, https://erivlis.github.io/graphinate
@@ -27,12 +27,12 @@ Classifier: Topic :: Scientific/Engineering
27
27
  Classifier: Topic :: Software Development :: Libraries
28
28
  Classifier: Typing :: Typed
29
29
  Requires-Python: >=3.10
30
- Requires-Dist: click>=8.1.7
31
- Requires-Dist: inflect>=7.3.0
32
- Requires-Dist: loguru>=0.7.2
33
- Requires-Dist: matplotlib>=3.9.0
34
- Requires-Dist: networkx>=3.3
35
- Requires-Dist: strawberry-graphql[asgi,opentelemetry]>=0.235.1
30
+ Requires-Dist: click
31
+ Requires-Dist: inflect
32
+ Requires-Dist: loguru
33
+ Requires-Dist: matplotlib
34
+ Requires-Dist: networkx
35
+ Requires-Dist: strawberry-graphql[asgi,opentelemetry]
36
36
  Provides-Extra: dev
37
37
  Requires-Dist: pipdeptree; extra == 'dev'
38
38
  Requires-Dist: ruff; extra == 'dev'
@@ -45,17 +45,17 @@ Requires-Dist: mkdocs-material; extra == 'docs'
45
45
  Requires-Dist: mkdocs-section-index; extra == 'docs'
46
46
  Requires-Dist: mkdocstrings-python; extra == 'docs'
47
47
  Provides-Extra: plot
48
- Requires-Dist: scipy>=1.14.0; extra == 'plot'
48
+ Requires-Dist: scipy; extra == 'plot'
49
49
  Provides-Extra: server
50
50
  Requires-Dist: starlette-prometheus; extra == 'server'
51
- Requires-Dist: uvicorn[standard]>=0.30.1; extra == 'server'
51
+ Requires-Dist: uvicorn[standard]; extra == 'server'
52
52
  Provides-Extra: test
53
- Requires-Dist: faker>=23.2.1; extra == 'test'
54
- Requires-Dist: pytest-asyncio>=0.23.7; extra == 'test'
55
- Requires-Dist: pytest-cov>=5.0.0; extra == 'test'
56
- Requires-Dist: pytest-randomly>=3.15.0; extra == 'test'
57
- Requires-Dist: pytest-xdist>=3.6.1; extra == 'test'
58
- Requires-Dist: pytest>=8.2.2; extra == 'test'
53
+ Requires-Dist: faker; extra == 'test'
54
+ Requires-Dist: pytest; extra == 'test'
55
+ Requires-Dist: pytest-asyncio; extra == 'test'
56
+ Requires-Dist: pytest-cov; extra == 'test'
57
+ Requires-Dist: pytest-randomly; extra == 'test'
58
+ Requires-Dist: pytest-xdist; extra == 'test'
59
59
  Description-Content-Type: text/markdown
60
60
 
61
61
  # [Graphinate. Data to Graphs.](https://erivlis.github.io/graphinate/)
@@ -66,53 +66,58 @@ Description-Content-Type: text/markdown
66
66
  <tr style="vertical-align: middle;">
67
67
  <td>Package</td>
68
68
  <td>
69
- <img alt="PyPI - version" src="https://img.shields.io/pypi/v/graphinate">
70
- <img alt="PyPI - Status" src="https://img.shields.io/pypi/status/graphinate">
71
- <img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/graphinate">
72
- <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dd/graphinate">
73
- <br>
69
+ <img alt="PyPI - version" src="https://img.shields.io/pypi/v/graphinate.svg?logo=pypi&logoColor=lightblue">
70
+ <img alt="PyPI - Status" src="https://img.shields.io/pypi/status/graphinate.svg?logo=pypi&logoColor=lightblue">
71
+ <img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/graphinate.svg?logo=python&label=Python&logoColor=lightblue">
72
+ <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dd/graphinate.svg?logo=pypi&logoColor=lightblue">
73
+ <img alt="Libraries.io SourceRank" src="https://img.shields.io/librariesio/sourcerank/pypi/Graphinate.svg?logo=Libraries.io&label=SourceRank">
74
+ </td>
75
+ </tr>
76
+ <tr style="vertical-align: middle;">
77
+ <td>Code</td>
78
+ <td>
74
79
  <img alt="GitHub" src="https://img.shields.io/github/license/erivlis/graphinate">
75
- <img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/erivlis/graphinate">
76
- <img alt="GitHub last commit (by committer)" src="https://img.shields.io/github/last-commit/erivlis/graphinate">
77
- <a href="https://github.com/erivlis/graphinate/graphs/contributors"><img alt="Contributors" src="https://img.shields.io/github/contributors/erivlis/graphinate.svg"></a>
80
+ <img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/erivlis/graphinate.svg?label=Size&logo=git">
81
+ <img alt="GitHub last commit (by committer)" src="https://img.shields.io/github/last-commit/erivlis/graphinate.svg?&logo=git">
82
+ <a href="https://github.com/erivlis/graphinate/graphs/contributors"><img alt="Contributors" src="https://img.shields.io/github/contributors/erivlis/graphinate.svg?&logo=git"></a>
78
83
  </td>
79
84
  </tr>
80
- <tr>
85
+ <tr style="vertical-align: middle;">
81
86
  <td>Tools</td>
82
87
  <td>
83
88
  <a href="https://www.jetbrains.com/pycharm/"><img alt="PyCharm" src="https://img.shields.io/badge/PyCharm-FCF84A.svg?logo=PyCharm&logoColor=black&labelColor=21D789&color=FCF84A"></a>
84
- <a href="https://github.com/astral-sh/ruff"><img alt="ruff" src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" style="max-width:100%;"></a>
85
89
  <a href="https://github.com/astral-sh/uv"><img alt="uv" src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json" style="max-width:100%;"></a>
86
- <a href="https://squidfunk.github.io/mkdocs-material/"><img alt="mkdocs-material" src="https://img.shields.io/badge/Material_for_MkDocs-526CFE?&logo=MaterialForMkDocs&logoColor=white&labelColor=grey"></a>
90
+ <a href="https://github.com/astral-sh/ruff"><img alt="ruff" src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" style="max-width:100%;"></a>
87
91
  <a href="https://github.com/tox-dev/pipdeptree"><img alt="pipdeptree" src="https://img.shields.io/badge/pipdeptree-526CFE.svg?labelColor=gray&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADFElEQVR4nFxTW2tcVRRe39773E/mliZjwKRmhBaKt4BWRKmGgihCH3xUKNWC/Q/ii76IP8AHpSIiRfqmD5YKCinalhgiCMZLSVtMM0mTdDLTuZyZc9l7yTlp7WXBgXPW+fa31rfWtxU9FLMN79Crr028e+iJsZfb7fJMp23xRlOvbTR3L/y5cuOL3Vbv7/vxuPviecI/eWr6k/mj4+8AkM11y+zs2MKwMJvNgIgYINZX/rlx+tIvf72fZXr4P0EQyOCjjw98P9vwn8+/+z3Bq6sek7AJkNhsOjQcyjvFmHd2upd+PP/zsSxNI5mnPvjw8U9fPFJ9XVkgNuDVayEbcgVEfgikNfFg4JAmh1LyyfGq06QqE9vN6+fEs4fHnjv25vjbAOA4AsL2MVZ1hRcI4QXIH7ilMqQXkiYXRBJRbFNQnTsRlqfmxFvH66ccFyAQMxP3I5cqNZBSxIWcKORMO9g3yeSHzFkGbnVCIkDUZ+beEy+8VJ4XguC6TMPYokwrCAHUJsBxYptoFBYSMi0oLIlcAkuFYhal8Zl5VanZU0zErgfurufMFjEkWZ7iRFY4SlgYfW9bUIJKFQNjiNPYf1QZOZn/hTaStPQKTI4eDCxSjsL4I6BeJzOjgcnT0HqPqwBJCdHZjW/miWjkkG3hzqKIe5FVlM3llGuWqOxTDMBkWlJ/6PB2p0Sb21gXixdvLeTtDGOHLFvQHpkiYyTuNU5kuxJercTdpEK3Bz4yLdFrXVsQ33x1/bModjhvyrKKVXB/YD9gb8PgKAlolAZipmFTOIYcxq21Xz8XS5dbi+e+2zqbA3MjxYninH3PpkyZljwYjZE2FoxBIWm6YVHaW/k66qwtF05curz509OHHzvqBqWp232fE+2AoCjOXNMfhcRcjAxxoijNFNpbG0vL588cNzpLC4I00cnCD1fPBuVqffbA5DMGNjR5MOSBpC+UYxGE5G5PmNXff/vy4rdnTmRJHD1wG+9G42D9qVfeePLk/oONI8qv7+/2fbq11f53ZfnqhStLi6d3b67/cT/+vwAAAP//Xo5dwOtdLi4AAAAASUVORK5CYII="></a>
92
+ <a href="https://squidfunk.github.io/mkdocs-material/"><img alt="mkdocs-material" src="https://img.shields.io/badge/Material_for_MkDocs-526CFE?&logo=MaterialForMkDocs&logoColor=white&labelColor=grey"></a>
93
+ <a href="https://hatch.pypa.io"><img alt="Hatch project" class="off-glb" loading="lazy" src="https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg"></a>
88
94
  </td>
89
95
  </tr>
90
- <tr>
96
+ <tr style="vertical-align: middle;">
91
97
  <td>CI/CD</td>
92
98
  <td>
93
- <a href="https://github.com/erivlis/graphinate/actions/workflows/test.yml"><img alt="Tests" src="https://github.com/erivlis/graphinate/actions/workflows/test.yml/badge.svg?branch=master"></a>
99
+ <a href="https://github.com/erivlis/graphinate/actions/workflows/test.yml"><img alt="Test" src="https://github.com/erivlis/graphinate/actions/workflows/test.yml/badge.svg"></a>
100
+ <a href="https://github.com/erivlis/graphinate/actions/workflows/test-beta.yml"><img alt="Test (Beta)" src="https://github.com/erivlis/graphinate/actions/workflows/test-beta.yml/badge.svg"></a>
94
101
  <a href="https://github.com/erivlis/graphinate/actions/workflows/publish.yml"><img alt="Publish" src="https://github.com/erivlis/graphinate/actions/workflows/publish.yml/badge.svg"></a>
95
102
  <a href="https://github.com/erivlis/graphinate/actions/workflows/publish-docs.yaml"><img alt="Publish Docs" src="https://github.com/erivlis/graphinate/actions/workflows/publish-docs.yaml/badge.svg"></a>
96
103
  </td>
97
104
  </tr>
98
- <tr>
105
+ <tr style="vertical-align: middle;">
99
106
  <td>Scans</td>
100
107
  <td>
101
108
  <a href="https://codecov.io/gh/erivlis/graphinate"><img alt="Coverage" src="https://codecov.io/gh/erivlis/graphinate/graph/badge.svg?token=POODT8M9NV"/></a>
102
- <br>
103
109
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Quality Gate Status" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=alert_status"></a>
104
110
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Security Rating" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=security_rating"></a>
105
111
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Maintainability Rating" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=sqale_rating"></a>
106
112
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Reliability Rating" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=reliability_rating"></a>
107
- <br>
108
113
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Lines of Code" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=ncloc"></a>
109
114
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Vulnerabilities" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=vulnerabilities"></a>
110
115
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Bugs" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=bugs"></a>
111
- <br>
112
116
  <a href="https://app.codacy.com/gh/erivlis/graphinate/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img alt="Codacy Badge" src="https://app.codacy.com/project/badge/Grade/54b33c3f7313448f9471d01e2a06f037"></a>
113
117
  <a href="https://app.codacy.com/gh/erivlis/graphinate/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_coverage"><img alt="Codacy Coverage" src="https://app.codacy.com/project/badge/Coverage/54b33c3f7313448f9471d01e2a06f037"/></a>
114
118
  <a href="https://scrutinizer-ci.com/g/erivlis/graphinate"><img alt="Scrutinizer" src="https://scrutinizer-ci.com/g/erivlis/graphinate/badges/quality-score.png?b=main"></a>
115
- <!--a href="https://snyk.io/test/github/erivlis/graphinate"><img alt="Snyk" src="https://snyk.io/test/github/erivlis/Graphinate/badge.svg"></a -->
119
+ <a href="https://www.codefactor.io/repository/github/erivlis/graphinate"><img src="https://www.codefactor.io/repository/github/erivlis/graphinate/badge" alt="CodeFactor" /></a>
120
+ <a href="https://snyk.io/test/github/erivlis/graphinate"><img alt="Snyk" src="https://snyk.io/test/github/erivlis/Graphinate/badge.svg"></a>
116
121
  </td>
117
122
  </tr>
118
123
  </table>
@@ -123,14 +128,14 @@ Description-Content-Type: text/markdown
123
128
 
124
129
  ### What is Graphinate?
125
130
 
126
- **Graphinate** is a python library that aims to simplify the generation of Graph Data Structures from Data Sources.
131
+ **Graphinate** is a python library that can be used to generate Graph Data Structures from Data Sources.
127
132
 
128
- It can help create an efficient retrieval pipeline from a given data source, while also enabling the developer to easily
129
- map data payloads and hierarchies to a Graph.
133
+ It can help create an efficient retrieval pipeline from a given data source, while also enabling the developer to map
134
+ data payloads and hierarchies to a Graph.
130
135
 
131
- In addition, there are several modes of output to enable examination of the Graph, and it's content.
136
+ In addition, there are several modes of output to enable examination of the Graph and its content.
132
137
 
133
- **Graphinate** utilizes and builds upon the excellent [**_NetworkX_**](https://networkx.org/).
138
+ **Graphinate** uses and builds upon the excellent [**_NetworkX_**](https://networkx.org/).
134
139
 
135
140
  ### Links
136
141
 
@@ -158,29 +163,30 @@ pip install graphinate[server]
158
163
 
159
164
  ### Example
160
165
 
161
- ```python
166
+ ```python title="Octagonal Graph"
162
167
  import graphinate
163
168
 
164
169
  N: int = 8
165
170
 
166
- # Define GraphModel
167
- graph_model = graphinate.model(name="Octagonal Graph")
171
+ # Define a GraphModel
172
+ graph_model: graphinate.GraphModel = graphinate.model(name="Octagonal Graph")
168
173
 
169
174
 
170
- # Register edges supplier function
175
+ # Register in the Graph Model the edges' supplier function
171
176
  @graph_model.edge()
172
177
  def edge():
173
- for i in range(N - 1):
178
+ for i in range(N):
174
179
  yield {'source': i, 'target': i + 1}
175
- yield {'source': N - 1, 'target': 0}
180
+ yield {'source': N, 'target': 0}
176
181
 
177
182
 
183
+ # Choose builder and handler
184
+ builder, handler = graphinate.materializers.Materializers.NetworkX_with_edge_labels.value
185
+
178
186
  # Materialize the GraphModel
179
- graphinate.materialize(graph_model)
187
+ graphinate.materialize(graph_model, builder=builder, builder_output_handler=handler)
180
188
  ```
181
189
 
182
-
183
-
184
190
  #### `graphinate.model` function
185
191
 
186
192
  > [!NOTE]
@@ -191,7 +197,6 @@ graphinate.materialize(graph_model)
191
197
 
192
198
  > [!NOTE]
193
199
  > This function can be used to easily generate an output from a `GraphModel` instance.
194
- > By default, it will prompt the user to choose the output format, using a popup GUI dialog box.
195
200
 
196
201
  ## CLI
197
202
 
@@ -6,53 +6,58 @@
6
6
  <tr style="vertical-align: middle;">
7
7
  <td>Package</td>
8
8
  <td>
9
- <img alt="PyPI - version" src="https://img.shields.io/pypi/v/graphinate">
10
- <img alt="PyPI - Status" src="https://img.shields.io/pypi/status/graphinate">
11
- <img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/graphinate">
12
- <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dd/graphinate">
13
- <br>
9
+ <img alt="PyPI - version" src="https://img.shields.io/pypi/v/graphinate.svg?logo=pypi&logoColor=lightblue">
10
+ <img alt="PyPI - Status" src="https://img.shields.io/pypi/status/graphinate.svg?logo=pypi&logoColor=lightblue">
11
+ <img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/graphinate.svg?logo=python&label=Python&logoColor=lightblue">
12
+ <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dd/graphinate.svg?logo=pypi&logoColor=lightblue">
13
+ <img alt="Libraries.io SourceRank" src="https://img.shields.io/librariesio/sourcerank/pypi/Graphinate.svg?logo=Libraries.io&label=SourceRank">
14
+ </td>
15
+ </tr>
16
+ <tr style="vertical-align: middle;">
17
+ <td>Code</td>
18
+ <td>
14
19
  <img alt="GitHub" src="https://img.shields.io/github/license/erivlis/graphinate">
15
- <img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/erivlis/graphinate">
16
- <img alt="GitHub last commit (by committer)" src="https://img.shields.io/github/last-commit/erivlis/graphinate">
17
- <a href="https://github.com/erivlis/graphinate/graphs/contributors"><img alt="Contributors" src="https://img.shields.io/github/contributors/erivlis/graphinate.svg"></a>
20
+ <img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/erivlis/graphinate.svg?label=Size&logo=git">
21
+ <img alt="GitHub last commit (by committer)" src="https://img.shields.io/github/last-commit/erivlis/graphinate.svg?&logo=git">
22
+ <a href="https://github.com/erivlis/graphinate/graphs/contributors"><img alt="Contributors" src="https://img.shields.io/github/contributors/erivlis/graphinate.svg?&logo=git"></a>
18
23
  </td>
19
24
  </tr>
20
- <tr>
25
+ <tr style="vertical-align: middle;">
21
26
  <td>Tools</td>
22
27
  <td>
23
28
  <a href="https://www.jetbrains.com/pycharm/"><img alt="PyCharm" src="https://img.shields.io/badge/PyCharm-FCF84A.svg?logo=PyCharm&logoColor=black&labelColor=21D789&color=FCF84A"></a>
24
- <a href="https://github.com/astral-sh/ruff"><img alt="ruff" src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" style="max-width:100%;"></a>
25
29
  <a href="https://github.com/astral-sh/uv"><img alt="uv" src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json" style="max-width:100%;"></a>
26
- <a href="https://squidfunk.github.io/mkdocs-material/"><img alt="mkdocs-material" src="https://img.shields.io/badge/Material_for_MkDocs-526CFE?&logo=MaterialForMkDocs&logoColor=white&labelColor=grey"></a>
30
+ <a href="https://github.com/astral-sh/ruff"><img alt="ruff" src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" style="max-width:100%;"></a>
27
31
  <a href="https://github.com/tox-dev/pipdeptree"><img alt="pipdeptree" src="https://img.shields.io/badge/pipdeptree-526CFE.svg?labelColor=gray&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADFElEQVR4nFxTW2tcVRRe39773E/mliZjwKRmhBaKt4BWRKmGgihCH3xUKNWC/Q/ii76IP8AHpSIiRfqmD5YKCinalhgiCMZLSVtMM0mTdDLTuZyZc9l7yTlp7WXBgXPW+fa31rfWtxU9FLMN79Crr028e+iJsZfb7fJMp23xRlOvbTR3L/y5cuOL3Vbv7/vxuPviecI/eWr6k/mj4+8AkM11y+zs2MKwMJvNgIgYINZX/rlx+tIvf72fZXr4P0EQyOCjjw98P9vwn8+/+z3Bq6sek7AJkNhsOjQcyjvFmHd2upd+PP/zsSxNI5mnPvjw8U9fPFJ9XVkgNuDVayEbcgVEfgikNfFg4JAmh1LyyfGq06QqE9vN6+fEs4fHnjv25vjbAOA4AsL2MVZ1hRcI4QXIH7ilMqQXkiYXRBJRbFNQnTsRlqfmxFvH66ccFyAQMxP3I5cqNZBSxIWcKORMO9g3yeSHzFkGbnVCIkDUZ+beEy+8VJ4XguC6TMPYokwrCAHUJsBxYptoFBYSMi0oLIlcAkuFYhal8Zl5VanZU0zErgfurufMFjEkWZ7iRFY4SlgYfW9bUIJKFQNjiNPYf1QZOZn/hTaStPQKTI4eDCxSjsL4I6BeJzOjgcnT0HqPqwBJCdHZjW/miWjkkG3hzqKIe5FVlM3llGuWqOxTDMBkWlJ/6PB2p0Sb21gXixdvLeTtDGOHLFvQHpkiYyTuNU5kuxJercTdpEK3Bz4yLdFrXVsQ33x1/bModjhvyrKKVXB/YD9gb8PgKAlolAZipmFTOIYcxq21Xz8XS5dbi+e+2zqbA3MjxYninH3PpkyZljwYjZE2FoxBIWm6YVHaW/k66qwtF05curz509OHHzvqBqWp232fE+2AoCjOXNMfhcRcjAxxoijNFNpbG0vL588cNzpLC4I00cnCD1fPBuVqffbA5DMGNjR5MOSBpC+UYxGE5G5PmNXff/vy4rdnTmRJHD1wG+9G42D9qVfeePLk/oONI8qv7+/2fbq11f53ZfnqhStLi6d3b67/cT/+vwAAAP//Xo5dwOtdLi4AAAAASUVORK5CYII="></a>
32
+ <a href="https://squidfunk.github.io/mkdocs-material/"><img alt="mkdocs-material" src="https://img.shields.io/badge/Material_for_MkDocs-526CFE?&logo=MaterialForMkDocs&logoColor=white&labelColor=grey"></a>
33
+ <a href="https://hatch.pypa.io"><img alt="Hatch project" class="off-glb" loading="lazy" src="https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg"></a>
28
34
  </td>
29
35
  </tr>
30
- <tr>
36
+ <tr style="vertical-align: middle;">
31
37
  <td>CI/CD</td>
32
38
  <td>
33
- <a href="https://github.com/erivlis/graphinate/actions/workflows/test.yml"><img alt="Tests" src="https://github.com/erivlis/graphinate/actions/workflows/test.yml/badge.svg?branch=master"></a>
39
+ <a href="https://github.com/erivlis/graphinate/actions/workflows/test.yml"><img alt="Test" src="https://github.com/erivlis/graphinate/actions/workflows/test.yml/badge.svg"></a>
40
+ <a href="https://github.com/erivlis/graphinate/actions/workflows/test-beta.yml"><img alt="Test (Beta)" src="https://github.com/erivlis/graphinate/actions/workflows/test-beta.yml/badge.svg"></a>
34
41
  <a href="https://github.com/erivlis/graphinate/actions/workflows/publish.yml"><img alt="Publish" src="https://github.com/erivlis/graphinate/actions/workflows/publish.yml/badge.svg"></a>
35
42
  <a href="https://github.com/erivlis/graphinate/actions/workflows/publish-docs.yaml"><img alt="Publish Docs" src="https://github.com/erivlis/graphinate/actions/workflows/publish-docs.yaml/badge.svg"></a>
36
43
  </td>
37
44
  </tr>
38
- <tr>
45
+ <tr style="vertical-align: middle;">
39
46
  <td>Scans</td>
40
47
  <td>
41
48
  <a href="https://codecov.io/gh/erivlis/graphinate"><img alt="Coverage" src="https://codecov.io/gh/erivlis/graphinate/graph/badge.svg?token=POODT8M9NV"/></a>
42
- <br>
43
49
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Quality Gate Status" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=alert_status"></a>
44
50
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Security Rating" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=security_rating"></a>
45
51
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Maintainability Rating" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=sqale_rating"></a>
46
52
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Reliability Rating" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=reliability_rating"></a>
47
- <br>
48
53
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Lines of Code" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=ncloc"></a>
49
54
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Vulnerabilities" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=vulnerabilities"></a>
50
55
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Bugs" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=bugs"></a>
51
- <br>
52
56
  <a href="https://app.codacy.com/gh/erivlis/graphinate/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img alt="Codacy Badge" src="https://app.codacy.com/project/badge/Grade/54b33c3f7313448f9471d01e2a06f037"></a>
53
57
  <a href="https://app.codacy.com/gh/erivlis/graphinate/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_coverage"><img alt="Codacy Coverage" src="https://app.codacy.com/project/badge/Coverage/54b33c3f7313448f9471d01e2a06f037"/></a>
54
58
  <a href="https://scrutinizer-ci.com/g/erivlis/graphinate"><img alt="Scrutinizer" src="https://scrutinizer-ci.com/g/erivlis/graphinate/badges/quality-score.png?b=main"></a>
55
- <!--a href="https://snyk.io/test/github/erivlis/graphinate"><img alt="Snyk" src="https://snyk.io/test/github/erivlis/Graphinate/badge.svg"></a -->
59
+ <a href="https://www.codefactor.io/repository/github/erivlis/graphinate"><img src="https://www.codefactor.io/repository/github/erivlis/graphinate/badge" alt="CodeFactor" /></a>
60
+ <a href="https://snyk.io/test/github/erivlis/graphinate"><img alt="Snyk" src="https://snyk.io/test/github/erivlis/Graphinate/badge.svg"></a>
56
61
  </td>
57
62
  </tr>
58
63
  </table>
@@ -63,14 +68,14 @@
63
68
 
64
69
  ### What is Graphinate?
65
70
 
66
- **Graphinate** is a python library that aims to simplify the generation of Graph Data Structures from Data Sources.
71
+ **Graphinate** is a python library that can be used to generate Graph Data Structures from Data Sources.
67
72
 
68
- It can help create an efficient retrieval pipeline from a given data source, while also enabling the developer to easily
69
- map data payloads and hierarchies to a Graph.
73
+ It can help create an efficient retrieval pipeline from a given data source, while also enabling the developer to map
74
+ data payloads and hierarchies to a Graph.
70
75
 
71
- In addition, there are several modes of output to enable examination of the Graph, and it's content.
76
+ In addition, there are several modes of output to enable examination of the Graph and its content.
72
77
 
73
- **Graphinate** utilizes and builds upon the excellent [**_NetworkX_**](https://networkx.org/).
78
+ **Graphinate** uses and builds upon the excellent [**_NetworkX_**](https://networkx.org/).
74
79
 
75
80
  ### Links
76
81
 
@@ -98,29 +103,30 @@ pip install graphinate[server]
98
103
 
99
104
  ### Example
100
105
 
101
- ```python
106
+ ```python title="Octagonal Graph"
102
107
  import graphinate
103
108
 
104
109
  N: int = 8
105
110
 
106
- # Define GraphModel
107
- graph_model = graphinate.model(name="Octagonal Graph")
111
+ # Define a GraphModel
112
+ graph_model: graphinate.GraphModel = graphinate.model(name="Octagonal Graph")
108
113
 
109
114
 
110
- # Register edges supplier function
115
+ # Register in the Graph Model the edges' supplier function
111
116
  @graph_model.edge()
112
117
  def edge():
113
- for i in range(N - 1):
118
+ for i in range(N):
114
119
  yield {'source': i, 'target': i + 1}
115
- yield {'source': N - 1, 'target': 0}
120
+ yield {'source': N, 'target': 0}
116
121
 
117
122
 
123
+ # Choose builder and handler
124
+ builder, handler = graphinate.materializers.Materializers.NetworkX_with_edge_labels.value
125
+
118
126
  # Materialize the GraphModel
119
- graphinate.materialize(graph_model)
127
+ graphinate.materialize(graph_model, builder=builder, builder_output_handler=handler)
120
128
  ```
121
129
 
122
-
123
-
124
130
  #### `graphinate.model` function
125
131
 
126
132
  > [!NOTE]
@@ -131,7 +137,6 @@ graphinate.materialize(graph_model)
131
137
 
132
138
  > [!NOTE]
133
139
  > This function can be used to easily generate an output from a `GraphModel` instance.
134
- > By default, it will prompt the user to choose the output format, using a popup GUI dialog box.
135
140
 
136
141
  ## CLI
137
142
 
@@ -0,0 +1,64 @@
1
+ /* extra.css */
2
+
3
+ /*
4
+ :root {
5
+ --md-primary-fg-color: #E3963E;
6
+ --md-primary-fg-color--dark: #FFBF00;
7
+ --md-primary-fg-color--light: #EBA937;
8
+ }
9
+ */
10
+
11
+ :root {
12
+ --md-primary-fg-color: rebeccapurple;
13
+ --md-primary-fg-color--dark: midnight;
14
+ --md-primary-fg-color--light: silver;
15
+ }
16
+
17
+
18
+ /* Title levels */
19
+ h1 {
20
+ color: royalblue;
21
+ }
22
+
23
+ h2 {
24
+ color: slateblue;
25
+ }
26
+
27
+ h3 {
28
+ color: mediumslateblue;
29
+ }
30
+
31
+ h4, h5, h6 {
32
+ color: steelblue;
33
+ }
34
+
35
+ /* Blockquotes */
36
+ /*blockquote {*/
37
+ /* border-left: 4px solid #bdc3c7; !* Light gray *!*/
38
+ /* color: #7f8c8d; !* Gray *!*/
39
+ /* !*background-color: #ecf0f1; !* Very light gray *!*!*/
40
+ /* padding: 10px;*/
41
+ /*}*/
42
+
43
+ /* Code blocks */
44
+ /*pre, code {*/
45
+ /* background-color: #f8f9fa; !* Very light gray *!*/
46
+ /* color: #2c3e50; !* Dark blue *!*/
47
+ /*}*/
48
+
49
+ /* Tables */
50
+ /*table {*/
51
+ /* border-collapse: collapse;*/
52
+ /* width: 100%;*/
53
+ /*}*/
54
+
55
+ /*th, td {*/
56
+ /* border: 1px solid #bdc3c7; !* Light gray *!*/
57
+ /* padding: 8px;*/
58
+ /* text-align: left;*/
59
+ /*}*/
60
+
61
+ /*th {*/
62
+ /* background-color: #ecf0f1; !* Very light gray *!*/
63
+ /* color: #2c3e50; !* Dark blue *!*/
64
+ /*}*/
@@ -3,42 +3,35 @@
3
3
  ## Repositories
4
4
 
5
5
  === "Repositories"
6
-
7
6
  ``` python title="examples/github/repositories.py" linenums="1"
8
7
  --8<-- "examples/github/repositories.py"
9
8
  ```
10
9
 
11
10
  === "Dependencies"
12
-
13
11
  ``` text title="examples/github/requirements.txt" linenums="1"
14
12
  --8<-- "examples/github/requirements.txt"
15
13
  ```
16
14
 
17
-
18
15
  ``` python title="examples/github/_client.py" linenums="1"
19
16
  --8<-- "examples/github/_client.py"
20
17
  ```
21
18
 
22
19
  === "Plot"
23
-
24
20
  ![repo_graph](https://github.com/erivlis/graphinate/assets/9897520/9c044bbe-1f21-41b8-b879-95b8362ad48d)
25
21
 
26
22
 
27
23
  ## Followers
28
24
 
29
25
  === "Followers"
30
-
31
26
  ``` python title="examples/github/followers.py" linenums="1"
32
27
  --8<-- "examples/github/followers.py"
33
28
  ```
34
29
 
35
30
  === "Dependencies"
36
-
37
31
  ``` text title="examples/github/requirements.txt" linenums="1"
38
32
  --8<-- "examples/github/requirements.txt"
39
33
  ```
40
34
 
41
-
42
35
  ``` python title="examples/github/_client.py" linenums="1"
43
36
  --8<-- "examples/github/_client.py"
44
37
  ```
@@ -0,0 +1,29 @@
1
+ # Math
2
+
3
+ ## Graph Atlas
4
+
5
+ === "Graph Atlas"
6
+ ``` python title="examples/math/graph_atlas.py" linenums="1"
7
+ --8<-- "examples/math/graph_atlas.py"
8
+ ```
9
+
10
+ === "Dependencies"
11
+ ``` text title="examples/math/requirements.txt" linenums="1"
12
+ --8<-- "examples/math/requirements.txt"
13
+ ```
14
+
15
+ ``` python title="examples/math/graph.py" linenums="1"
16
+ --8<-- "examples/math/graphs.py"
17
+ ```
18
+
19
+ ## Polygonal Graph
20
+
21
+ === "Polygonal Graph"
22
+ ``` python title="examples/math/polygonal_graph.py" linenums="1"
23
+ --8<-- "examples/math/polygonal_graph.py"
24
+ ```
25
+
26
+ === "Dependencies"
27
+ ``` text title="examples/math/requirements.txt" linenums="1"
28
+ --8<-- "examples/math/requirements.txt"
29
+ ```
@@ -2,55 +2,61 @@
2
2
 
3
3
  <table style="border-width: 0;">
4
4
  <tr style="vertical-align: middle; border-width: 0;">
5
- <td rowspan="4"><img height="240" src="https://github.com/erivlis/graphinate/assets/9897520/dae41f9f-69e5-4eb5-a488-87ce7f51fa32" alt="Graphinate. Data to Graphs."></td>
5
+ <td rowspan="5"><img height="240" src="https://github.com/erivlis/graphinate/assets/9897520/dae41f9f-69e5-4eb5-a488-87ce7f51fa32" alt="Graphinate. Data to Graphs."></td>
6
6
  <td>Package</td>
7
7
  <td>
8
- <img alt="PyPI - version" src="https://img.shields.io/pypi/v/graphinate">
9
- <img alt="PyPI - Status" src="https://img.shields.io/pypi/status/graphinate">
10
- <img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/graphinate">
11
- <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dd/graphinate">
12
- <br>
8
+ <img alt="PyPI - version" src="https://img.shields.io/pypi/v/graphinate.svg?logo=pypi&logoColor=lightblue">
9
+ <img alt="PyPI - Status" src="https://img.shields.io/pypi/status/graphinate.svg?logo=pypi&logoColor=lightblue">
10
+ <img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/graphinate.svg?logo=python&label=Python&logoColor=lightblue">
11
+ <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dd/graphinate.svg?logo=pypi&logoColor=lightblue">
12
+ <img alt="Libraries.io SourceRank" src="https://img.shields.io/librariesio/sourcerank/pypi/Graphinate.svg?logo=Libraries.io&label=SourceRank">
13
+ </td>
14
+ </tr>
15
+ <tr style="vertical-align: middle;">
16
+ <td>Code</td>
17
+ <td>
13
18
  <img alt="GitHub" src="https://img.shields.io/github/license/erivlis/graphinate">
14
- <img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/erivlis/graphinate">
15
- <img alt="GitHub last commit (by committer)" src="https://img.shields.io/github/last-commit/erivlis/graphinate">
16
- <a href="https://github.com/erivlis/graphinate/graphs/contributors"><img alt="Contributors" src="https://img.shields.io/github/contributors/erivlis/graphinate.svg"></a>
17
- <img alt="GitHub Watchers" src="https://img.shields.io/github/watchers/erivlis/graphinate.svg">
19
+ <img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/erivlis/graphinate.svg?label=Size&logo=git">
20
+ <img alt="GitHub last commit (by committer)" src="https://img.shields.io/github/last-commit/erivlis/graphinate.svg?&logo=git">
21
+ <a href="https://github.com/erivlis/graphinate/graphs/contributors"><img alt="Contributors" src="https://img.shields.io/github/contributors/erivlis/graphinate.svg?&logo=git"></a>
18
22
  </td>
19
23
  </tr>
20
- <tr style="vertical-align: middle; border-width: 0;">
24
+ <tr style="vertical-align: middle;">
21
25
  <td>Tools</td>
22
26
  <td>
23
27
  <a href="https://www.jetbrains.com/pycharm/"><img alt="PyCharm" src="https://img.shields.io/badge/PyCharm-FCF84A.svg?logo=PyCharm&logoColor=black&labelColor=21D789&color=FCF84A"></a>
24
- <a href="https://github.com/astral-sh/ruff"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff" style="max-width:100%;"></a>
25
- <a href="https://github.com/astral-sh/uv"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json" alt="uv" style="max-width:100%;"></a>
26
- <a href="https://github.com/tox-dev/pipdeptree"><img src="https://img.shields.io/badge/pipdeptree-526CFE.svg?labelColor=gray&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADFElEQVR4nFxTW2tcVRRe39773E/mliZjwKRmhBaKt4BWRKmGgihCH3xUKNWC/Q/ii76IP8AHpSIiRfqmD5YKCinalhgiCMZLSVtMM0mTdDLTuZyZc9l7yTlp7WXBgXPW+fa31rfWtxU9FLMN79Crr028e+iJsZfb7fJMp23xRlOvbTR3L/y5cuOL3Vbv7/vxuPviecI/eWr6k/mj4+8AkM11y+zs2MKwMJvNgIgYINZX/rlx+tIvf72fZXr4P0EQyOCjjw98P9vwn8+/+z3Bq6sek7AJkNhsOjQcyjvFmHd2upd+PP/zsSxNI5mnPvjw8U9fPFJ9XVkgNuDVayEbcgVEfgikNfFg4JAmh1LyyfGq06QqE9vN6+fEs4fHnjv25vjbAOA4AsL2MVZ1hRcI4QXIH7ilMqQXkiYXRBJRbFNQnTsRlqfmxFvH66ccFyAQMxP3I5cqNZBSxIWcKORMO9g3yeSHzFkGbnVCIkDUZ+beEy+8VJ4XguC6TMPYokwrCAHUJsBxYptoFBYSMi0oLIlcAkuFYhal8Zl5VanZU0zErgfurufMFjEkWZ7iRFY4SlgYfW9bUIJKFQNjiNPYf1QZOZn/hTaStPQKTI4eDCxSjsL4I6BeJzOjgcnT0HqPqwBJCdHZjW/miWjkkG3hzqKIe5FVlM3llGuWqOxTDMBkWlJ/6PB2p0Sb21gXixdvLeTtDGOHLFvQHpkiYyTuNU5kuxJercTdpEK3Bz4yLdFrXVsQ33x1/bModjhvyrKKVXB/YD9gb8PgKAlolAZipmFTOIYcxq21Xz8XS5dbi+e+2zqbA3MjxYninH3PpkyZljwYjZE2FoxBIWm6YVHaW/k66qwtF05curz509OHHzvqBqWp232fE+2AoCjOXNMfhcRcjAxxoijNFNpbG0vL588cNzpLC4I00cnCD1fPBuVqffbA5DMGNjR5MOSBpC+UYxGE5G5PmNXff/vy4rdnTmRJHD1wG+9G42D9qVfeePLk/oONI8qv7+/2fbq11f53ZfnqhStLi6d3b67/cT/+vwAAAP//Xo5dwOtdLi4AAAAASUVORK5CYII="></a>
28
+ <a href="https://github.com/astral-sh/uv"><img alt="uv" src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json" style="max-width:100%;"></a>
29
+ <a href="https://github.com/astral-sh/ruff"><img alt="ruff" src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" style="max-width:100%;"></a>
30
+ <a href="https://github.com/tox-dev/pipdeptree"><img alt="pipdeptree" src="https://img.shields.io/badge/pipdeptree-526CFE.svg?labelColor=gray&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADFElEQVR4nFxTW2tcVRRe39773E/mliZjwKRmhBaKt4BWRKmGgihCH3xUKNWC/Q/ii76IP8AHpSIiRfqmD5YKCinalhgiCMZLSVtMM0mTdDLTuZyZc9l7yTlp7WXBgXPW+fa31rfWtxU9FLMN79Crr028e+iJsZfb7fJMp23xRlOvbTR3L/y5cuOL3Vbv7/vxuPviecI/eWr6k/mj4+8AkM11y+zs2MKwMJvNgIgYINZX/rlx+tIvf72fZXr4P0EQyOCjjw98P9vwn8+/+z3Bq6sek7AJkNhsOjQcyjvFmHd2upd+PP/zsSxNI5mnPvjw8U9fPFJ9XVkgNuDVayEbcgVEfgikNfFg4JAmh1LyyfGq06QqE9vN6+fEs4fHnjv25vjbAOA4AsL2MVZ1hRcI4QXIH7ilMqQXkiYXRBJRbFNQnTsRlqfmxFvH66ccFyAQMxP3I5cqNZBSxIWcKORMO9g3yeSHzFkGbnVCIkDUZ+beEy+8VJ4XguC6TMPYokwrCAHUJsBxYptoFBYSMi0oLIlcAkuFYhal8Zl5VanZU0zErgfurufMFjEkWZ7iRFY4SlgYfW9bUIJKFQNjiNPYf1QZOZn/hTaStPQKTI4eDCxSjsL4I6BeJzOjgcnT0HqPqwBJCdHZjW/miWjkkG3hzqKIe5FVlM3llGuWqOxTDMBkWlJ/6PB2p0Sb21gXixdvLeTtDGOHLFvQHpkiYyTuNU5kuxJercTdpEK3Bz4yLdFrXVsQ33x1/bModjhvyrKKVXB/YD9gb8PgKAlolAZipmFTOIYcxq21Xz8XS5dbi+e+2zqbA3MjxYninH3PpkyZljwYjZE2FoxBIWm6YVHaW/k66qwtF05curz509OHHzvqBqWp232fE+2AoCjOXNMfhcRcjAxxoijNFNpbG0vL588cNzpLC4I00cnCD1fPBuVqffbA5DMGNjR5MOSBpC+UYxGE5G5PmNXff/vy4rdnTmRJHD1wG+9G42D9qVfeePLk/oONI8qv7+/2fbq11f53ZfnqhStLi6d3b67/cT/+vwAAAP//Xo5dwOtdLi4AAAAASUVORK5CYII="></a>
31
+ <a href="https://squidfunk.github.io/mkdocs-material/"><img alt="mkdocs-material" src="https://img.shields.io/badge/Material_for_MkDocs-526CFE?&logo=MaterialForMkDocs&logoColor=white&labelColor=grey"></a>
32
+ <a href="https://hatch.pypa.io"><img alt="Hatch project" class="off-glb" loading="lazy" src="https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg"></a>
27
33
  </td>
28
34
  </tr>
29
- <tr style="vertical-align: middle; border-width: 0;">
35
+ <tr style="vertical-align: middle;">
30
36
  <td>CI/CD</td>
31
37
  <td>
32
38
  <a href="https://github.com/erivlis/graphinate/actions/workflows/test.yml"><img alt="Tests" src="https://github.com/erivlis/graphinate/actions/workflows/test.yml/badge.svg?branch=master"></a>
39
+ <a href="https://github.com/erivlis/graphinate/actions/workflows/test.yml"><img alt="Tests" src="https://github.com/erivlis/graphinate/actions/workflows/test-beta.yml/badge.svg?branch=master"></a>
33
40
  <a href="https://github.com/erivlis/graphinate/actions/workflows/publish.yml"><img alt="Publish" src="https://github.com/erivlis/graphinate/actions/workflows/publish.yml/badge.svg"></a>
34
41
  <a href="https://github.com/erivlis/graphinate/actions/workflows/publish-docs.yaml"><img alt="Publish Docs" src="https://github.com/erivlis/graphinate/actions/workflows/publish-docs.yaml/badge.svg"></a>
35
42
  </td>
36
43
  </tr>
37
- <tr style="vertical-align: middle; border-width: 0;">
44
+ <tr style="vertical-align: middle;">
38
45
  <td>Scans</td>
39
46
  <td>
40
47
  <a href="https://codecov.io/gh/erivlis/graphinate"><img alt="Coverage" src="https://codecov.io/gh/erivlis/graphinate/graph/badge.svg?token=POODT8M9NV"/></a>
41
- <br>
42
48
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Quality Gate Status" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=alert_status"></a>
43
49
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Security Rating" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=security_rating"></a>
44
50
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Maintainability Rating" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=sqale_rating"></a>
45
51
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Reliability Rating" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=reliability_rating"></a>
46
- <br>
47
52
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Lines of Code" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=ncloc"></a>
48
53
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Vulnerabilities" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=vulnerabilities"></a>
49
54
  <a href="https://sonarcloud.io/summary/new_code?id=erivlis_graphinate"><img alt="Bugs" src="https://sonarcloud.io/api/project_badges/measure?project=erivlis_graphinate&metric=bugs"></a>
50
- <br>
51
55
  <a href="https://app.codacy.com/gh/erivlis/graphinate/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img alt="Codacy Badge" src="https://app.codacy.com/project/badge/Grade/54b33c3f7313448f9471d01e2a06f037"></a>
52
56
  <a href="https://app.codacy.com/gh/erivlis/graphinate/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_coverage"><img alt="Codacy Coverage" src="https://app.codacy.com/project/badge/Coverage/54b33c3f7313448f9471d01e2a06f037"/></a>
53
57
  <a href="https://scrutinizer-ci.com/g/erivlis/graphinate"><img alt="Scrutinizer" src="https://scrutinizer-ci.com/g/erivlis/graphinate/badges/quality-score.png?b=main"></a>
58
+ <a href="https://www.codefactor.io/repository/github/erivlis/graphinate"><img src="https://www.codefactor.io/repository/github/erivlis/graphinate/badge" alt="CodeFactor" /></a>
59
+ <a href="https://snyk.io/test/github/erivlis/graphinate"><img alt="Snyk" src="https://snyk.io/test/github/erivlis/Graphinate/badge.svg"></a>
54
60
  </td>
55
61
  </tr>
56
62
  </table>