8000 Deprecate --dev related switches by qmarcou · Pull Request #775 · conda/conda-lock · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Deprecate --dev related switches #775

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: main
8000 Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 56 additions & 48 deletions conda_lock/conda_lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,6 @@ def make_lock_files( # noqa: C901
channel_overrides: Optional[Sequence[str]] = None,
virtual_package_spec: Optional[pathlib.Path] = None,
update: Optional[Sequence[str]] = None,
include_dev_dependencies: bool = True,
filename_template: Optional[str] = None,
filter_categories: bool = False,
extras: Optional[AbstractSet[str]] = None,
Expand Down Expand Up @@ -295,8 +294,6 @@ def make_lock_files( # noqa: C901
update :
Names of dependencies to update to their latest versions, regardless
of whether the constraint in src_files has changed.
include_dev_dependencies :
Include development dependencies in explicit or env output
filename_template :
Format for names of rendered explicit or env files. Must include {platform}.
extras :
Expand All @@ -317,8 +314,6 @@ def make_lock_files( # noqa: C901

# Compute lock specification
required_categories = {"main"}
if include_dev_dependencies:
required_categories.add("dev")
if extras is not None:
required_categories.update(extras)
lock_spec = make_lock_spec(
Expand Down Expand Up @@ -458,7 +453,6 @@ def make_lock_files( # noqa: C901
do_render(
new_lock_content,
kinds=[k for k in kinds if k != "lock"],
include_dev_dependencies=include_dev_dependencies,
filename_template=filename_template,
extras=extras,
check_input_hash=check_input_hash,
Expand All @@ -468,7 +462,6 @@ def make_lock_files( # noqa: C901
def do_render(
lockfile: Lockfile,
kinds: Sequence[Union[Literal["env"], Literal["explicit"]]],
include_dev_dependencies: bool = True,
filename_template: Optional[str] = None,
extras: Optional[AbstractSet[str]] = None,
check_input_hash: bool = False,
Expand All @@ -482,8 +475,6 @@ def do_render(
Lock content
kinds :
Lockfile formats to render
include_dev_dependencies :
Include development dependencies in output
filename_template :
Format for the lock file names. Must include {platform}.
extras :
Expand Down Expand Up @@ -519,7 +510,6 @@ def do_render(
if filename_template:
context = {
"platform": plat,
"dev-dependencies": str(include_dev_dependencies).lower(),
"input-hash": lockfile.metadata.content_hash,
"version": distribution("conda_lock").version,
"timestamp": datetime.datetime.now(datetime.timezone.utc).strftime(
Expand All @@ -544,7 +534,6 @@ def do_render(
print(f"Rendering lockfile(s) for {plat}...", file=sys.stderr)
lockfile_contents = render_lockfile_for_platform(
lockfile=lockfile,
include_dev_dependencies=include_dev_dependencies,
extras=extras,
kind=kind,
platform=plat,
Expand Down Expand Up @@ -576,7 +565,6 @@ def do_render(
def render_lockfile_for_platform( # noqa: C901
*,
lockfile: Lockfile,
include_dev_dependencies: bool,
extras: Optional[AbstractSet[str]],
kind: Union[Literal["env"], Literal["explicit"]],
platform: str,
Expand All @@ -590,8 +578,6 @@ def render_lockfile_for_platform( # noqa: C901
----------
lockfile :
Locked package versions
include_dev_dependencies :
Include development dependencies in output
extras :
Optional dependency groups to include in output
kind :
Expand All @@ -611,7 +597,6 @@ def render_lockfile_for_platform( # noqa: C901
categories_to_install: Set[str] = {
"main",
*(extras or []),
*(["dev"] if include_dev_dependencies else []),
}

conda_deps: List[LockedDependency] = []
Expand Down Expand Up @@ -982,7 +967,6 @@ def _strip_auth_from_lockfile(lockfile: str) -> str:
@contextmanager
def _render_lockfile_for_install(
filename: pathlib.Path,
include_dev_dependencies: bool = True,
extras: Optional[AbstractSet[str]] = None,
force_platform: Optional[str] = None,
) -> Iterator[pathlib.Path]:
Expand All @@ -993,8 +977,6 @@ def _render_lockfile_for_install(
----------
filename :
Path to conda-lock.yml
include_dev_dependencies :
Include development dependencies in output
extras :
Optional dependency groups to include in output

Expand Down Expand Up @@ -1043,7 +1025,6 @@ def _render_lockfile_for_install(
lockfile=lock_content,
kind="explicit",
platform=platform,
include_dev_dependencies=include_dev_dependencies,
extras=extras,
suppress_warning_for_pip_and_explicit=True,
)
Expand All @@ -1070,6 +1051,22 @@ def _detect_lockfile_kind(path: pathlib.Path) -> TKindAll:
)


_deprecated_dev_help = (
"(DEPRECATED) include (or not) dev dependencies in the lockfile (where applicable)"
)


def _deprecated_dev_cli(ctx: click.Context, param: click.Parameter, value: Any) -> Any:
"""A click callback function raising a deprecation error."""
if value:
raise click.BadParameter(
"--dev-dependencies/--no-dev-dependencies (lock, render) and --dev/--no-dev (install) "
"switches are deprecated. Use `--extra dev` instead."
)
else:
return value


def handle_no_specified_source_files(
lockfile_path: Optional[pathlib.Path],
) -> List[pathlib.Path]:
Expand Down Expand Up @@ -1131,7 +1128,6 @@ def run_lock(
platforms: Optional[Sequence[str]] = None,
mamba: bool = False,
micromamba: bool = False,
include_dev_dependencies: bool = True,
channel_overrides: Optional[Sequence[str]] = None,
filename_template: Optional[str] = None,
kinds: Optional[Sequence[TKindAll]] = None,
Expand Down Expand Up @@ -1165,7 +1161,6 @@ def run_lock(
kinds=kinds or DEFAULT_KINDS,
lockfile_path=lockfile_path,
filename_template=filename_template,
include_dev_dependencies=include_dev_dependencies,
extras=extras,
check_input_hash=check_input_hash,
filter_categories=filter_categories,
Expand Down Expand Up @@ -1227,10 +1222,16 @@ def main() -> None:
help="""Override the channels to use when solving the environment. These will replace the channels as listed in the various source files.""",
)
@click.option(
"--dev-dependencies/--no-dev-dependencies",
"--dev-dependencies",
"--no-dev-dependencies",
"dev_dependencies",
is_flag=True,
default=True,
help="include dev dependencies in the lockfile (where applicable)",
flag_value=True,
default=False,
help=_deprecated_dev_help,
hidden=False,
is_eager=True,
callback=_deprecated_dev_cli,
)
@click.option(
"-f",
Expand Down Expand Up @@ -1351,7 +1352,6 @@ def lock(
micromamba: bool,
platform: Sequence[str],
channel_overrides: Sequence[str],
dev_dependencies: bool,
files: Sequence[PathLike],
kind: Sequence[Union[Literal["lock"], Literal["env"], Literal["explicit"]]],
filename_template: str,
Expand All @@ -1368,6 +1368,7 @@ def lock(
update: Optional[Sequence[str]] = None,
metadata_choices: Sequence[str] = (),
metadata_yamls: Sequence[PathLike] = (),
dev_dependencies: bool = False, # DEPRECATED
) -> None:
"""Generate fully reproducible lock files for conda environments.

Expand All @@ -1379,7 +1380,6 @@ def lock(

\b
platform: The platform this lock file was generated for (conda subdir).
dev-dependencies: Whether or not dev dependencies are included in this lock file.
input-hash: A sha256 hash of the lock file input specification.
version: The version of conda-lock used to generate this lock file.
timestamp: The approximate timestamp of the output file in ISO8601 basic format.
Expand Down Expand Up @@ -1421,7 +1421,6 @@ def lock(
platforms=platform,
mamba=mamba,
micromamba=micromamba,
include_dev_dependencies=dev_dependencies,
channel_overrides=channel_overrides,
kinds=kind,
lockfile_path=None if lockfile is None else pathlib.Path(lockfile),
Expand Down Expand Up @@ -1455,7 +1454,6 @@ def lock(
DEFAULT_INSTALL_OPT_COPY = False
DEFAULT_INSTALL_OPT_VALIDATE_PLATFORM = True
DEFAULT_INSTALL_OPT_LOG_LEVEL = "INFO"
DEFAULT_INSTALL_OPT_DEV = True
DEFAULT_INSTALL_OPT_LOCK_FILE = pathlib.Path(DEFAULT_LOCKFILE_NAME)


Expand Down Expand Up @@ -1507,10 +1505,16 @@ def lock(
type=click.Choice(["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]),
)
@click.option(
"--dev/--no-dev",
"--dev",
"--no-dev",
"dev",
is_flag=True,
default=DEFAULT_INSTALL_OPT_DEV,
help="install dev dependencies from the lockfile (where applicable)",
flag_value=True,
default=False,
help=_deprecated_dev_help,
hidden=False,
is_eager=True,
callback=_deprecated_dev_cli,
)
@click.option(
"-E",
Expand Down Expand Up @@ -1539,9 +1543,9 @@ def click_install(
auth_file: Optional[PathLike],
validate_platform: bool,
log_level: TLogLevel,
dev: bool,
extras: List[str],
force_platform: str,
dev: bool, # DEPRECATED
) -> None:
# bail out if we do not encounter the lockfile
lock_file = pathlib.Path(lock_file)
Expand All @@ -1562,7 +1566,6 @@ def click_install(
auth=auth,
auth_file=auth_file,
validate_platform=validate_platform,
dev=dev,
extras=extras,
force_platform=force_platform,
)
Expand All @@ -1579,7 +1582,6 @@ def install(
auth: Optional[str] = None,
auth_file: Optional[PathLike] = None,
validate_platform: bool = DEFAULT_INSTALL_OPT_VALIDATE_PLATFORM,
dev: bool = DEFAULT_INSTALL_OPT_DEV,
extras: Optional[List[str]] = None,
force_platform: Optional[str] = None,
) -> None:
Expand All @@ -1602,7 +1604,6 @@ def install(
)
with _render_lockfile_for_install(
lock_file,
include_dev_dependencies=dev,
extras=set(extras),
force_platform=force_platform,
) as lockfile:
Expand All @@ -1615,10 +1616,16 @@ def install(

@main.command("render", context_settings=CONTEXT_SETTINGS)
@click.option(
"--dev-dependencies/--no-dev-dependencies",
"--dev-dependencies",
"--no-dev-dependencies",
"dev_dependencies",
is_flag=True,
default=True,
help="include dev dependencies in the lockfile (where applicable)",
flag_value=True,
default=False,
help=_deprecated_dev_help,
hidden=False,
is_eager=True,
callback=_deprecated_dev_cli,
)
@click.option(
"-k",
Expand Down Expand Up @@ -1660,14 +1667,14 @@ def install(
@click.pass_context
def render(
ctx: click.Context,
dev_dependencies: bool,
kind: Sequence[Union[Literal["env"], Literal["explicit"]]],
filename_template: str,
extras: List[str],
log_level: TLogLevel,
lock_file: PathLike,
pdb: bool,
platform: Sequence[str],
dev_dependencies: bool, # DEPRECATED
) -> None:
"""Render multi-platform lockfile into single-platform env or explicit file"""
logging.basicConfig(level=log_level)
Expand All @@ -1688,7 +1695,6 @@ def render(
lock_content,
filename_template=filename_template,
kinds=kind,
include_dev_dependencies=dev_dependencies,
extras=set(extras),
override_platform=platform,
)
Expand Down Expand Up @@ -1727,10 +1733,16 @@ def render(
help="""Override the channels to use when solving the environment. These will replace the channels as listed in the various source files.""",
)
@click.option(
"--dev-dependencies/--no-dev-dependencies",
"--dev-dependencies",
"--no-dev-dependencies",
"dev_dependencies",
is_flag=True,
default=True,
help="include dev dependencies in the lockfile spec (where applicable)",
flag_value=True,
default=False,
help=_deprecated_dev_help,
hidden=False,
is_eager=True,
callback=_deprecated_dev_cli,
)
@click.option(
"-f",
Expand Down Expand Up @@ -1872,7 +1884,6 @@ def render_lock_spec( # noqa: C901
micromamba: Optional[bool],
platform: Sequence[str],
channel_overrides: Sequence[str],
dev_dependencies: bool,
files: Sequence[PathLike],
kind: Sequence[Literal["pixi.toml"]],
filename_template: Optional[str],
Expand All @@ -1892,6 +1903,7 @@ def render_lock_spec( # noqa: C901
stdout: bool,
pixi_project_name: Optional[str],
editable: Sequence[str],
dev_dependencies: bool, # DEPRECATED
) -> None:
"""Combine source files into a single lock specification"""
kinds = set(kind)
Expand Down Expand Up @@ -1993,7 +2005,6 @@ def render_lock_spec( # noqa: C901
stdout=stdout,
platform_overrides=platform,
channel_overrides=channel_overrides,
include_dev_dependencies=dev_dependencies,
extras=set(extras),
filter_categories=filter_categories,
lockfile_path=lockfile_path,
Expand All @@ -2011,7 +2022,6 @@ def do_render_lockspec(
stdout: bool,
platform_overrides: Optional[Sequence[str]] = None,
channel_overrides: Optional[Sequence[str]] = None,
include_dev_dependencies: bool = True,
extras: Optional[AbstractSet[str]] = None,
filter_categories: bool = False,
lockfile_path: Optional[pathlib.Path] = None,
Expand All @@ -2024,8 +2034,6 @@ def do_render_lockspec(
src_files = handle_no_specified_source_files(lockfile_path)

required_categories = {"main"}
if include_dev_dependencies:
required_categories.add("dev")
if extras is not None:
required_categories.update(extras)
lock_spec = make_lock_spec(
Expand Down
7 changes: 3 additions & 4 deletions tests/test_conda_lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -1138,7 +1138,6 @@ def test_explicit_toposorted() -> None:
lockfile=lockfile,
kind="explicit",
platform="linux-64",
include_dev_dependencies=False,
extras=set(),
)

Expand Down Expand Up @@ -2178,12 +2177,12 @@ def test_install(
platform = "linux-64"

lock_filename_template = (
request.node.name + "conda-{platform}-{dev-dependencies}.lock"
request.node.name + "conda-{platform}.lock"
)
if kind == "env":
lock_filename = request.node.name + "conda-linux-64-true.lock.yml"
lock_filename = request.node.name + "conda-linux-64.lock.yml"
elif kind == "explicit":
lock_filename = request.node.name + "conda-linux-64-true.lock"
lock_filename = request.node.name + "conda-linux-64.lock"
elif kind == "lock":
lock_filename = "conda-lock.yml"
else:
Expand Down
Loading
0