Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 29, 2025

Adds progress=True parameter to DSL query execution for debugging and monitoring query execution flow.

Changes

  • Executor (py3plex/dsl/executor.py)

    • Added progress parameter to execute_ast(), _execute_select(), and _execute_windowed_query()
    • Log execution steps: parameter binding, layer filtering, WHERE conditions, measure computation (with individual progress), ordering, limiting, and result creation
    • Include item counts at each filtering stage
  • Builder API (py3plex/dsl/builder.py)

    • Added progress parameter to QueryBuilder.execute() method
  • Tests (tests/test_dsl_progress_logging.py)

    • 8 tests covering default behavior, explicit enable/disable, multi-step queries, and edge queries
  • Example (examples/network_analysis/example_dsl_progress_logging.py)

    • Demonstrates usage and execution order visibility
  • Documentation (py3plex/dsl/__init__.py)

    • Updated module docstring with progress logging example

Usage

from py3plex.dsl import Q, L

# Default: no progress logging
result = Q.nodes().from_layers(L["social"]).execute(network)

# Enable progress logging
result = Q.nodes().from_layers(L["social"]).compute("degree").execute(network, progress=True)
# Output:
# 2025-12-29 17:06:45 - py3plex.dsl.executor - INFO - Starting DSL query execution
# 2025-12-29 17:06:45 - py3plex.dsl.executor - INFO - Step 1: Binding parameters
# 2025-12-29 17:06:45 - py3plex.dsl.executor - INFO - Step 3.1: Getting initial nodes
# 2025-12-29 17:06:45 - py3plex.dsl.executor - INFO - Found 5 initial nodes
# 2025-12-29 17:06:45 - py3plex.dsl.executor - INFO - Step 3.2: Applying layer filter
# 2025-12-29 17:06:45 - py3plex.dsl.executor - INFO - Filtered to 3 nodes in 1 layers
# 2025-12-29 17:06:45 - py3plex.dsl.executor - INFO - Step 3.4: Computing 1 measure(s)
# 2025-12-29 17:06:45 - py3plex.dsl.executor - INFO -   Computing degree (1/1)
# ...

Progress messages use Python's standard logging at INFO level. Sub-query progress is suppressed in windowed queries to reduce clutter.

Original prompt

This section details on the original issue you should resolve

<issue_title>progress for dsl steps</issue_title>
<issue_description>dsl steps should have optional logging of progress. no new md allowed</issue_description>

Comments on the Issue (you are @copilot in this section)


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI changed the title [WIP] Add optional logging of progress for DSL steps Add optional progress logging for DSL query execution steps Dec 29, 2025
Copilot AI requested a review from SkBlaz December 29, 2025 17:19
@SkBlaz SkBlaz marked this pull request as ready for review December 30, 2025 03:09
@SkBlaz SkBlaz merged commit 264056a into master Dec 30, 2025
31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

progress for dsl steps

2 participants