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.
- cypher_graphdb-0.1.1/.env.age.example +32 -0
- cypher_graphdb-0.1.1/.env.example +19 -0
- cypher_graphdb-0.1.1/.env.memgraph.example +29 -0
- cypher_graphdb-0.1.1/.github/workflows/ci.yml +144 -0
- cypher_graphdb-0.1.1/.github/workflows/publish.yml +86 -0
- cypher_graphdb-0.1.1/.github/workflows/release.yml +25 -0
- cypher_graphdb-0.1.1/.gitignore +109 -0
- cypher_graphdb-0.1.1/.pre-commit-config.yaml +37 -0
- cypher_graphdb-0.1.1/CHANGELOG.md +19 -0
- cypher_graphdb-0.1.1/CONTRIBUTING.md +110 -0
- cypher_graphdb-0.1.1/LICENSE.md +190 -0
- cypher_graphdb-0.1.1/PKG-INFO +497 -0
- cypher_graphdb-0.1.1/README.md +433 -0
- cypher_graphdb-0.1.1/Taskfile.yml +208 -0
- cypher_graphdb-0.1.1/cli +29 -0
- cypher_graphdb-0.1.1/docs/TODO.md +28 -0
- cypher_graphdb-0.1.1/docs/changelog.md +1 -0
- cypher_graphdb-0.1.1/docs/css/material.css +4 -0
- cypher_graphdb-0.1.1/docs/css/mkdocstrings.css +42 -0
- cypher_graphdb-0.1.1/docs/css/style.css +24 -0
- cypher_graphdb-0.1.1/docs/design/duckdb-migration.md +135 -0
- cypher_graphdb-0.1.1/docs/design/falkordb-integration.md +89 -0
- cypher_graphdb-0.1.1/docs/design/hierarchical-export-format.md +278 -0
- cypher_graphdb-0.1.1/docs/design/multiple-statement-execution.md +399 -0
- cypher_graphdb-0.1.1/docs/design/parameterized-queries-for-typed-models.md +356 -0
- cypher_graphdb-0.1.1/docs/design/query-result-immutable-design.md +514 -0
- cypher_graphdb-0.1.1/docs/design/read-only-mode.md +192 -0
- cypher_graphdb-0.1.1/docs/design/stateless-multi-graph-support.md +140 -0
- cypher_graphdb-0.1.1/docs/documentation-guide.md +156 -0
- cypher_graphdb-0.1.1/docs/examples/docstring_examples.py +122 -0
- cypher_graphdb-0.1.1/docs/index.md +7 -0
- cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/backends/age/index.md +1 -0
- cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/backends/index.md +1 -0
- cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/cli/index.md +1 -0
- cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/cypher/index.md +1 -0
- cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/index.md +1 -0
- cypher_graphdb-0.1.1/docs/reference/cypher_graphdb/tools/index.md +1 -0
- cypher_graphdb-0.1.1/docs/usage/index.md +1 -0
- cypher_graphdb-0.1.1/mkdocs.yml +163 -0
- cypher_graphdb-0.1.1/pyproject.toml +135 -0
- cypher_graphdb-0.1.1/scripts/gen_ref_nav.py +36 -0
- cypher_graphdb-0.1.1/setup.cfg +4 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/__init__.py +73 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/__main__.py +9 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/args.py +149 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backend.py +292 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backendprovider.py +160 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backends/__init__.py +1 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/__init__.py +14 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/agegraphdb.py +671 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/agerowfactories.py +109 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/agesearch.py +37 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/agesqlbuilder.py +136 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backends/age/agtype.py +27 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backends/memgraph/__init__.py +16 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backends/memgraph/memgraphdb.py +537 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/backends/memgraph/memgraphrowfactories.py +225 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cardinality.py +17 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/__init__.py +12 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/app.py +522 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/banner.py +26 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/command_manager.py +93 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/command_map.py +54 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/command_registry.py +102 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/__init__.py +112 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/add_graph_command.py +43 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/apply_config_command.py +41 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/base_command.py +119 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/change_dbgraph_command.py +30 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/clear_graph_command.py +43 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/commit_command.py +30 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/connect_command.py +33 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/create_dbgraph_command.py +30 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/create_edge_command.py +58 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/create_linked_node_command.py +84 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/create_node_command.py +36 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dbgraph_exists_command.py +30 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/delete_graphobj_command.py +47 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/disconnect_command.py +33 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/drop_dbgraph_command.py +30 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_backends_command.py +55 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_dbgraphs_command.py +32 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_labels_command.py +32 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_models_command.py +63 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_parsed_query_command.py +74 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_schema_command.py +61 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/dump_statistics_command.py +66 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/execute_cypher_command.py +101 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/execute_file_command.py +111 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/exit_command.py +30 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/export_graph_command.py +49 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/fetch_all_command.py +54 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/fetch_edges_command.py +46 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/fetch_nodes_command.py +46 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/format_output_command.py +56 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/get_command.py +44 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/gid_command.py +49 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/graph_op_command.py +40 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/graph_to_tree_command.py +64 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/help_command.py +31 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/import_graph_command.py +40 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/last_result_op_command.py +32 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/load_models_command.py +57 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/resolve_edges_command.py +58 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/rollback_command.py +30 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/search_command.py +79 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/set_command.py +50 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/sql_command.py +54 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/commands/update_graphobj_command.py +48 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/completer.py +518 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/config.py +57 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/exporter.py +106 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/file_executor.py +204 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/graphdata.py +190 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/graphdb.py +439 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/_overview.md +47 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/_template.md +96 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/add_graph.md +356 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/exit.md +3 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/export_graph.md +231 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/import_graph.md +163 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help/last_result.md +297 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/help.py +53 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/importer.py +106 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/prompt.py +87 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/promptparser.py +312 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/provider.py +62 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/renderer.py +401 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/runtime.py +83 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cli/schema_cmd.py +197 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/command_reader.py +102 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/config.py +54 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/Cypher.interp +368 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/Cypher.tokens +173 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherBaseListener.java +1275 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherLexer.interp +418 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherLexer.java +1178 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherLexer.tokens +173 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherListener.java +1039 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/.antlr/CypherParser.java +10434 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/Cypher.g4 +804 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/Cypher.interp +368 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/Cypher.tokens +173 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/CypherLexer.interp +418 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/CypherLexer.py +833 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/CypherLexer.tokens +173 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/CypherListener.py +940 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/CypherParser.py +9820 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypher/__init__.py +0 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypherbuilder.py +177 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/__init__.py +15 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/batch.py +152 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/connection.py +225 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/criteria.py +118 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/cyphergraphdb.py +1127 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/result.py +54 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/schema.py +183 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/search.py +81 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/sql.py +86 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cyphergraphdb/stream_mixin.py +113 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypherjson.py +49 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/cypherparser.py +343 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/dbpool.py +391 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/decorators.py +478 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/display.py +48 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/exceptions.py +20 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/graphops.py +500 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/main.py +62 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/modelinfo.py +232 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/modelprovider.py +724 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/models.py +578 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/options.py +62 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/schema/__init__.py +17 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/schema/converter.py +311 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/schema/core.py +217 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/schema/generator.py +178 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/settings.py +107 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/statistics.py +158 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/__init__.py +50 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/base_exporter.py +30 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/base_importer.py +30 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/csv_exporter.py +83 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/csv_importer.py +39 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/csv_source.py +98 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/data_flattener.py +279 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/excel_exporter.py +76 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/excel_importer.py +59 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/excel_row_source.py +48 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/file_exporter.py +158 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/file_importer.py +142 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/hierarchical_exporter.py +514 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/hierarchical_importer.py +431 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/hierarchical_row_source.py +259 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/json_importer.py +81 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/json_yaml_data_source.py +139 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/row_collector.py +277 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/row_set.py +22 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/row_source.py +24 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/tabular_importer.py +270 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/tools/yaml_importer.py +81 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/utils/__init__.py +115 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/utils/collection_utils.py +485 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/utils/column_utils.py +165 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/utils/connection_utils.py +318 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/utils/conversion_utils.py +389 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/utils/core_utils.py +193 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/utils/schema_merge.py +447 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/utils/schema_utils.py +102 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/utils/settings_repr.py +86 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb/utils/string_utils.py +759 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/PKG-INFO +497 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/SOURCES.txt +264 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/dependency_links.txt +1 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/entry_points.txt +2 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/requires.txt +54 -0
- cypher_graphdb-0.1.1/src/cypher_graphdb.egg-info/top_level.txt +1 -0
- cypher_graphdb-0.1.1/tests/README.md +142 -0
- cypher_graphdb-0.1.1/tests/conftest.py +47 -0
- cypher_graphdb-0.1.1/tests/integration/__init__.py +1 -0
- cypher_graphdb-0.1.1/tests/integration/conftest.py +193 -0
- cypher_graphdb-0.1.1/tests/integration/test_create_or_merge.py +302 -0
- cypher_graphdb-0.1.1/tests/integration/test_example.py +81 -0
- cypher_graphdb-0.1.1/tests/integration/test_parameters.py +263 -0
- cypher_graphdb-0.1.1/tests/integration/test_read_only_mode.py +168 -0
- cypher_graphdb-0.1.1/tests/integration/test_streaming.py +318 -0
- cypher_graphdb-0.1.1/tests/test_json_schema_loading.py +653 -0
- cypher_graphdb-0.1.1/tests/test_json_schema_vs_decorators.py +374 -0
- cypher_graphdb-0.1.1/tests/unit/README.md +222 -0
- cypher_graphdb-0.1.1/tests/unit/__init__.py +1 -0
- cypher_graphdb-0.1.1/tests/unit/cli/__init__.py +1 -0
- cypher_graphdb-0.1.1/tests/unit/cli/test_cmd_map.py +159 -0
- cypher_graphdb-0.1.1/tests/unit/cli/test_command_registry.py +225 -0
- cypher_graphdb-0.1.1/tests/unit/mock_backend.py +164 -0
- cypher_graphdb-0.1.1/tests/unit/test_backend_capabilities.py +149 -0
- cypher_graphdb-0.1.1/tests/unit/test_column_utils.py +218 -0
- cypher_graphdb-0.1.1/tests/unit/test_command_reader.py +154 -0
- cypher_graphdb-0.1.1/tests/unit/test_cypherbuilder.py +261 -0
- cypher_graphdb-0.1.1/tests/unit/test_cypherparser.py +387 -0
- cypher_graphdb-0.1.1/tests/unit/test_dbpool.py +65 -0
- cypher_graphdb-0.1.1/tests/unit/test_dict_access_mixin.py +182 -0
- cypher_graphdb-0.1.1/tests/unit/test_extend_relation_decorator.py +148 -0
- cypher_graphdb-0.1.1/tests/unit/test_extend_relations.py +236 -0
- cypher_graphdb-0.1.1/tests/unit/test_graph_id_zero.py +13 -0
- cypher_graphdb-0.1.1/tests/unit/test_graphops.py +244 -0
- cypher_graphdb-0.1.1/tests/unit/test_model_inheritance.py +243 -0
- cypher_graphdb-0.1.1/tests/unit/test_modelinfo.py +111 -0
- cypher_graphdb-0.1.1/tests/unit/test_modelprovider_loading.py +460 -0
- cypher_graphdb-0.1.1/tests/unit/test_modelprovider_schemas.py +110 -0
- cypher_graphdb-0.1.1/tests/unit/test_models.py +211 -0
- cypher_graphdb-0.1.1/tests/unit/test_schema_converter.py +493 -0
- cypher_graphdb-0.1.1/tests/unit/tools/__init__.py +0 -0
- cypher_graphdb-0.1.1/tests/unit/tools/test_data_flattener.py +217 -0
- cypher_graphdb-0.1.1/tests/unit/tools/test_exporters.py +93 -0
- cypher_graphdb-0.1.1/tests/unit/tools/test_hierarchical_importer.py +267 -0
- cypher_graphdb-0.1.1/tests/unit/tools/test_json_yaml_data_source.py +248 -0
- cypher_graphdb-0.1.1/tests/unit/tools/test_resource_management.py +87 -0
- cypher_graphdb-0.1.1/tests/unit/tools/test_tabular_import.py +54 -0
- cypher_graphdb-0.1.1/tests/unit/utils/test_collection_utils.py +171 -0
- cypher_graphdb-0.1.1/tests/unit/utils/test_connection_utils.py +229 -0
- cypher_graphdb-0.1.1/tests/unit/utils/test_conversion_utils.py +35 -0
- cypher_graphdb-0.1.1/tests/unit/utils/test_core_utils.py +64 -0
- cypher_graphdb-0.1.1/tests/unit/utils/test_schema_merge.py +241 -0
- cypher_graphdb-0.1.1/tests/unit/utils/test_schema_utils.py +166 -0
- cypher_graphdb-0.1.1/tests/unit/utils/test_settings_repr.py +296 -0
- cypher_graphdb-0.1.1/tests/unit/utils/test_string_utils.py +240 -0
- 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.
|