Graphinate 0.3.0__tar.gz → 0.3.1__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 (96) hide show
  1. {graphinate-0.3.0 → graphinate-0.3.1}/.github/workflows/test-beta.yml +2 -1
  2. {graphinate-0.3.0 → graphinate-0.3.1}/.github/workflows/test.yml +10 -1
  3. {graphinate-0.3.0 → graphinate-0.3.1}/.gitignore +1 -0
  4. {graphinate-0.3.0 → graphinate-0.3.1}/PKG-INFO +22 -14
  5. {graphinate-0.3.0 → graphinate-0.3.1}/README.md +20 -13
  6. {graphinate-0.3.0 → graphinate-0.3.1}/STATS.md +7 -1
  7. {graphinate-0.3.0 → graphinate-0.3.1}/docs/acknowledge.md +1 -1
  8. {graphinate-0.3.0 → graphinate-0.3.1}/docs/index.md +1 -0
  9. {graphinate-0.3.0 → graphinate-0.3.1}/examples/math/polygonal_graph.py +11 -8
  10. {graphinate-0.3.0 → graphinate-0.3.1}/examples/web/requirements.txt +2 -1
  11. {graphinate-0.3.0 → graphinate-0.3.1}/pyproject.toml +2 -1
  12. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/builders.py +4 -4
  13. {graphinate-0.3.0 → graphinate-0.3.1}/.coveragerc +0 -0
  14. {graphinate-0.3.0 → graphinate-0.3.1}/.github/dependabot.yml +0 -0
  15. {graphinate-0.3.0 → graphinate-0.3.1}/.github/workflows/codeql.yml +0 -0
  16. {graphinate-0.3.0 → graphinate-0.3.1}/.github/workflows/publish-docs.yaml +0 -0
  17. {graphinate-0.3.0 → graphinate-0.3.1}/.github/workflows/publish.yml +0 -0
  18. {graphinate-0.3.0 → graphinate-0.3.1}/LICENSE +0 -0
  19. {graphinate-0.3.0 → graphinate-0.3.1}/docs/assets/images/logo-128.png +0 -0
  20. {graphinate-0.3.0 → graphinate-0.3.1}/docs/assets/images/network_graph.png +0 -0
  21. {graphinate-0.3.0 → graphinate-0.3.1}/docs/assets/stylesheets/extra.css +0 -0
  22. {graphinate-0.3.0 → graphinate-0.3.1}/docs/dev.md +0 -0
  23. {graphinate-0.3.0 → graphinate-0.3.1}/docs/examples/code.md +0 -0
  24. {graphinate-0.3.0 → graphinate-0.3.1}/docs/examples/github.md +0 -0
  25. {graphinate-0.3.0 → graphinate-0.3.1}/docs/examples/math.md +0 -0
  26. {graphinate-0.3.0 → graphinate-0.3.1}/docs/examples/system.md +0 -0
  27. {graphinate-0.3.0 → graphinate-0.3.1}/docs/examples/web.md +0 -0
  28. {graphinate-0.3.0 → graphinate-0.3.1}/docs/gen_ref_pages.py +0 -0
  29. {graphinate-0.3.0 → graphinate-0.3.1}/docs/intro.md +0 -0
  30. {graphinate-0.3.0 → graphinate-0.3.1}/docs/start.md +0 -0
  31. {graphinate-0.3.0 → graphinate-0.3.1}/docs/usage/cli.md +0 -0
  32. {graphinate-0.3.0 → graphinate-0.3.1}/docs/usage/lib.md +0 -0
  33. {graphinate-0.3.0 → graphinate-0.3.1}/examples/code/python_ast.py +0 -0
  34. {graphinate-0.3.0 → graphinate-0.3.1}/examples/code/python_dependencies.py +0 -0
  35. {graphinate-0.3.0 → graphinate-0.3.1}/examples/code/requirements.txt +0 -0
  36. {graphinate-0.3.0 → graphinate-0.3.1}/examples/github/_client.py +0 -0
  37. {graphinate-0.3.0 → graphinate-0.3.1}/examples/github/commits_visibilty_graph.py +0 -0
  38. {graphinate-0.3.0 → graphinate-0.3.1}/examples/github/followers.graphql +0 -0
  39. {graphinate-0.3.0 → graphinate-0.3.1}/examples/github/followers.py +0 -0
  40. {graphinate-0.3.0 → graphinate-0.3.1}/examples/github/graphql.config.yml +0 -0
  41. {graphinate-0.3.0 → graphinate-0.3.1}/examples/github/repositories.graphql +0 -0
  42. {graphinate-0.3.0 → graphinate-0.3.1}/examples/github/repositories.py +0 -0
  43. {graphinate-0.3.0 → graphinate-0.3.1}/examples/github/requirements.txt +0 -0
  44. {graphinate-0.3.0 → graphinate-0.3.1}/examples/math/graph_atlas.py +0 -0
  45. {graphinate-0.3.0 → graphinate-0.3.1}/examples/math/requirements.txt +0 -0
  46. {graphinate-0.3.0 → graphinate-0.3.1}/examples/system/processes.py +0 -0
  47. {graphinate-0.3.0 → graphinate-0.3.1}/examples/system/requirements.txt +0 -0
  48. {graphinate-0.3.0 → graphinate-0.3.1}/examples/web/page_links.py +0 -0
  49. {graphinate-0.3.0 → graphinate-0.3.1}/mkdocs.yml +0 -0
  50. {graphinate-0.3.0 → graphinate-0.3.1}/playground/ethernet/traceroute.py +0 -0
  51. {graphinate-0.3.0 → graphinate-0.3.1}/playground/genric_graph.graphql +0 -0
  52. {graphinate-0.3.0 → graphinate-0.3.1}/playground/graphql.config.yml +0 -0
  53. {graphinate-0.3.0 → graphinate-0.3.1}/playground/house_of_graphs.py +0 -0
  54. {graphinate-0.3.0 → graphinate-0.3.1}/playground/social/albums.json +0 -0
  55. {graphinate-0.3.0 → graphinate-0.3.1}/playground/social/musicisians.py +0 -0
  56. {graphinate-0.3.0 → graphinate-0.3.1}/playground/text/nlp_graph.py +0 -0
  57. {graphinate-0.3.0 → graphinate-0.3.1}/playground/text/requirements.txt +0 -0
  58. {graphinate-0.3.0 → graphinate-0.3.1}/playground/time_series/requirements.txt +0 -0
  59. {graphinate-0.3.0 → graphinate-0.3.1}/playground/time_series/visibility_graph.py +0 -0
  60. {graphinate-0.3.0 → graphinate-0.3.1}/sonar-project.properties +0 -0
  61. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/__init__.py +0 -0
  62. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/__main__.py +0 -0
  63. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/cli.py +0 -0
  64. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/color.py +0 -0
  65. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/materializers/__init__.py +0 -0
  66. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/materializers/matplotlib.py +0 -0
  67. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/modeling.py +0 -0
  68. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/__init__.py +0 -0
  69. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/starlette/__init__.py +0 -0
  70. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/starlette/views.py +0 -0
  71. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/__init__.py +0 -0
  72. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/elements/__init__.py +0 -0
  73. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/elements/index.html +0 -0
  74. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/graphiql/__init__.py +0 -0
  75. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/graphiql/index.html +0 -0
  76. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/rapidoc/__init__.py +0 -0
  77. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/rapidoc/index.html +0 -0
  78. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/static/images/logo-128.png +0 -0
  79. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/static/images/network_graph.png +0 -0
  80. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/viewer/__init__.py +0 -0
  81. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/viewer/index.html +0 -0
  82. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/voyager/__init__.py +0 -0
  83. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/server/web/voyager/index.html +0 -0
  84. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/tools/__init__.py +0 -0
  85. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/tools/converters.py +0 -0
  86. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/tools/gui.py +0 -0
  87. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/tools/mutators.py +0 -0
  88. {graphinate-0.3.0 → graphinate-0.3.1}/src/graphinate/typing.py +0 -0
  89. {graphinate-0.3.0 → graphinate-0.3.1}/tests/conftest.py +0 -0
  90. {graphinate-0.3.0 → graphinate-0.3.1}/tests/graphinate/test_builders.py +0 -0
  91. {graphinate-0.3.0 → graphinate-0.3.1}/tests/graphinate/test_cli.py +0 -0
  92. {graphinate-0.3.0 → graphinate-0.3.1}/tests/graphinate/test_color.py +0 -0
  93. {graphinate-0.3.0 → graphinate-0.3.1}/tests/graphinate/test_materializers.py +0 -0
  94. {graphinate-0.3.0 → graphinate-0.3.1}/tests/graphinate/test_modeling.py +0 -0
  95. {graphinate-0.3.0 → graphinate-0.3.1}/tests/graphinate/test_server.py +0 -0
  96. {graphinate-0.3.0 → graphinate-0.3.1}/tests/graphinate/test_tools.py +0 -0
