cypher-graphdb 0.1.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 (266) hide show
  1. cypher_graphdb-0.1.1/.env.age.example +32 -0
  2. cypher_graphdb-0.1.1/.env.example +19 -0
  3. cypher_graphdb-0.1.1/.env.memgraph.example +29 -0
  4. cypher_graphdb-0.1.1/.github/workflows/ci.yml +144 -0
  5. cypher_graphdb-0.1.1/.github/workflows/publish.yml +86 -0
  6. cypher_graphdb-0.1.1/.github/workflows/release.yml +25 -0
  7. cypher_graphdb-0.1.1/.gitignore +109 -0
  8. cypher_graphdb-0.1.1/.pre-commit-config.yaml +37 -0
  9. cypher_graphdb-0.1.1/CHANGELOG.md +19 -0
  10. cypher_graphdb-0.1.1/CONTRIBUTING.md +110 -0
  11. cypher_graphdb-0.1.1/LICENSE.md +190 -0
  12. cypher_graphdb-0.1.1/PKG-INFO +497 -0
  13. cypher_graphdb-0.1.1/README.md +433 -0
  14. cypher_graphdb-0.1.1/Taskfile.yml +208 -0
  15. cypher_graphdb-0.1.1/cli +29 -0
  16. cypher_graphdb-0.1.1/docs/TODO.md +28 -0
  17. cypher_graphdb-0.1.1/docs/changelog.md +1 -0
  18. cypher_graphdb-0.1.1/docs/css/material.css +4 -0
  19. cypher_graphdb-0.1.1/docs/css/mkdocstrings.css +42 -0
  20. cypher_graphdb-0.1.1/docs/css/style.css +24 -0
  21. cypher_graphdb-0.1.1/docs/design/duckdb-migration.md +135 -0
  22. cypher_graphdb-0.1.1/docs/design/falkordb-integration.md +89 -0
  23. cypher_graphdb-0.1.1/docs/design/hierarchical-export-format.md +278 -0
  24. cypher_graphdb-0.1.1/docs/design/multiple-statement-execution.md +399 -0
  25. cypher_graphdb-0.1.1/docs/design/parameterized-queries-for-typed-models.md +356 -0
  26. cypher_graphdb-0.1.1/docs/design/query-result-immutable-design.md +514 -0
  27. cypher_graphdb-0.1.1/docs/design/read-only-mode.md +192 -0
  28. cypher_graphdb-0.1.1/docs/design/stateless-multi-graph-support.md +140 -0
  29. cypher_graphdb-0.1.1/docs/documentation-guide.md +156 -0
  30. cypher_graphdb-0.1.1/docs/examples/docstring_examples.py +122 -0
  31. cypher_graphdb-0.1.1/docs/index.md +7 -0
  32. cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/backends/age/index.md +1 -0
  33. cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/backends/index.md +1 -0
  34. cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/cli/index.md +1 -0
  35. cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/cypher/index.md +1 -0
  36. cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/index.md +1 -0
  37. cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/tools/index.md +1 -0
  38. cypher_graphdb-0.1.1/docs/usage/index.md +1 -0
  39. cypher_graphdb-0.1.1/mkdocs.yml +163 -0
  40. cypher_graphdb-0.1.1/pyproject.toml +135 -0
  41. cypher_graphdb-0.1.1/scripts/gen_ref_nav.py +36 -0
  42. cypher_graphdb-0.1.1/setup.cfg +4 -0
  43. cypher_graphdb-0.1.1/src/cypher_graphdb/__init__.py +73 -0
  44. cypher_graphdb-0.1.1/src/cypher_graphdb/__main__.py +9 -0
  45. cypher_graphdb-0.1.1/src/cypher_graphdb/args.py +149 -0
  46. cypher_graphdb-0.1.1/src/cypher_graphdb/backend.py +292 -0
  47. cypher_graphdb-0.1.1/src/cypher_graphdb/backendprovider.py +160 -0
  48. cypher_graphdb-0.1.1/src/cypher_graphdb/backends/__init__.py +1 -0
  49. cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/__init__.py +14 -0
  50. cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/agegraphdb.py +671 -0
  51. cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/agerowfactories.py +109 -0
  52. cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/agesearch.py +37 -0
  53. cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/agesqlbuilder.py +136 -0
  54. cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/agtype.py +27 -0
  55. cypher_graphdb-0.1.1/src/cypher_graphdb/backends/memgraph/__init__.py +16 -0
  56. cypher_graphdb-0.1.1/src/cypher_graphdb/backends/memgraph/memgraphdb.py +537 -0
  57. cypher_graphdb-0.1.1/src/cypher_graphdb/backends/memgraph/memgraphrowfactories.py +225 -0
  58. cypher_graphdb-0.1.1/src/cypher_graphdb/cardinality.py +17 -0
  59. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/__init__.py +12 -0
  60. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/app.py +522 -0
  61. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/banner.py +26 -0
  62. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/command_manager.py +93 -0
  63. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/command_map.py +54 -0
  64. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/command_registry.py +102 -0
  65. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/__init__.py +112 -0
  66. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/add_graph_command.py +43 -0
  67. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/apply_config_command.py +41 -0
  68. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/base_command.py +119 -0
  69. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/change_dbgraph_command.py +30 -0
  70. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/clear_graph_command.py +43 -0
  71. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/commit_command.py +30 -0
  72. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/connect_command.py +33 -0
  73. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/create_dbgraph_command.py +30 -0
  74. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/create_edge_command.py +58 -0
  75. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/create_linked_node_command.py +84 -0
  76. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/create_node_command.py +36 -0
  77. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dbgraph_exists_command.py +30 -0
  78. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/delete_graphobj_command.py +47 -0
  79. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/disconnect_command.py +33 -0
  80. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/drop_dbgraph_command.py +30 -0
  81. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_backends_command.py +55 -0
  82. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_dbgraphs_command.py +32 -0
  83. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_labels_command.py +32 -0
  84. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_models_command.py +63 -0
  85. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_parsed_query_command.py +74 -0
  86. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_schema_command.py +61 -0
  87. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_statistics_command.py +66 -0
  88. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/execute_cypher_command.py +101 -0
  89. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/execute_file_command.py +111 -0
  90. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/exit_command.py +30 -0
  91. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/export_graph_command.py +49 -0
  92. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/fetch_all_command.py +54 -0
  93. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/fetch_edges_command.py +46 -0
  94. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/fetch_nodes_command.py +46 -0
  95. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/format_output_command.py +56 -0
  96. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/get_command.py +44 -0
  97. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/gid_command.py +49 -0
  98. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/graph_op_command.py +40 -0
  99. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/graph_to_tree_command.py +64 -0
  100. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/help_command.py +31 -0
  101. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/import_graph_command.py +40 -0
  102. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/last_result_op_command.py +32 -0
  103. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/load_models_command.py +57 -0
  104. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/resolve_edges_command.py +58 -0
  105. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/rollback_command.py +30 -0
  106. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/search_command.py +79 -0
  107. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/set_command.py +50 -0
  108. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/sql_command.py +54 -0
  109. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/update_graphobj_command.py +48 -0
  110. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/completer.py +518 -0
  111. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/config.py +57 -0
  112. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/exporter.py +106 -0
  113. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/file_executor.py +204 -0
  114. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/graphdata.py +190 -0
  115. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/graphdb.py +439 -0
  116. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/_overview.md +47 -0
  117. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/_template.md +96 -0
  118. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/add_graph.md +356 -0
  119. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/exit.md +3 -0
  120. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/export_graph.md +231 -0
  121. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/import_graph.md +163 -0
  122. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/last_result.md +297 -0
  123. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help.py +53 -0
  124. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/importer.py +106 -0
  125. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/prompt.py +87 -0
  126. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/promptparser.py +312 -0
  127. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/provider.py +62 -0
  128. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/renderer.py +401 -0
  129. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/runtime.py +83 -0
  130. cypher_graphdb-0.1.1/src/cypher_graphdb/cli/schema_cmd.py +197 -0
  131. cypher_graphdb-0.1.1/src/cypher_graphdb/command_reader.py +102 -0
  132. cypher_graphdb-0.1.1/src/cypher_graphdb/config.py +54 -0
  133. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/Cypher.interp +368 -0
  134. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/Cypher.tokens +173 -0
  135. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherBaseListener.java +1275 -0
  136. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherLexer.interp +418 -0
  137. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherLexer.java +1178 -0
  138. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherLexer.tokens +173 -0
  139. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherListener.java +1039 -0
  140. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherParser.java +10434 -0
  141. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/Cypher.g4 +804 -0
  142. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/Cypher.interp +368 -0
  143. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/Cypher.tokens +173 -0
  144. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/CypherLexer.interp +418 -0
  145. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/CypherLexer.py +833 -0
  146. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/CypherLexer.tokens +173 -0
  147. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/CypherListener.py +940 -0
  148. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/CypherParser.py +9820 -0
  149. cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/__init__.py +0 -0
  150. cypher_graphdb-0.1.1/src/cypher_graphdb/cypherbuilder.py +177 -0
  151. cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/__init__.py +15 -0
  152. cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/batch.py +152 -0
  153. cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/connection.py +225 -0
  154. cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/criteria.py +118 -0
  155. cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/cyphergraphdb.py +1127 -0
  156. cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/result.py +54 -0
  157. cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/schema.py +183 -0
  158. cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/search.py +81 -0
  159. cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/sql.py +86 -0
  160. cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/stream_mixin.py +113 -0
  161. cypher_graphdb-0.1.1/src/cypher_graphdb/cypherjson.py +49 -0
  162. cypher_graphdb-0.1.1/src/cypher_graphdb/cypherparser.py +343 -0
  163. cypher_graphdb-0.1.1/src/cypher_graphdb/dbpool.py +391 -0
  164. cypher_graphdb-0.1.1/src/cypher_graphdb/decorators.py +478 -0
  165. cypher_graphdb-0.1.1/src/cypher_graphdb/display.py +48 -0
  166. cypher_graphdb-0.1.1/src/cypher_graphdb/exceptions.py +20 -0
  167. cypher_graphdb-0.1.1/src/cypher_graphdb/graphops.py +500 -0
  168. cypher_graphdb-0.1.1/src/cypher_graphdb/main.py +62 -0
  169. cypher_graphdb-0.1.1/src/cypher_graphdb/modelinfo.py +232 -0
  170. cypher_graphdb-0.1.1/src/cypher_graphdb/modelprovider.py +724 -0
  171. cypher_graphdb-0.1.1/src/cypher_graphdb/models.py +578 -0
  172. cypher_graphdb-0.1.1/src/cypher_graphdb/options.py +62 -0
  173. cypher_graphdb-0.1.1/src/cypher_graphdb/schema/__init__.py +17 -0
  174. cypher_graphdb-0.1.1/src/cypher_graphdb/schema/converter.py +311 -0
  175. cypher_graphdb-0.1.1/src/cypher_graphdb/schema/core.py +217 -0
  176. cypher_graphdb-0.1.1/src/cypher_graphdb/schema/generator.py +178 -0
  177. cypher_graphdb-0.1.1/src/cypher_graphdb/settings.py +107 -0
  178. cypher_graphdb-0.1.1/src/cypher_graphdb/statistics.py +158 -0
  179. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/__init__.py +50 -0
  180. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/base_exporter.py +30 -0
  181. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/base_importer.py +30 -0
  182. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/csv_exporter.py +83 -0
  183. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/csv_importer.py +39 -0
  184. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/csv_source.py +98 -0
  185. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/data_flattener.py +279 -0
  186. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/excel_exporter.py +76 -0
  187. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/excel_importer.py +59 -0
  188. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/excel_row_source.py +48 -0
  189. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/file_exporter.py +158 -0
  190. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/file_importer.py +142 -0
  191. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/hierarchical_exporter.py +514 -0
  192. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/hierarchical_importer.py +431 -0
  193. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/hierarchical_row_source.py +259 -0
  194. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/json_importer.py +81 -0
  195. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/json_yaml_data_source.py +139 -0
  196. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/row_collector.py +277 -0
  197. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/row_set.py +22 -0
  198. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/row_source.py +24 -0
  199. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/tabular_importer.py +270 -0
  200. cypher_graphdb-0.1.1/src/cypher_graphdb/tools/yaml_importer.py +81 -0
  201. cypher_graphdb-0.1.1/src/cypher_graphdb/utils/__init__.py +115 -0
  202. cypher_graphdb-0.1.1/src/cypher_graphdb/utils/collection_utils.py +485 -0
  203. cypher_graphdb-0.1.1/src/cypher_graphdb/utils/column_utils.py +165 -0
  204. cypher_graphdb-0.1.1/src/cypher_graphdb/utils/connection_utils.py +318 -0
  205. cypher_graphdb-0.1.1/src/cypher_graphdb/utils/conversion_utils.py +389 -0
  206. cypher_graphdb-0.1.1/src/cypher_graphdb/utils/core_utils.py +193 -0
  207. cypher_graphdb-0.1.1/src/cypher_graphdb/utils/schema_merge.py +447 -0
  208. cypher_graphdb-0.1.1/src/cypher_graphdb/utils/schema_utils.py +102 -0
  209. cypher_graphdb-0.1.1/src/cypher_graphdb/utils/settings_repr.py +86 -0
  210. cypher_graphdb-0.1.1/src/cypher_graphdb/utils/string_utils.py +759 -0
  211. cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/PKG-INFO +497 -0
  212. cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/SOURCES.txt +264 -0
  213. cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/dependency_links.txt +1 -0
  214. cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/entry_points.txt +2 -0
  215. cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/requires.txt +54 -0
  216. cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/top_level.txt +1 -0
  217. cypher_graphdb-0.1.1/tests/README.md +142 -0
  218. cypher_graphdb-0.1.1/tests/conftest.py +47 -0
  219. cypher_graphdb-0.1.1/tests/integration/__init__.py +1 -0
  220. cypher_graphdb-0.1.1/tests/integration/conftest.py +193 -0
  221. cypher_graphdb-0.1.1/tests/integration/test_create_or_merge.py +302 -0
  222. cypher_graphdb-0.1.1/tests/integration/test_example.py +81 -0
  223. cypher_graphdb-0.1.1/tests/integration/test_parameters.py +263 -0
  224. cypher_graphdb-0.1.1/tests/integration/test_read_only_mode.py +168 -0
  225. cypher_graphdb-0.1.1/tests/integration/test_streaming.py +318 -0
  226. cypher_graphdb-0.1.1/tests/test_json_schema_loading.py +653 -0
  227. cypher_graphdb-0.1.1/tests/test_json_schema_vs_decorators.py +374 -0
  228. cypher_graphdb-0.1.1/tests/unit/README.md +222 -0
  229. cypher_graphdb-0.1.1/tests/unit/__init__.py +1 -0
  230. cypher_graphdb-0.1.1/tests/unit/cli/__init__.py +1 -0
  231. cypher_graphdb-0.1.1/tests/unit/cli/test_cmd_map.py +159 -0
  232. cypher_graphdb-0.1.1/tests/unit/cli/test_command_registry.py +225 -0
  233. cypher_graphdb-0.1.1/tests/unit/mock_backend.py +164 -0
  234. cypher_graphdb-0.1.1/tests/unit/test_backend_capabilities.py +149 -0
  235. cypher_graphdb-0.1.1/tests/unit/test_column_utils.py +218 -0
  236. cypher_graphdb-0.1.1/tests/unit/test_command_reader.py +154 -0
  237. cypher_graphdb-0.1.1/tests/unit/test_cypherbuilder.py +261 -0
  238. cypher_graphdb-0.1.1/tests/unit/test_cypherparser.py +387 -0
  239. cypher_graphdb-0.1.1/tests/unit/test_dbpool.py +65 -0
  240. cypher_graphdb-0.1.1/tests/unit/test_dict_access_mixin.py +182 -0
  241. cypher_graphdb-0.1.1/tests/unit/test_extend_relation_decorator.py +148 -0
  242. cypher_graphdb-0.1.1/tests/unit/test_extend_relations.py +236 -0
  243. cypher_graphdb-0.1.1/tests/unit/test_graph_id_zero.py +13 -0
  244. cypher_graphdb-0.1.1/tests/unit/test_graphops.py +244 -0
  245. cypher_graphdb-0.1.1/tests/unit/test_model_inheritance.py +243 -0
  246. cypher_graphdb-0.1.1/tests/unit/test_modelinfo.py +111 -0
  247. cypher_graphdb-0.1.1/tests/unit/test_modelprovider_loading.py +460 -0
  248. cypher_graphdb-0.1.1/tests/unit/test_modelprovider_schemas.py +110 -0
  249. cypher_graphdb-0.1.1/tests/unit/test_models.py +211 -0
  250. cypher_graphdb-0.1.1/tests/unit/test_schema_converter.py +493 -0
  251. cypher_graphdb-0.1.1/tests/unit/tools/__init__.py +0 -0
  252. cypher_graphdb-0.1.1/tests/unit/tools/test_data_flattener.py +217 -0
  253. cypher_graphdb-0.1.1/tests/unit/tools/test_exporters.py +93 -0
  254. cypher_graphdb-0.1.1/tests/unit/tools/test_hierarchical_importer.py +267 -0
  255. cypher_graphdb-0.1.1/tests/unit/tools/test_json_yaml_data_source.py +248 -0
  256. cypher_graphdb-0.1.1/tests/unit/tools/test_resource_management.py +87 -0
  257. cypher_graphdb-0.1.1/tests/unit/tools/test_tabular_import.py +54 -0
  258. cypher_graphdb-0.1.1/tests/unit/utils/test_collection_utils.py +171 -0
  259. cypher_graphdb-0.1.1/tests/unit/utils/test_connection_utils.py +229 -0
  260. cypher_graphdb-0.1.1/tests/unit/utils/test_conversion_utils.py +35 -0
  261. cypher_graphdb-0.1.1/tests/unit/utils/test_core_utils.py +64 -0
  262. cypher_graphdb-0.1.1/tests/unit/utils/test_schema_merge.py +241 -0
  263. cypher_graphdb-0.1.1/tests/unit/utils/test_schema_utils.py +166 -0
  264. cypher_graphdb-0.1.1/tests/unit/utils/test_settings_repr.py +296 -0
  265. cypher_graphdb-0.1.1/tests/unit/utils/test_string_utils.py +240 -0
  266. cypher_graphdb-0.1.1/uv.lock +1563 -0
