Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Notion of version in the case of bumping dependencies #21

@HuM4NoiD

Description

@HuM4NoiD

Consider the following case of a mono repo:
root pyproject.toml

[tool.monas]
packages = ["monorepo-core", "monorepo-utils", "monorepo-framework"]
version = "0.1.1"
python-version = "3.11"

Project Structure:

.
├── monorepo-core
│   ├── monorepo_core
│   │   └── __init__.py
│   ├── pyproject.toml
│   └── README.md
├── monorepo-framework
│   ├── monorepo_framework
│   │   └── __init__.py
│   ├── pyproject.toml
│   └── README.md
├── monorepo-utils
│   ├── monorepo_utils
│   │   └── __init__.py
│   ├── pyproject.toml
│   └── README.md
├── pyproject.toml
└── setup.py

All of these packages are distributable
monorepo-framework depends on monorepo-core and monorepo-utils

The dependency is added to monorepo-framework using the commands:

$ monas add monorepo-core==0.1.1 --include monorepo-framework
$ monas add monorepo-utils==0.1.1 --include monorepo-framework

This explicit version is used to show that if the version of my monorepo is x.y.z all its packages should be at version x.y.z and they should depend on siblings with x.y.z

The project is bumped from 0.1.1 to 0.1.2 and on reviewing pyproject.toml of monorepo-framework we get something like:

[project]
# ...
dependencies = [
    "monorepo-core==0.1.1",
    "monorepo-utils==0.1.1",
]
# ...

The dependencies are still stuck on 0.1.1. on installation in a project or via pip, version 0.1.2 of monorepo-framework would pull 0.1.1 of monorepo-core and monorepo-utils.

On the other hand if I avoid using explicit version like this:

$ monas add monorepo-core --include monorepo-framework
$ monas add monorepo-utils --include monorepo-framework

I run into a case where installing monorepo-framework using pip install monorepo-framework==0.1.1 I would pull monorepo-core==0.1.2, monorepo-utils==0.1.2 if 0.1.2 is released, going against the intended setup.

I wanted to know if targeting sibling dependency versioning schemes was a target of monas and what could be done to support my use case of keeping all packages and their interdependencies on the same version

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