@@ -15,7 +15,8 @@ jobs:
15
15
  strategy:
16
16
  fail-fast: false
17
17
  matrix:
18
- python-version: [ "3.13.0a1" ]
18
+ # https://github.com/actions/python-versions/blob/main/versions-manifest.json
19
+ python-version: [ "3.14.0-alpha.1" ]
19
20
  steps:
20
21
  - uses: actions/checkout@v4
21
22
  - name: Set up Python ${{ matrix.python-version }}
@@ -15,7 +15,7 @@ jobs:
15
15
  strategy:
16
16
  fail-fast: false
17
17
  matrix:
18
- python-version: [ "3.10", "3.11", "3.12" ]
18
+ python-version: [ "3.10", "3.11", "3.12", "3.13"]
19
19
  steps:
20
20
  - uses: actions/checkout@v4
21
21
  - name: Set up Python ${{ matrix.python-version }}
@@ -43,3 +43,12 @@ jobs:
43
43
  uses: codecov/codecov-action@v4
44
44
  with:
45
45
  token: ${{ secrets.CODECOV_TOKEN }}
46
+ - name: Run codacy-coverage-reporter
47
+ uses: codacy/codacy-coverage-reporter-action@v1.3.0
48
+ with:
49
+ #project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
50
+ # or
51
+ api-token: ${{ secrets.CODACY_API_TOKEN }}
52
+ coverage-reports: coverage.xml
53
+ # or a comma-separated list for multiple reports
54
+ # coverage-reports: <PATH_TO_REPORT>, <PATH_TO_REPORT>
@@ -781,3 +781,4 @@ cython_debug/
781
781
  # option (not recommended) you can uncomment the following to ignore the entire idea folder.