@@ -0,0 +1,32 @@
1
+ # CypherGraphDB Library Configuration for Apache AGE
2
+ #
3
+ # This configuration connects to the Apache AGE backend started via Docker Compose.
4
+ # Assumes you have started the AGE stack with:
5
+ # cd infrastructure
6
+ # task stack:age:up
7
+ # or
8
+ # task age:up
9
+ #
10
+ # The AGE container exposes port 8432 on localhost for PostgreSQL connections.
11
+
12
+ # Backend type
13
+ CGDB_BACKEND=age
14
+
15
+ # Connection info for Apache AGE backend
16
+ # Uses PostgreSQL protocol connecting to localhost:8432 (exposed from Docker)
17
+ # Format: postgresql://user:password@host:port/database
18
+ # Note: Use plain postgresql:// (not postgresql+psycopg://) for the lib
19
+ CGDB_CINFO=postgresql://postgres:postgres@localhost:8432/graphdb
20
+
21
+ # Graph name (required for AGE)
22
+ # AGE requires a graph name - default is 'main'
23
+ CGDB_GRAPH=main
24
+
25
+ # Read-only mode (optional, default: false)
26
+ # When true, prevents write operations
27
+ CGDB_READ_ONLY=false
28
+
29
+ # Auto-create graph if it doesn't exist (optional, default: false)
30
+ # When true, automatically creates the graph on first connection
31
+ # Useful for automated setups and avoiding manual graph creation
32
+ CGDB_CREATE_GRAPH_IF_NOT_EXISTS=true
@@ -0,0 +1,19 @@
1
+ # Graph Backend Configuration
2
+ # Backend driver / provider identifier.
3
+ # Currently supported:
4
+ # memgraph for Memgraph
5
+ # age for Apache AGE
6
+ #
7
+ CGDB_BACKEND=memgraph
8
+ # Connection info / DSN or host:port as required by backend implementation
9
+ # Example for Memgraph: bolt://localhost:7687
10
+ CGDB_CINFO=
11
+ # Graph / database (logical) name if applicable
12
+ CGDB_GRAPH=
13
+ # Auto-create graph if it doesn't exist (optional, default: false)
14
+ # When true, automatically creates the graph on first connection (AGE only)
15
+ CGDB_CREATE_GRAPH_IF_NOT_EXISTS=false
16
+
17
+
18
+
19
+
@@ -0,0 +1,29 @@
1
+ # CypherGraphDB Library Configuration for Memgraph
2
+ #
3
+ # This configuration connects to the Memgraph backend started via Docker Compose.
4
+ # Assumes you have started the Memgraph stack with:
5
+ # cd infrastructure
6
+ # task stack:memgraph:up
7
+ # or
8
+ # task memgraph:up
9
+ #
10
+ # The Memgraph container exposes port 7687 on localhost for Bolt protocol connections.
11
+
12
+ # Backend type
13
+ CGDB_BACKEND=memgraph
14
+
15
+ # Connection info for Memgraph backend
16
+ # Uses Bolt protocol connecting to localhost:7687 (exposed from Docker)
17
+ CGDB_CINFO=bolt://localhost:7687
18
+
19
+ # Graph / database name (optional for Memgraph)
20
+ # Memgraph doesn't require a graph name - leave empty
21
+ CGDB_GRAPH=
22
+
23
+ # Read-only mode (optional, default: false)
24
+ # When true, prevents write operations
25
+ CGDB_READ_ONLY=false
26
+
27
+ # Auto-create graph if it doesn't exist (optional, default: false)
28
+ # Note: This setting has no effect for Memgraph (only applies to AGE backend)
29
+ CGDB_CREATE_GRAPH_IF_NOT_EXISTS=false
@@ -0,0 +1,144 @@
1
+ name: Core CI/CD
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths-ignore:
8
+ - '**/*.md'
9
+ pull_request:
10
+ branches:
11
+ - main
12
+ paths-ignore:
13
+ - '**/*.md'
14
+ workflow_dispatch:
15
+
16
+ permissions:
17
+ contents: read
18
+ pull-requests: read
19
+ checks: write
20
+
21
+ jobs:
22
+ test:
23
+ name: Test
24
+ runs-on: ubuntu-latest
25
+ timeout-minutes: 30
26
+ strategy:
27
+ matrix:
28
+ python-version: ['3.13']
29
+
30
+ steps:
31
+ - name: Checkout repository
32
+ uses: actions/checkout@v4
33
+ with:
34
+ fetch-depth: 0
35
+
36
+ - name: Set up Python ${{ matrix.python-version }}
37
+ uses: actions/setup-python@v5
38
+ with:
39
+ python-version: ${{ matrix.python-version }}
40
+
41
+ - name: Install uv
42
+ uses: astral-sh/setup-uv@v3
43
+ with:
44
+ version: "latest"
45
+ enable-cache: true
46
+
47
+ - name: Ensure uv cache directory exists
48
+ run: mkdir -p ~/.cache/uv
49
+
50
+ - name: Cache uv packages
51
+ uses: actions/cache@v4
52
+ with:
53
+ path: ~/.cache/uv
54
+ key: ${{ runner.os }}-uv-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}
55
+ restore-keys: |
56
+ ${{ runner.os }}-uv-${{ matrix.python-version }}-
57
+
58
+ - name: Create virtual environment
59
+ run: uv venv
60
+
61
+ - name: Install system dependencies
62
+ run: |
63
+ sudo apt-get update
64
+ sudo apt-get install -y --no-install-recommends \
65
+ cmake \
66
+ build-essential \
67
+ libpq-dev \
68
+ pkg-config \
69
+ zlib1g-dev \
70
+ libzstd-dev
71
+
72
+ - name: Install dependencies
73
+ run: |
74
+ uv pip install setuptools psycopg "antlr4-python3-runtime==4.11.1"
75
+ uv pip install --no-build-isolation -e ".[dev,build,examples,docs]"
76
+
77
+ - name: Lint code
78
+ run: .venv/bin/ruff check src tests
79
+
80
+ - name: Run unit tests
81
+ run: .venv/bin/pytest -m unit -x
82
+
83
+ build:
84
+ name: Build Package
85
+ runs-on: ubuntu-latest
86
+ timeout-minutes: 20
87
+ needs: test
88
+
89
+ steps:
90
+ - name: Checkout repository
91
+ uses: actions/checkout@v4
92
+
93
+ - name: Set up Python 3.13
94
+ uses: actions/setup-python@v5
95
+ with:
96
+ python-version: '3.13'
97
+
98
+ - name: Install uv
99
+ uses: astral-sh/setup-uv@v3
100
+ with:
101
+ version: "latest"
102
+ enable-cache: true
103
+
104
+ - name: Ensure uv cache directory exists
105
+ run: mkdir -p ~/.cache/uv
106
+
107
+ - name: Cache uv packages
108
+ uses: actions/cache@v4
109
+ with:
110
+ path: ~/.cache/uv
111
+ key: ${{ runner.os }}-uv-3.13-${{ hashFiles('pyproject.toml') }}
112
+ restore-keys: |
113
+ ${{ runner.os }}-uv-3.13-
114
+
115
+ - name: Create virtual environment
116
+ run: uv venv
117
+
118
+ - name: Install system dependencies
119
+ run: |
120
+ sudo apt-get update
121
+ sudo apt-get install -y --no-install-recommends \
122
+ cmake \
123
+ build-essential \
124
+ libpq-dev \
125
+ pkg-config \
126
+ zlib1g-dev \
127
+ libzstd-dev
128
+
129
+ - name: Install dependencies
130
+ run: |
131
+ uv pip install setuptools psycopg "antlr4-python3-runtime==4.11.1"
132
+ uv pip install --no-build-isolation -e ".[dev,build,examples,docs]"
133
+
134
+ - name: Build package
135
+ run: uv build
136
+
137
+ - name: Upload build artifacts
138
+ uses: actions/upload-artifact@v4
139
+ with:
140
+ name: dist-${{ github.sha }}
141
+ path: dist/
142
+ retention-days: 7
143
+
144
+
@@ -0,0 +1,86 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ permissions:
9
+ contents: read
10
+ id-token: write # Required for trusted publishing (OIDC)
11
+
12
+ jobs:
13
+ test:
14
+ name: Lint and Test
15
+ runs-on: ubuntu-latest
16
+ timeout-minutes: 30
17
+
18
+ steps:
19
+ - name: Checkout repository
20
+ uses: actions/checkout@v5
21
+ with:
22
+ fetch-depth: 0
23
+
24
+ - name: Set up Python 3.13
25
+ uses: actions/setup-python@v6
26
+ with:
27
+ python-version: '3.13'
28
+
29
+ - name: Install uv
30
+ uses: astral-sh/setup-uv@v7
31
+ with:
32
+ version: "latest"
33
+ enable-cache: true
34
+
35
+ - name: Install system dependencies
36
+ run: |
37
+ sudo apt-get update
38
+ sudo apt-get install -y --no-install-recommends \
39
+ cmake \
40
+ build-essential \
41
+ libpq-dev \
42
+ pkg-config \
43
+ zlib1g-dev \
44
+ libzstd-dev
45
+
46
+ - name: Install dependencies
47
+ run: |
48
+ uv venv
49
+ uv pip install setuptools psycopg "antlr4-python3-runtime==4.11.1"
50
+ uv pip install --no-build-isolation -e ".[dev]"
51
+
52
+ - name: Lint code
53
+ run: .venv/bin/ruff check src tests
54
+
55
+ - name: Run unit tests
56
+ run: .venv/bin/pytest -m unit -x
57
+
58
+ publish:
59
+ name: Build and Publish
60
+ runs-on: ubuntu-latest
61
+ timeout-minutes: 20
62
+ needs: test
63
+ environment: pypi
64
+
65
+ steps:
66
+ - name: Checkout repository
67
+ uses: actions/checkout@v5
68
+ with:
69
+ fetch-depth: 0 # Required for setuptools-scm
70
+
71
+ - name: Set up Python 3.13
72
+ uses: actions/setup-python@v6
73
+ with:
74
+ python-version: '3.13'
75
+
76
+ - name: Install uv
77
+ uses: astral-sh/setup-uv@v7
78
+ with:
79
+ version: "latest"
80
+ enable-cache: true
81
+
82
+ - name: Build package
83
+ run: uv build
84
+
85
+ - name: Publish to PyPI
86
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,25 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ release:
13
+ name: Create GitHub Release
14
+ runs-on: ubuntu-latest
15
+ timeout-minutes: 5
16
+ steps:
17
+ - name: Checkout repository
18
+ uses: actions/checkout@v4
19
+ with:
20
+ fetch-depth: 0
21
+
22
+ - name: Create GitHub Release
23
+ uses: softprops/action-gh-release@v2
24
+ with:
25
+ generate_release_notes: true
@@ -0,0 +1,109 @@
1
+ .idea/
2
+ .vscode/
3
+ *.py[cod]
4
+ *.so
5
+ *.egg/
6
+ *.egg-info/
7
+ .DS_Store
8
+ dist/
9
+ build/
10
+ site/
11
+ .venv/
12
+ __pycache__/
13
+ .tox/
14
+ .mypy_cache/
15
+ .pytest_cache/
16
+ .coverage
17
+ .ruff_cache
18
+ htmlcov/
19
+ docs/coverage/
20
+ tests/coverage.xml
21
+ .cgdb_history
22
+ .scannerwork
23
+ ~*.*
24
+
25
+ # Exclude all .env files except .env.example
26
+ .env*
27
+ !.env*.example
28
+ !.env.production
29
+
30
+ # Ensure root CONTRIBUTING.md is not excluded
31
+ !CONTRIBUTING.md
32
+
33
+ # mkdocs build and cache ignores
34
+ site/
35
+ docs/coverage/
36
+ docs/__pycache__/
37
+ docs/.DS_Store
38
+
39
+ # Excel and CSV files in root folder
40
+ /*.xls
41
+ /*.xlsx
42
+ /*.csv
43
+
44
+ # Cypher query files in root folder
45
+ /*.cypher
46
+ /*.cypherl
47
+
48
+ # Python
49
+ __pycache__/
50
+ *.py[cod]
51
+ *$py.class
52
+ *.so
53
+ .Python
54
+ build/
55
+ develop-eggs/
56
+ dist/
57
+ downloads/
58
+ eggs/
59
+ .eggs/
60
+ parts/
61
+ sdist/
62
+ var/
63
+ wheels/
64
+ *.egg-info/
65
+ .installed.cfg
66
+ *.egg
67
+ MANIFEST
68
+
69
+ # PyInstaller
70
+ *.manifest
71
+ *.spec
72
+
73
+ # Installer logs
74
+ pip-log.txt
75
+ pip-delete-this-directory.txt
76
+
77
+ # Unit test / coverage reports
78
+ htmlcov/
79
+ .tox/
80
+ .nox/
81
+ .coverage
82
+ .coverage.*
83
+ .cache
84
+ nosetests.xml
85
+ coverage.xml
86
+ *.cover
87
+ .hypothesis/
88
+ .pytest_cache/
89
+
90
+ # Environments
91
+ .venv
92
+ env/
93
+ venv/
94
+ ENV/
95
+ env.bak/
96
+ venv.bak/
97
+
98
+ # IDE
99
+ .vscode/
100
+ .idea/
101
+ *.swp
102
+ *.swo
103
+
104
+ # OS
105
+ .DS_Store
106
+ Thumbs.db
107
+
108
+ # Exclude repomix output
109
+ repomix-output.*
@@ -0,0 +1,37 @@
1
+ ###############################
2
+ # pre-commit configuration
3
+ #
4
+ # Strategy:
5
+ # - Use only "local" hooks so we can orchestrate via Taskfile tasks.
6
+ # - Split fast feedback (pre-commit) from deeper validation (pre-push).
7
+ # - Keep pass_filenames: false because tasks already know what to operate on.
8
+ #
9
+ # Tips:
10
+ # - Skip all hooks: git commit -m "msg" --no-verify
11
+ # - Run hooks manually: task fct
12
+ # - Update hooks: task pre-commit:update
13
+ ###############################
14
+ repos:
15
+ - repo: local
16
+ hooks:
17
+ # -------------------------------
18
+ # Pre-commit (fast) hooks
19
+ # -------------------------------
20
+ - id: pre-commit
21
+ name: "format+check+tests (quick)"
22
+ entry: bash -c 'task fct'
23
+ language: system
24
+ pass_filenames: false
25
+ files: \.py$
26
+ always_run: false
27
+
28
+ # -------------------------------
29
+ # Pre-push (deeper) hooks
30
+ # -------------------------------
31
+ - id: pre-push
32
+ name: "pre-push: ruff+pytest full"
33
+ entry: bash -c 'task fct'
34
+ language: system
35
+ pass_filenames: false
36
+ files: \.py$
37
+ stages: [pre-push]
@@ -0,0 +1,19 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - Initial project structure
12
+ - Core functionality for Cypher query language support
13
+ - ORM-like interface for graph databases
14
+ - CLI tool for interactive sessions
15
+ - Documentation system with MkDocs
16
+
17
+ ### Changed
18
+
19
+ ### Fixed
@@ -0,0 +1,110 @@
1
+ # Contributing to CypherGraphDB Core
2
+
3
+ Thank you for considering contributing to CypherGraphDB Core! This document outlines the process for contributing to the project and provides guidelines to make the process smooth for everyone involved.
4
+
5
+ ## Code of Conduct
6
+
7
+ By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
8
+
9
+ ## Getting Started
10
+
11
+ ### Prerequisites
12
+
13
+ - Python 3.13+
14
+ - Task runner (`task`)
15
+ - uv package manager
16
+
17
+ ### Setting Up Development Environment
18
+
19
+ 1. Fork the repository
20
+ 2. Clone your fork: `git clone https://github.com/petrarca/cypher-graphdb-core.git`
21
+ 3. Set up the development environment:
22
+ ```bash
23
+ cd cypher-graphdb-core
24
+ task install
25
+ ```
26
+
27
+ ## Development Workflow
28
+
29
+ ### Branch Naming
30
+
31
+ Use descriptive branch names with prefixes:
32
+ - `feature/` for new features
33
+ - `fix/` for bug fixes
34
+ - `docs/` for documentation changes
35
+ - `refactor/` for code refactoring
36
+
37
+ Example: `feature/add-neo4j-support`
38
+
39
+ ### Coding Standards
40
+
41
+ - Follow PEP 8 style guidelines
42
+ - Use ruff for linting and formatting
43
+ - Add type annotations to all functions and methods
44
+ - Write tests for new functionality
45
+ - Document your code using Google-style docstrings (see [Documentation Guide](docs/documentation-guide.md))
46
+
47
+ ### Testing
48
+
49
+ Run tests before submitting a pull request:
50
+
51
+ ```bash
52
+ task test
53
+ ```
54
+
55
+ Ensure all tests pass and aim for good test coverage.
56
+
57
+ ### Documentation
58
+
59
+ - Update documentation for any changes to the API
60
+ - Follow the [Documentation Guide](docs/documentation-guide.md) for docstring format
61
+ - Build and check documentation locally:
62
+ ```bash
63
+ task build:docs
64
+ task serve:docs
65
+ ```
66
+
67
+ ## Pull Request Process
68
+
69
+ 1. Update the README.md and documentation with details of changes if applicable
70
+ 2. Run the linter and tests to ensure code quality: `task fct`
71
+ 3. Submit a pull request with a clear description of the changes
72
+ 4. Address any feedback from code reviews
73
+
74
+ ## Commit Messages
75
+
76
+ Write clear, concise commit messages that explain the changes made. Follow the conventional commits format:
77
+
78
+ ```
79
+ <type>(<scope>): <description>
80
+
81
+ [optional body]
82
+
83
+ [optional footer]
84
+ ```
85
+
86
+ Types include: feat, fix, docs, style, refactor, test, chore
87
+
88
+ Example: `feat(cli): add support for interactive mode`
89
+
90
+ ## Reporting Bugs
91
+
92
+ When reporting bugs, include:
93
+
94
+ - A clear, descriptive title
95
+ - Steps to reproduce the issue
96
+ - Expected behavior
97
+ - Actual behavior
98
+ - Environment details (OS, Python version, etc.)
99
+
100
+ ## Feature Requests
101
+
102
+ Feature requests are welcome! Please provide:
103
+
104
+ - A clear description of the feature
105
+ - The motivation for the feature
106
+ - Any potential implementation details
107
+
108
+ ## License
109
+
110
+ By contributing to this project, you agree that your contributions will be licensed under the Apache License 2.0.