Repository navigation
Conversation
|
The This PR only removes a docs dependency ( Generated by Claude Code |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1128 +/- ##
==========================================
- Coverage 86.77% 86.61% -0.16%
==========================================
Files 44 44
Lines 19005 18986 -19
Branches 2965 2963 -2
==========================================
- Hits 16491 16445 -46
- Misses 1848 1872 +24
- Partials 666 669 +3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@dkropachev please note it's a breaking change for a functionality we don't know if anyone uses with our driver (even for a Cassandra cluster). |
|
This drops
Every install currently pulls in Related: #1143 removes the unused |
Code Review by QodoResolved findings 1.
|
|
CI note: This failure isn't caused by this PR:
I'll re-run the failed job once after the current run finishes. Generated by Claude Code |
|
Follow-up on the Likely mechanism (from reading the code; I haven't reproduced it locally because I have no cluster):
Proposed fix, as a separate PR (out of this PR's scope): stop letting an already-expired timer be pushed back while the request is still being dispatched. One option is for Nothing in this PR changes that path, so I'm not changing this PR. #603 tracks the test; the fix should go there or in its own PR. Generated by Claude Code |
|
@roydahan , please rebase |
DataStax Enterprise Graph queries cannot work against ScyllaDB, which has
no graph engine (graph workloads on ScyllaDB go through JanusGraph's own
stack, not this API). The code was already dead weight:
- the fluent API (cassandra.datastax.graph.fluent) could not be imported
with any gremlinpython the `graph` extra allows (>=3.7.4), because it
imports TraversalSideEffects, which newer gremlinpython removed;
- the DSE Graph integration tests were already deleted ("Remove DSE
tests"), and coverage already excluded this code.
Remove it outright, without a deprecation period. This is a breaking
change for anyone importing these names.
Removed:
- the cassandra.datastax.graph package (graphson, query, types, fluent)
and the cassandra.graph dse-driver compatibility package;
- cassandra.cluster.GraphExecutionProfile and
GraphAnalyticsExecutionProfile;
- the EXEC_PROFILE_GRAPH_DEFAULT, EXEC_PROFILE_GRAPH_SYSTEM_DEFAULT and
EXEC_PROFILE_GRAPH_ANALYTICS_DEFAULT constants and the default graph
profiles Cluster registered under them;
- Session.execute_graph() and execute_graph_async(), plus their private
helpers (_maybe_set_graph_paging, _resolve_execution_profile_options,
_transform_params, _target_analytics_master,
_on_analytics_master_result, _graph_paging_available);
- the GraphStatement branches in Session._create_response_future() and
ResponseFuture._is_keyspace_change_query();
- imports in cluster.py that only graph code used (json, int64_pack,
HostTargetingStatement, DefaultLoadBalancingPolicy, NeverRetryPolicy);
- the `graph` extra (gremlinpython), the "graph" keyword, the graph
packages from the setuptools package list, and the graph coverage
omit/exclude entries;
- gremlinpython and its dependency chain from uv.lock (the docs build
dependency was already dropped in #1139);
- graph unit tests (tests/unit/advanced/test_graph.py,
tests/unit/advanced/test_execution_profile.py and the graph case in
tests/unit/test_response_future.py) and the API doc entries.
DSE schema parsing and graph metadata in cassandra/metadata.py
(SchemaParserDSE6x, VertexMetadata, EdgeMetadata,
KeyspaceMetadata.graph_engine) are left for a follow-up change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QYcPjKDEQaQTfxpdfsFjZA
4f6ca93 to
a72f566
Compare
|
Rebased onto current master (2d02599) as a single commit, a72f566. The change itself is the same. The only adjustment is in the commit message: the docs Generated by Claude Code |
Summary
Removes DataStax Enterprise (DSE) Graph support from the driver, with no deprecation period. This supersedes the closed #1110, where review asked to "just drop this logic".
Why
execute_graphand thegraph-languagepayload options cannot work against it. Graph on ScyllaDB goes through JanusGraph's own stack, not this API.cassandra.datastax.graph.fluent) could not be imported with anygremlinpythonthegraphextra allowed (>=3.7.4), because it importsTraversalSideEffects, which newer gremlinpython removed.What's removed (BREAKING CHANGE)
Public API:
cassandra.datastax.graphpackages (graphson, query, types, fluent) andcassandra.graph(dse-driver compat shims)cassandra.cluster.GraphExecutionProfileandcassandra.cluster.GraphAnalyticsExecutionProfilecassandra.cluster.EXEC_PROFILE_GRAPH_DEFAULT,EXEC_PROFILE_GRAPH_SYSTEM_DEFAULTandEXEC_PROFILE_GRAPH_ANALYTICS_DEFAULT;Clusterno longer registers default graph profiles under themSession.execute_graph()andSession.execute_graph_async()graphextra (gremlinpython)Internals and housekeeping:
Sessionhelpers_maybe_set_graph_paging,_resolve_execution_profile_options,_transform_params,_target_analytics_master,_on_analytics_master_resultand_graph_paging_availableGraphStatementbranches inSession._create_response_future()andResponseFuture._is_keyspace_change_query()cluster.pythat only graph code used (json,int64_pack,HostTargetingStatement,DefaultLoadBalancingPolicy,NeverRetryPolicy)omit/exclude_alsolistsgremlinpythonand its dependency chain (aiohttp etc.) in the rootuv.lock, re-locked with a plainuv lockthat only removed packages. The docs build dependency was already dropped in docs: drop unused gremlinpython dependency #1139.docs/api/cassandra/cluster.rst; a "Removed" entry under Unreleased inCHANGELOG.rstOne side effect: each default graph profile wrapped the default profile's load-balancing policy in a
DefaultLoadBalancingPolicy, sopopulate/on_up/etc. reached that inner policy several times. With those profiles gone they reach it once. Host distance results don't change.Left for a follow-up
The DSE schema parsers and graph metadata in
cassandra/metadata.py(SchemaParserDSE60/67/68,TableMetadataDSE68,VertexMetadata,EdgeMetadata,KeyspaceMetadata.graph_engine, theif dse_version:block), along with the'graph'workload check intests/integration/__init__.py, are removed in #1129.cassandra/datastax/cloud, continuous paging, and the geo/DateRange types are not touched.Coverage (unit only,
scripts/coverage.sh, noSCYLLA_VERSION, same environment)cassandra/cluster.pystmts / missThe graph methods were already excluded from coverage, so the numbers barely move. The 19 statements removed from
cluster.pyare imports, constants and default-profile registration that used to run. A second branch run differed by one or two lines.Verification
python -c "import cassandra.cluster, cassandra.metadata, cassandra.query"works. Importingcassandra.graphorcassandra.datastax.graphnow raisesModuleNotFoundError.cassandra,tests,docsandpyproject.tomlfinds only the CHANGELOG text.pyflakeson the newcluster.pyreports nothing, and everyfrom cassandra... importincassandra/,tests/,benchmarks/andexamples/still resolves.compress-lz4:CASS_DRIVER_NO_SKIP=1 pytest tests/unit --ignore=tests/unit/column_encryption --ignore=tests/unit/io/test_asyncioreactor.py --ignore=tests/unit/io/test_asyncorereactor.py -k 'not test_deserialize_date_range_month': 1559 passed, 1 deselected.EVENT_LOOP_MANAGER=asyncio CASS_DRIVER_NO_SKIP=1 pytest tests/unit/io/test_asyncioreactor.py: 41 passed.uv lock --checkpasses for both lockfiles, and the unit suite (CASS_DRIVER_NO_CYTHON=1 CASS_DRIVER_NO_SKIP=1, Cython-only tests excluded) has the same failure/error set as master in that environment.make -C docs test(Sphinx with-W --keep-going): build succeeded with no warnings (before the rebase).test_execute_query_timeoutfailure is not from this PR; see the comments below.Pre-review checklist
./docs/source/. (The API docs live in./docs/api/; updated there.)Fixes:annotations to PR description. (No tracking issue)🤖 Generated with Claude Code
https://claude.ai/code/session_01QYcPjKDEQaQTfxpdfsFjZA