Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: CodePrometheus/skywalking-python
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: f6bbda3
Choose a base ref
...
head repository: apache/skywalking-python
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 88d30ab
Choose a head ref
  • 17 commits
  • 86 files changed
  • 8 contributors

Commits on Feb 19, 2025

  1. Configuration menu
    Copy the full SHA
    8a1c893 View commit details
    Browse the repository at this point in the history

Commits on Mar 22, 2025

  1. Configuration menu
    Copy the full SHA
    2a34c85 View commit details
    Browse the repository at this point in the history

Commits on Apr 30, 2025

  1. Configuration menu
    Copy the full SHA
    e5fdfe8 View commit details
    Browse the repository at this point in the history

Commits on May 6, 2025

  1. Configuration menu
    Copy the full SHA
    1f091ee View commit details
    Browse the repository at this point in the history

Commits on May 7, 2025

  1. Configuration menu
    Copy the full SHA
    aecf120 View commit details
    Browse the repository at this point in the history

Commits on May 11, 2025

  1. Configuration menu
    Copy the full SHA
    6ff93cb View commit details
    Browse the repository at this point in the history

Commits on Jun 11, 2025

  1. Configuration menu
    Copy the full SHA
    99434d4 View commit details
    Browse the repository at this point in the history

Commits on Sep 25, 2025

  1. Configuration menu
    Copy the full SHA
    d2fe0af View commit details
    Browse the repository at this point in the history

Commits on Jan 12, 2026

  1. Configuration menu
    Copy the full SHA
    6f8882c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    b91ebc4 View commit details
    Browse the repository at this point in the history

Commits on Apr 11, 2026

  1. feat: support Python 3.10-3.14, drop 3.8/3.9, update plugin compatibi…

    …lity (apache#386)
    
    ## Summary
    
    Support Python 3.10 through 3.14, drop end-of-life Python 3.8 and 3.9. Update plugin `support_matrix` and test services for newer library versions on 3.12+.
    
    Supersedes apache#374.
    
    ### Core agent fixes
    - Fix missing `import importlib.util` that caused `NameError` on Python 3.12+ (root cause of apache#374 failures)
    - Replace deprecated `find_module`/`load_module` with `find_spec`/`module_from_spec` in plugin loader and doc generator
    - Remove Python <3.8 `pkg_resources` fallback (dead code)
    
    ### Dependency updates
    - Python range: `>=3.10, <3.15`
    - Unpin `psutil`, `packaging`; loosen `wrapt>=1.14`, `uvloop>=0.17`
    - Remove `uwsgi` from dev deps (doesn't build on 3.12+)
    - Mark plugins/lint groups as optional; use `>=` ranges so `poetry lock` resolves on all Python versions
    - Upgrade pylint pin from `2.13.9` to `>=2.13.9`
    - Remove Poetry 1.5.1 pin on Linux (can't read Poetry 2.x lock files)
    
    ### Plugin support_matrix updates for 3.12+
    All hook points verified against new library versions:
    
    | Plugin | >=3.10 | >=3.12 | >=3.13 | >=3.14 |
    |--------|--------|--------|--------|--------|
    | bottle | 0.12.23 | 0.12.23 | 0.13 | 0.13 |
    | django | 3.2 | 3.2 | 5.1 | 5.1 |
    | flask | 2.0 | 2.0 | 2.0 | 3.0 |
    | tornado | 6.0, 6.1 | 6.0, 6.1 | 6.0, 6.1 | 6.4 |
    | pyramid | 1.10, 2.0 | 2.1 | 2.1 | 2.1 |
    | kafka-python | 2.0 | 2.3 | 2.3 | 2.3 |
    | pulsar-client | 3.3.0 | 3.9.0 | 3.9.0 | 3.9.0 |
    | psycopg | 3.0/3.1 | 3.1 | 3.2 | 3.2 |
    | httpx | 0.22/0.23 | 0.22/0.23 | 0.23 | 0.28/0.23 |
    | happybase | 1.2.0 | 1.3.0 | 1.3.0 | 1.3.0 |
    | urllib3 | 1.25/1.26 | skipped | skipped | skipped |
    
    - **urllib3**: skipped on 3.12+ — `urllib3.request.RequestMethods` was removed in urllib3 2.x, plugin needs code adaptation
    - **happybase**: upgraded to 1.3.0 for 3.12+ (thriftpy2 0.6.0 has cp312/cp313 wheels)
    
    ### Test service fixes
    - Django test services: replace removed `django.conf.urls.url` with `django.urls.path` (compatible with Django 2.0+ through 5.1)
    - Fix `testcontainers` DockerCompose API for v4 compatibility (`filepath` -> `context`)
    
    ### CI updates
    - Test matrix: Python 3.10/3.11/3.12/3.13/3.14 (dropped 3.8/3.9)
    - Fix test step: `poetry install --without plugins,lint` (avoids installing incompatible old plugin deps on host)
    - Replace unapproved `getsentry/paths-filter` with approved `dorny/paths-filter`
    - Exclude `profiling_greenlet` E2E on 3.14 (gevent doesn't have 3.14 wheels yet)
    
    ### Docker & docs
    - Update docker/Makefile for 3.10-3.14
    - Update Container.md with version range and known limitations
    - Add CLAUDE.md and Claude Code skills for plugin development
    
    ### Locally verified (with span data validation)
    - django==5.1 on Python 3.13 — PASSED
    - psycopg[binary]==3.2.* on Python 3.13 — PASSED  
    - happybase==1.3.0 on Python 3.13 — PASSED
    - httpx==0.23.* on Python 3.13 — PASSED
    - requests==2.26/2.25 on Python 3.13 — PASSED
    - Agent loads all 35 plugins on Python 3.10/3.11/3.12/3.13/3.14
    wu-sheng authored Apr 11, 2026
    Configuration menu
    Copy the full SHA
    a70b2cc View commit details
    Browse the repository at this point in the history

Commits on Apr 12, 2026

  1. feat(plugin): add urllib3 2.x support for Python 3.12+ (apache#387)

    urllib3 2.x removed `urllib3.request.RequestMethods` which the existing
    plugin hooks. Add a new plugin `sw_urllib3_v2` that hooks
    `PoolManager.request` directly (the 2.x entry point).
    
    Auto-detection logic:
    - sw_urllib3: tries `from urllib3.request import RequestMethods`.
      Succeeds on 1.x, fails on 2.x (skipped).
    - sw_urllib3_v2: checks if `RequestMethods` exists.
      If yes (1.x), returns early. If no (2.x), hooks PoolManager.
    
    Both plugins share the same test directory. The test merges
    version vectors from both plugins' support_matrix.
    
    Verified locally on Python 3.13:
    - urllib3==2.3 PASSED (span validation)
    - urllib3==2.0 PASSED (span validation)
    wu-sheng authored Apr 12, 2026
    Configuration menu
    Copy the full SHA
    78bed98 View commit details
    Browse the repository at this point in the history
  2. feat: re-enable aiohttp/psycopg2 and add falcon v3/sanic v2 plugins (a…

    …pache#389)
    
    ## Summary
    
    Re-enable previously skipped plugins, add new plugins for modern framework versions, fix E2E flaky tests, and improve plugin test stability.
    
    ### New Plugins
    - `sw_falcon_v3.py`: Falcon 3.x/4.x plugin, hooks `falcon.App.__call__`. Replaces abandoned hug-based `sw_falcon` for modern Falcon.
    - `sw_sanic_v2.py`: Sanic 21.9+ plugin, uses `@app.on_request`/`@app.on_response` signal listeners instead of monkey-patching `handle_request` (Sanic's touchup system recompiles patched methods via `compile()+exec()`, losing closure variables).
    
    ### Re-enabled Plugins
    - `sw_aiohttp.py`: Was `>=3.8: []` (fully skipped). Now tests aiohttp 3.9/3.11. Fixed `_handle_request` signature (`*args` for forward compat). Fixed `request.url` ValueError with yarl >= 1.18 (fallback URL construction).
    - `sw_psycopg2.py`: Was `>=3.10: []` (skipped). Now tests `2.9.*` on all supported Python versions.
    
    ### New Test Directories
    - `tests/plugin/web/sw_falcon_v3/`: Full integration test with Falcon-native services using `wsgiref`.
    - `tests/plugin/web/sw_sanic_v2/`: Full integration test with `single_process=True` Sanic services.
    
    ### E2E Flaky Fixes
    - `tracing-cases.yaml`: `endpointnames[0]` → `endpointnames[]` in yq select (matches endpoint at any array position).
    - `logging-cases.yaml`: Same fix.
    - `traces-list.yml`: Hardcoded `/artist-provider` → `{{ regexp . "/artist-(consumer|provider)" }}` (endpoint name is non-deterministic from OAP).
    
    ### Test Stability
    - `base.py`: Increased validation retry from 1×10s to 3× with backoff (5s/10s/15s = 30s total max). Fixes timing-sensitive tests (e.g., happybase) where segments haven't arrived at the collector yet.
    
    ### Docs
    - `Plugins.md`: Regenerated with new plugins and updated versions.
    wu-sheng authored Apr 12, 2026
    Configuration menu
    Copy the full SHA
    71640af View commit details
    Browse the repository at this point in the history
  3. fix: support module-level @Runnable with continue_tracing() (apache#391)

    ## Summary
    
    `@runnable` previously captured the trace context snapshot at decoration time, which only worked when applied **inline** during an active request. Module-level `@runnable` (the natural Python pattern) silently broke cross-thread trace linking because the snapshot was `None` at import time.
    
    ### Changes
    
    - `@runnable` now returns a `_RunnableWrapper` object with a `continue_tracing()` method
    - `continue_tracing()` captures the snapshot on the calling (parent) thread and returns a callable for use as `Thread` target — this enables module-level `@runnable`
    - `__call__` preserves the original behavior: uses the decoration-time snapshot for inline `@runnable` — **no breaking changes**
    
    ### Usage
    
    **Module-level (new, previously broken):**
    ```python
    @Runnable(op='/post')
    def post():
        requests.post(...)
    
    @app.route('/')
    def hello():
        thread = Thread(target=post.continue_tracing())  # snapshot captured here
        thread.start()
    ```
    
    **Inline (unchanged, backward compatible):**
    ```python
    @app.route('/')
    def hello():
        @Runnable(op='/post')  # snapshot captured at decoration time
        def post():
            requests.post(...)
        thread = Thread(target=post)
        thread.start()
    ```
    
    Closes apache/skywalking#11605
    wu-sheng authored Apr 12, 2026
    Configuration menu
    Copy the full SHA
    263a936 View commit details
    Browse the repository at this point in the history

Commits on Jun 25, 2026

  1. Configuration menu
    Copy the full SHA
    fd4d626 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c3e4c89 View commit details
    Browse the repository at this point in the history
  3. fix(ci): pin docker/* actions to ASF-approved SHAs in publish-docker (a…

    …pache#406)
    
    The publish-docker workflow used floating @V3 tags for docker/login-action,
    docker/setup-qemu-action, and docker/setup-buildx-action. The ASF GitHub
    Actions allow-list only approves specific SHAs for third-party actions, so
    the workflow was rejected at startup (startup_failure) on master pushes.
    
    This workflow only runs on push-to-master and release, never on PRs, so the
    rejection did not surface in PR CI — it first failed when apache#388 merged.
    
    Pin all three to the approved SHAs already used across the sibling ASF
    SkyWalking repos:
      - docker/login-action@650006c6...      # v4.2.0
      - docker/setup-qemu-action@06116385...  # v4.1.0
      - docker/setup-buildx-action@d7f5e7f5... # v4.1.0
    wu-sheng authored Jun 25, 2026
    Configuration menu
    Copy the full SHA
    88d30ab View commit details
    Browse the repository at this point in the history
Loading