Skip to content

Conversation

@hagenw
Copy link
Member

@hagenw hagenw commented Jan 5, 2026

Closes #528

Makes sure we use the new capabilities of audbackend for Python 3.13 by depending on audbackend[all] >=2.2.3 and allow creation of Artifactory backend interface with Python 3.13

Summary by Sourcery

Update Artifactory backend support and dependency versions to enable usage with Python 3.13 while keeping safeguards for unsupported Python versions.

New Features:

  • Allow creation and use of the Artifactory backend interface on Python 3.13.

Enhancements:

  • Adjust Artifactory backend version guard to only block Python 3.14 and above.

Build:

  • Bump audbackend dependency to version 2.2.3 with all extras to leverage new Python 3.13 capabilities.

Tests:

  • Update repository tests to reflect new Python version support boundaries for the Artifactory backend.

@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Jan 5, 2026

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Updates Python version gating for the Artifactory backend from 3.13 to 3.14 and bumps the audbackend dependency to a version that supports Artifactory on Python 3.13, ensuring tests and repository logic align with the new support window.

Sequence diagram for create_backend_interface backend selection with Python 3.13 support

sequenceDiagram
    participant Repo as Repository
    participant Sys as PythonRuntime
    participant Reg as BackendRegistry
    participant AudB as AudbackendInterface

    Repo->>Sys: get version_info
    Sys-->>Repo: (major, minor, micro)

    alt Python_version>=3.14 and backend==artifactory
        Repo-->>Repo: raise ValueError
    else Python_version<3.14 or backend!=artifactory
        Repo->>Reg: lookup backend in backend_registry
        alt backend not registered
            Repo-->>Repo: raise ValueError
        else backend registered
            Reg-->>Repo: interface type (subclass of Base)
            Repo->>AudB: use returned interface type
            AudB-->>Repo: backend interface type
        end
    end
Loading

Class diagram for Repository backend interface creation with updated Python gating

classDiagram
    class Repository {
        +str backend
        +dict backend_registry
        +create_backend_interface() type
    }

    class Base {
    }

    class ArtifactoryBackendInterface {
    }

    class BackendRegistry {
        +get_interface(backend_name str) type
    }

    class PythonRuntime {
        +version_info tuple
    }

    Repository --> BackendRegistry : uses
    BackendRegistry --> Base : returns_subclass_of
    ArtifactoryBackendInterface --|> Base
    Repository --> PythonRuntime : reads_version_info

    class AudbackendPackage {
        +version str >=2.2.3
        +provides_artifactory_on_python_3_13 bool
    }

    AudbackendPackage ..> ArtifactoryBackendInterface : defines
    Repository ..> AudbackendPackage : depends_on_version_constraint
Loading

File-Level Changes

Change Details Files
Shift Artifactory backend restriction from Python 3.13 to 3.14 in repository logic.
  • Update documentation string describing when Artifactory backend is unsupported
  • Change version check to block Artifactory backend only for Python>=3.14 instead of >=3.13
  • Adjust ValueError message to reference Python>=3.14
audb/core/repository.py
Align tests with new Artifactory backend support boundary at Python 3.14.
  • Update pytest skip condition for Artifactory backend repr test from Python>=3.13 to >=3.14 with matching reason
  • Update failing-backend test case message and skip condition to use Python>=3.14 and corresponding reason text
tests/test_repository.py
Require audbackend version that supports Artifactory on Python 3.13.
  • Bump audbackend[all] minimum version from 2.2.2 to 2.2.3 in project dependencies
pyproject.toml

Assessment against linked issues

Issue Objective Addressed Explanation
#528 Allow use of the Artifactory backend on Python 3.13 so that loading databases (e.g., via audb.load) works as it does on Python <=3.12.
#528 Update dependency and backend interface restrictions/tests to reflect the restored Artifactory support on Python 3.13.

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've left some high level feedback:

  • The Python version cutoff for Artifactory support (3.14) is hard-coded in multiple places (code and tests); consider centralizing this in a single constant to avoid discrepancies on future version changes.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The Python version cutoff for Artifactory support (3.14) is hard-coded in multiple places (code and tests); consider centralizing this in a single constant to avoid discrepancies on future version changes.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@hagenw hagenw self-assigned this Jan 5, 2026
@hagenw hagenw requested a review from frankenjoe January 5, 2026 11:28
@hagenw hagenw merged commit f3a6aa5 into main Jan 12, 2026
10 checks passed
@hagenw hagenw deleted the fix-artifactory-3.13 branch January 12, 2026 08:50
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.

Artifactory backend broken for Python 3.13

3 participants