8181 HEAD_SHA : ${{ github.sha }}
8282 run : |
8383 set -euo pipefail
84- keys=(infra python spark gfql cypher_frontend_ci benchmarks ai docs core plugins networkx docs_test schema_lane pandas_compat graphviz_lane neo4j_lane build_package dgl_lane networkx_test_only docs_test_only benchmarks_only narrow_python_only)
84+ keys=(infra python spark gfql cypher_frontend_ci benchmarks ai docs core plugins networkx docs_test schema_lane pandas_compat graphviz_lane neo4j_lane build_package dgl_lane networkx_test_only docs_test_only benchmarks_only graphviz_only neo4j_only build_package_only narrow_python_only)
8585
8686 emit_all() {
8787 # $1 = "true" or "false" — emit the same value for every key
@@ -393,8 +393,25 @@ jobs:
393393 '^CHANGELOG\.md$' \
394394 '^benchmarks/'
395395
396+ emit_only graphviz_only \
397+ '^CHANGELOG\.md$' \
398+ '^graphistry/plotter\.py$' \
399+ '^graphistry/tests/.*graphviz.*\.py$' \
400+ '^bin/test-graphviz\.sh$' \
401+ '^requirements/test-graphviz-py.*\.lock$'
402+
403+ emit_only neo4j_only \
404+ '^CHANGELOG\.md$' \
405+ '^docker/.*neo4j' \
406+ '^graphistry/bolt_util\.py$' \
407+ '^graphistry/tests/test_bolt_util\.py$'
408+
409+ emit_only build_package_only \
410+ '^CHANGELOG\.md$' \
411+ '^graphistry/py\.typed$'
412+
396413 narrow_python_only="false"
397- if [[ "${networkx_test_only}" == "true" || "${docs_test_only}" == "true" || "${benchmarks_only}" == "true" ]]; then
414+ if [[ "${networkx_test_only}" == "true" || "${docs_test_only}" == "true" || "${benchmarks_only}" == "true" || "${graphviz_only}" == "true" || "${neo4j_only}" == "true" || "${build_package_only}" == "true" ]]; then
398415 narrow_python_only="true"
399416 fi
400417 echo "narrow_python_only=${narrow_python_only}" >> "$GITHUB_OUTPUT"
@@ -1026,9 +1043,9 @@ jobs:
10261043
10271044
10281045 test-minimal-python-rest :
1029- # Middle versions (3.9-3.13) + non-GFQL deferred files, run after sentinel + GFQL core pass .
1030- needs : [changes, test-minimal-python, test-gfql-core, generate-lockfiles]
1031- if : ${{ success( ) }}
1046+ # Middle versions (3.9-3.13) + non-GFQL deferred files.
1047+ needs : [changes, test-minimal-python, generate-lockfiles]
1048+ if : ${{ ((needs.changes.outputs.python == 'true' && needs.changes.outputs.narrow_python_only != 'true') || needs.changes.outputs.core == 'true' || needs.changes.outputs.infra == 'true' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule') && !(needs.changes.outputs.docs_only_latest == 'true' && (github.event_name == 'push' || github.event_name == 'pull_request') ) }}
10321049 runs-on : ubuntu-latest
10331050 timeout-minutes : 15
10341051
@@ -1404,9 +1421,8 @@ jobs:
14041421
14051422
14061423 test-core-python :
1407- needs : [ test-minimal-python, test-gfql-core, generate-lockfiles ]
1408- # Inherit condition from test-minimal-python
1409- if : ${{ success() }}
1424+ needs : [changes, test-minimal-python, generate-lockfiles]
1425+ if : ${{ ((needs.changes.outputs.python == 'true' && needs.changes.outputs.narrow_python_only != 'true') || needs.changes.outputs.core == 'true' || needs.changes.outputs.infra == 'true' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule') && !(needs.changes.outputs.docs_only_latest == 'true' && (github.event_name == 'push' || github.event_name == 'pull_request')) }}
14101426 runs-on : ubuntu-latest
14111427 timeout-minutes : 8
14121428
@@ -1465,9 +1481,8 @@ jobs:
14651481 retention-days : 14
14661482
14671483 test-graphviz :
1468- needs : [ test-minimal-python, test-gfql-core, generate-lockfiles ]
1469- # Inherit condition from test-minimal-python
1470- if : ${{ success() }}
1484+ needs : [changes, test-minimal-python, generate-lockfiles]
1485+ if : ${{ ((needs.changes.outputs.python == 'true' && needs.changes.outputs.narrow_python_only != 'true') || needs.changes.outputs.graphviz_lane == 'true' || needs.changes.outputs.core == 'true' || needs.changes.outputs.infra == 'true' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule') && !(needs.changes.outputs.docs_only_latest == 'true' && (github.event_name == 'push' || github.event_name == 'pull_request')) }}
14711486 runs-on : ubuntu-latest
14721487 timeout-minutes : 10 # Accommodate retry logic: 3 attempts × 2min + 1.5min backoff/cleanup
14731488
@@ -1532,8 +1547,8 @@ jobs:
15321547 ./bin/test-graphviz.sh
15331548
15341549 test-polars :
1535- needs : [ test-minimal-python, test-gfql-core, generate-lockfiles ]
1536- if : ${{ success( ) }}
1550+ needs : [changes, test-minimal-python, test-gfql-core, generate-lockfiles]
1551+ if : ${{ ((needs.changes.outputs.python == 'true' && needs.changes.outputs.narrow_python_only != 'true') || needs.changes.outputs.gfql == 'true' || needs.changes.outputs.pandas_compat == 'true' || needs.changes.outputs.core == 'true' || needs.changes.outputs.infra == 'true' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule') && !(needs.changes.outputs.docs_only_latest == 'true' && (github.event_name == 'push' || github.event_name == 'pull_request') ) }}
15371552 runs-on : ubuntu-latest
15381553 timeout-minutes : 10
15391554
@@ -1908,9 +1923,8 @@ jobs:
19081923
19091924
19101925 test-neo4j :
1911- needs : [ test-minimal-python, test-gfql-core ]
1912- # Inherit condition from test-minimal-python
1913- if : ${{ success() }}
1926+ needs : [changes, test-minimal-python]
1927+ if : ${{ ((needs.changes.outputs.python == 'true' && needs.changes.outputs.narrow_python_only != 'true') || needs.changes.outputs.neo4j_lane == 'true' || needs.changes.outputs.core == 'true' || needs.changes.outputs.infra == 'true' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule') && !(needs.changes.outputs.docs_only_latest == 'true' && (github.event_name == 'push' || github.event_name == 'pull_request')) }}
19141928 runs-on : ubuntu-latest
19151929 timeout-minutes : 3
19161930 env :
@@ -1930,9 +1944,8 @@ jobs:
19301944
19311945
19321946 test-build :
1933- needs : [ test-minimal-python, test-gfql-core, generate-lockfiles ]
1934- # Inherit condition from test-minimal-python
1935- if : ${{ success() }}
1947+ needs : [changes, test-minimal-python, generate-lockfiles]
1948+ if : ${{ ((needs.changes.outputs.python == 'true' && needs.changes.outputs.narrow_python_only != 'true') || needs.changes.outputs.build_package == 'true' || needs.changes.outputs.core == 'true' || needs.changes.outputs.infra == 'true' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule') && !(needs.changes.outputs.docs_only_latest == 'true' && (github.event_name == 'push' || github.event_name == 'pull_request')) }}
19361949 runs-on : ubuntu-latest
19371950 timeout-minutes : 2
19381951
0 commit comments