782
782
  #.idea/
783
783
 
784
+ /.idea/**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: Graphinate
3
- Version: 0.3.0
3
+ Version: 0.3.1
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
@@ -21,6 +21,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
21
21
  Classifier: Programming Language :: Python :: 3.10
22
22
  Classifier: Programming Language :: Python :: 3.11
23
23
  Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
24
25
  Classifier: Programming Language :: Python :: Implementation :: CPython
25
26
  Classifier: Topic :: Scientific/Engineering
26
27
  Classifier: Topic :: Software Development :: Libraries
@@ -80,10 +81,10 @@ Description-Content-Type: text/markdown
80
81
  <td>Tools</td>
81
82
  <td>
82
83
  <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>
83
- <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>
84
- <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>
85
- <a href="https://squidfunk.github.io/mkdocs-material/"><img src="https://img.shields.io/badge/Material_for_MkDocs-526CFE?&logo=MaterialForMkDocs&logoColor=white&labelColor=grey"></a>
86
- <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>
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
+ <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>
87
+ <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>
87
88
  </td>
88
89
  </tr>
89
90
  <tr>
@@ -109,6 +110,7 @@ Description-Content-Type: text/markdown
109
110
  <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>
110
111
  <br>
111
112
  <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
+ <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>
112
114
  <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>
113
115
  <!--a href="https://snyk.io/test/github/erivlis/graphinate"><img alt="Snyk" src="https://snyk.io/test/github/erivlis/Graphinate/badge.svg"></a -->
114
116
  </td>
@@ -132,9 +134,9 @@ In addition, there are several modes of output to enable examination of the Grap
132
134
 
133
135
  ### Links
134
136
 
135
- - Website (including documentation): https://erivlis.github.io/graphinate
136
- - Source: https://github.com/erivlis/graphinate
137
- - Package: https://pypi.org/project/graphinate
137
+ - Website (including documentation): <https://erivlis.github.io/graphinate>
138
+ - Source: <https://github.com/erivlis/graphinate>
139
+ - Package: <https://pypi.org/project/graphinate>
138
140
 
139
141
  ## Quick Start
140
142
 
@@ -177,11 +179,17 @@ def edge():
177
179
  graphinate.materialize(graph_model)
178
180
  ```
179
181
 
182
+
183
+
184
+ #### `graphinate.model` function
185
+
180
186
  > [!NOTE]
181
- > ### `graphinate.model` function
182
187
  > This function creates `GraphModel` class that is used to declaratively register _Edge_ and/or _Node_ data
183
188
  > supplier functions by using the `GraphModel.node()` and `GraphModel.edge()` decorators.
184
- > ### `graphinate.materialize` function
189
+
190
+ #### `graphinate.materialize` function
191
+
192
+ > [!NOTE]
185
193
  > This function can be used to easily generate an output from a `GraphModel` instance.
186
194
  > By default, it will prompt the user to choose the output format, using a popup GUI dialog box.
187
195
 
@@ -189,7 +197,7 @@ graphinate.materialize(graph_model)
189
197
 
190
198
  ### Commands
191
199
 
192
- ```
200
+ ```text
193
201
  Usage: python -m graphinate [OPTIONS] COMMAND [ARGS]...
194
202
 
195
203
  Options:
@@ -202,7 +210,7 @@ Commands:
202
210
 
203
211
  #### Save
204
212
 
205
- ```
213
+ ```text
206
214
  Usage: python -m graphinate save [OPTIONS]
207
215
 
208
216
  Options:
@@ -215,7 +223,7 @@ Options:
215
223
 
216
224
  #### Server
217
225
 
218
- ```
226
+ ```text
219
227
  Usage: python -m graphinate server [OPTIONS]
220
228
 
221
229
  Options:
@@ -311,7 +319,7 @@ python -m mkdocs build
311
319
 
312
320
  <a href="https://www.jetbrains.com/pycharm/"><img height="60" style="background: linear-gradient(-45deg, #FCF84A, #3DEA62, #21D789);" src="https://resources.jetbrains.com/storage/products/company/brand/logos/PyCharm.png" alt="PyCharm logo."></a>
313
321
 
314
- ------
322
+ ---------------------
315
323
 
316
324
  <img alt="Star Chart" src="https://forthebadge.com/images/badges/works-on-my-machine.svg">
317
325
 
@@ -21,10 +21,10 @@
21
21
  <td>Tools</td>
22
22
  <td>
23
23
  <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://squidfunk.github.io/mkdocs-material/"><img src="https://img.shields.io/badge/Material_for_MkDocs-526CFE?&logo=MaterialForMkDocs&logoColor=white&labelColor=grey"></a>
27
- <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>
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
+ <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>
27
+ <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>
28
28
  </td>
29
29
  </tr>
30
30
  <tr>
@@ -50,6 +50,7 @@
50
50
  <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
51
  <br>
52
52
  <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
+ <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
54
  <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>
54
55
  <!--a href="https://snyk.io/test/github/erivlis/graphinate"><img alt="Snyk" src="https://snyk.io/test/github/erivlis/Graphinate/badge.svg"></a -->
55
56
  </td>
@@ -73,9 +74,9 @@ In addition, there are several modes of output to enable examination of the Grap
73
74
 
74
75
  ### Links
75
76
 
76
- - Website (including documentation): https://erivlis.github.io/graphinate
77
- - Source: https://github.com/erivlis/graphinate
78
- - Package: https://pypi.org/project/graphinate
77
+ - Website (including documentation): <https://erivlis.github.io/graphinate>
78
+ - Source: <https://github.com/erivlis/graphinate>
79
+ - Package: <https://pypi.org/project/graphinate>
79
80
 
80
81
  ## Quick Start
81
82
 
@@ -118,11 +119,17 @@ def edge():
118
119
  graphinate.materialize(graph_model)
119
120
  ```
120
121
 
122
+
123
+
124
+ #### `graphinate.model` function
125
+
121
126
  > [!NOTE]
122
- > ### `graphinate.model` function
123
127
  > This function creates `GraphModel` class that is used to declaratively register _Edge_ and/or _Node_ data
124
128
  > supplier functions by using the `GraphModel.node()` and `GraphModel.edge()` decorators.
125
- > ### `graphinate.materialize` function
129
+
130
+ #### `graphinate.materialize` function
131
+
132
+ > [!NOTE]
126
133
  > This function can be used to easily generate an output from a `GraphModel` instance.
127
134
  > By default, it will prompt the user to choose the output format, using a popup GUI dialog box.
128
135
 
@@ -130,7 +137,7 @@ graphinate.materialize(graph_model)
130
137
 
131
138
  ### Commands
132
139
 
133
- ```
140
+ ```text
134
141
  Usage: python -m graphinate [OPTIONS] COMMAND [ARGS]...
135
142
 
136
143
  Options:
@@ -143,7 +150,7 @@ Commands:
143
150
 
144
151
  #### Save
145
152
 
146
- ```
153
+ ```text
147
154
  Usage: python -m graphinate save [OPTIONS]
148
155
 
149
156
  Options:
@@ -156,7 +163,7 @@ Options:
156
163
 
157
164
  #### Server
158
165
 
159
- ```
166
+ ```text
160
167
  Usage: python -m graphinate server [OPTIONS]
161
168
 
162
169
  Options:
@@ -252,7 +259,7 @@ python -m mkdocs build
252
259
 
253
260
  <a href="https://www.jetbrains.com/pycharm/"><img height="60" style="background: linear-gradient(-45deg, #FCF84A, #3DEA62, #21D789);" src="https://resources.jetbrains.com/storage/products/company/brand/logos/PyCharm.png" alt="PyCharm logo."></a>
254
261
 
255
- ------
262
+ ---------------------
256
263
 
257
264
  <img alt="Star Chart" src="https://forthebadge.com/images/badges/works-on-my-machine.svg">
258
265
 
@@ -7,6 +7,12 @@
7
7
 
8
8
  ## Repos
9
9
 
10
- ### Graphinate Stars
10
+ ### Graphinate
11
11
 
12
12
  <img alt="Graphinate Star Chart" src="https://starchart.cc/erivlis/graphinate.svg">
13
+
14
+ https://starchart.cc/erivlis/graphinate.svg
15
+
16
+ ### MappingTools
17
+
18
+ <img alt="MappingTools Star Chart" src="https://starchart.cc/erivlis/mappingtools.svg">
@@ -25,4 +25,4 @@
25
25
 
26
26
  ## IDE
27
27
 
28
- <a href="https://www.jetbrains.com/pycharm/"><img style="height: 50px; background: linear-gradient(-45deg, #FCF84A, #3DEA62, #21D789);" src="https://resources.jetbrains.com/storage/products/company/brand/logos/PyCharm.png" alt="PyCharm logo."></a>
28
+ <a href="https://www.jetbrains.com/pycharm/"><img style="height: 50px; background: linear-gradient(-45deg, #FCF84A, #3DEA62, #21D789);" src="https://resources.jetbrains.com/storage/products/company/brand/logos/PyCharm.png" alt="PyCharm logo."></a>
@@ -49,6 +49,7 @@
49
49
  <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
50
  <br>
51
51
  <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
+ <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>
52
53
  <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>
53
54
  </td>
54
55
  </tr>
@@ -2,34 +2,37 @@ import graphinate
2
2
  import graphinate.modeling
3
3
  import networkx as nx
4
4
 
5
- N: int = 8
6
5
 
6
+ def polygonal_graph_edges(edges_count: int):
7
+ for i in range(1, edges_count):
8
+ yield {'source': i, 'target': i + 1}
9
+ yield {'source': edges_count, 'target': 1}
7
10
 
8
- def polygonal_graph_model(number_of_sides: int = N):
11
+
12
+ def polygonal_graph_model(name: str, number_of_sides: int) -> graphinate.GraphModel:
9
13
  """
10
14
  Create a polygonal graph model.
11
15
 
12
16
  Args:
13
- number_of_sides (int): Number of sides in the polygon. Defaults to N.
17
+ name (str): The Graph's name.
18
+ number_of_sides (int): Number of sides in the polygon.
14
19
 
15
20
  Returns:
16
21
  GraphModel: A graph model representing a polygonal graph.
17
22
  """
18
23
 
19
24
  # Define GraphModel
20
- graph_model = graphinate.model(name="Octagonal Graph")
25
+ graph_model = graphinate.model(name)
21
26
 
22
27
  # Register edges supplier function
23
28
  @graph_model.edge()
24
29
  def edge():
25
- for i in range(number_of_sides - 1):
26
- yield {'source': i, 'target': i + 1}
27
- yield {'source': number_of_sides - 1, 'target': 0}
30
+ yield from polygonal_graph_edges(number_of_sides)
28
31
 
29
32
  return graph_model
30
33
 
31
34
 
32
- model = polygonal_graph_model()
35
+ model = polygonal_graph_model("Octagonal Graph", 8)
33
36
 
34
37
  if __name__ == '__main__':
35
38
  use_materialize = True
@@ -1,3 +1,4 @@
1
1
  beautifulsoup4~=4.12.2
2
+ loguru
2
3
  lxml~=4.9.3
3
- requests~=2.31.0
4
+ requests~=2.32.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Graphinate"
3
- version = "0.3.0"
3
+ version = "0.3.1"
4
4
  authors = [
5
5
  { name = "Eran Rivlis", email = "eran@rivlis.info" },
6
6
  ]
@@ -16,6 +16,7 @@ classifiers = [
16
16
  "Programming Language :: Python :: 3.10",
17
17
  "Programming Language :: Python :: 3.11",
18
18
  "Programming Language :: Python :: 3.12",
19
+ "Programming Language :: Python :: 3.13",
19
20
  "Programming Language :: Python :: 3 :: Only",
20
21
  "Programming Language :: Python :: Implementation :: CPython",
21
22
  "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)",
@@ -347,7 +347,7 @@ class D3Builder(NetworkxBuilder):
347
347
  class GraphQLBuilder(NetworkxBuilder):
348
348
  """Builds a GraphQL Schema"""
349
349
 
350
- # region Strawberry Types
350
+ # region - Strawberry Types
351
351
 
352
352
  InfNumber = strawberry.scalar(
353
353
  converters.InfNumber,
@@ -504,7 +504,7 @@ class GraphQLBuilder(NetworkxBuilder):
504
504
  overall_reciprocity = 'overall_reciprocity'
505
505
  wiener_index = 'wiener_index'
506
506
 
507
- # endregion Strawberry Types
507
+ # endregion - Strawberry Types
508
508
 
509
509
  def __init__(self, model: GraphModel, graph_type: GraphType = GraphType.Graph):
510
510
  super().__init__(model, graph_type)
@@ -705,7 +705,7 @@ class GraphQLBuilder(NetworkxBuilder):
705
705
  self.add_field_resolver(query_class_dict, 'edges', graph_edges_resolver())
706
706
  # endregion
707
707
 
708
- # region - Defining GraphQL Query Class dict - fields for GraphQL types implementing 'GraphNode' interface
708
+ # region - Defining GraphQL Query Class dict - fields for GraphQL types implementing 'GraphNode' interface
709
709
  for node_type, graphql_type in self._graphql_types.items():
710
710
  field_name = inflection.plural(node_type)
711
711
  resolver = graph_nodes_resolver(graphql_type, node_type)
@@ -713,7 +713,7 @@ class GraphQLBuilder(NetworkxBuilder):
713
713
 
714
714
  # endregion
715
715
 
716
- # region - Defining GraphQL Query Class dict - field measure for 'GraphMeasure' GraphQL type
716
+ # region - Defining GraphQL Query Class dict - field measure for 'GraphMeasure' GraphQL type
717
717
 
718
718
  def graph_measure(self, measure: GraphQLBuilder.GraphMeasure) -> GraphQLBuilder.Measure:
719
719
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes