Skip to content

release_env

ReleaseEnv

Bases: BaseModel

Object to store the release configuration.

Attributes:

Name Type Description
build_tag str

...

python_tag str

...

is_release bool

...

is_release_pr bool

...

is_hotfix_pr bool

...

workflow Workflow

...

Source code in m/ci/release_env.py
class ReleaseEnv(BaseModel):
    """Object to store the release configuration."""

    build_tag: str
    python_tag: str
    is_release: bool
    is_release_pr: bool
    is_hotfix_pr: bool
    workflow: Workflow

get_release_env(config, env_vars, git_env)

Provide the release environment information.

Parameters:

Name Type Description Default
config Config

The m configuration.

required
env_vars EnvVars

The environment variables.

required
git_env GitEnv

The git environment.

required

Returns:

Type Description
Res[ReleaseEnv]

A ReleaseEnv instance.

Source code in m/ci/release_env.py
def get_release_env(
    config: Config,
    env_vars: EnvVars,
    git_env: GitEnv,
) -> Res[ReleaseEnv]:
    """Provide the release environment information.

    Args:
        config: The m configuration.
        env_vars: The environment variables.
        git_env: The git environment.

    Returns:
        A `ReleaseEnv` instance.
    """
    is_release = git_env.is_release(config)
    is_release_pr = git_env.is_release_pr(config)
    is_hotfix_pr = git_env.is_hotfix_pr(config)
    gh_latest = git_env.release.tag_name if git_env.release else ''
    if not config.uses_free_flow():
        check_result = _extra_checks(
            config,
            git_env,
            is_release_pr=is_release_pr,
            is_hotfix_pr=is_hotfix_pr,
        )
        if isinstance(check_result, Bad):
            return check_result
    return one_of(lambda: [
        ReleaseEnv(
            build_tag=build_tag,
            python_tag=python_tag,
            is_release=is_release,
            is_release_pr=is_release_pr,
            is_hotfix_pr=is_hotfix_pr,
            workflow=config.workflow,
        )
        for _ in _verify_version(
            config,
            git_env,
            gh_latest,
            is_release_pr=is_release_pr or is_hotfix_pr,
            is_release=is_release,
        )
        for build_tag in git_env.get_build_tag(config, env_vars.run_id)
        for python_tag in git_env.get_py_tag(config, env_vars.run_id)
    ])