Skip to content

Improve functionality of "components" (specification of external dependencies & wheel builds) #202

@jonded94

Description

@jonded94

Thank you @DavidVujic for your very interesting talk at PyCon, was a joy to attend!

This project could be nice to organize code in a monorepo while also having a drastically lower onboarding cost compared to tools such as Bazel or Pants (although they try to solve slightly different things). Currently, using this tool is a bit blocked or would be cumbersome because of some design decisions about the "components" of a polylith repository:

Specification of external dependencies:

Say you'd have a bunch (aka dozens - hundreds) of components which all individually could have a bunch of external dependencies. These components now are consumed by a bunch of different projects. As far as I understand it, the projects would now to be responsible to specify the external dependencies of the components in their corresponding pyproject.toml's. This leads to a lot of repitition and also potential sources of errors.

Could there be a mechanism of the components to specify their external dependencies? This would move this responsibility away from the projects and also would have the great benefit that running poetry lock on a project which depends on components with conflicting external depencies would fail.

Wheel builds of dependencies:

Sometimes, even when there is already a nicely maintained monorepo, it can be very helpful to have the code of a component available as a wheel in an internal registry. As far as I know, there is no mechanism to build a wheel from a component, correct? This obviously would also need the capability of the component to be able to specify its external dependencies, otherwise one would have a wheel in the package registry for which it's unclear that it depends on.

Thank you very much again for this package! Please understand this purely as a question whether this could in principle be possible or would even be an intended use case for this project.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions