Skip to content

Split providers into "regular" python sub-projects - each with own pyproject.toml #43304

@potiuk

Description

@potiuk

Currently all providers after #42505 are all in a single "providers" project. This has gone through several teething problems (mainly connected to bugs in uv and ways how to integrate development environment with IDEs such as Pycharm and VSCode, but seems that those problems are largely solved now and we can possibly move to the next step where each provider will have it's own pyproject.toml with its own dependencies and the workspace setting of uv will allow us to resolve all those dependencies together and keep our setup with constraints, CI image that is used for CI worfklow and breeze and local development of providers with Breeze.

This has a number of changes to be implemented. Ideally each provider will have it's own complete "directory" where things are kept together:

  • code
  • docs
  • tests
  • system tests
  • dependencies defined in pyproject.toml
  • ability to build provider package straight using PEP-compliant frontends without having to copy providers code and generating some of the files (init.py, pyproject.toml, READMEs etc.)

The package building is currently done dynamically via breeze commands, where code is extracted and pacakge is prepared, also dependency information (including devel dependencies) is kept in provider.yaml. Ideally all the information that is needed to generate dependencies and build packages, should be moved to pyproject.toml and our breeze/CI automation should retrieve information from there, rather than provider.yaml.

This can be done in stages:

  1. we could only move code and tests first - no docs or other files
  2. we could do it provider-by-provider if we temporarily implement incremental change in our tooling to support both cases

Or it could be done via automated script that would convert all providers at once - this was earlier POC's implementing this approach (not nearly close to be complete - just testing viability of such approach) that could be used as base for the new solution.:

Script: #28291
Result of runningn the script: #28292

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions