From 014f4c0367737012bd1bc199b8cb27c60f05a4fd Mon Sep 17 00:00:00 2001 From: Quentin Marcou <18257721+qmarcou@users.noreply.github.com> Date: Fri, 7 Feb 2025 17:30:08 +0100 Subject: [PATCH 1/8] :children_crossing: nuke --dev CLI flags --- conda_lock/conda_lock.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/conda_lock/conda_lock.py b/conda_lock/conda_lock.py index 60b1a0ae4..cd41c4efc 100644 --- a/conda_lock/conda_lock.py +++ b/conda_lock/conda_lock.py @@ -1229,8 +1229,10 @@ def main() -> None: @click.option( "--dev-dependencies/--no-dev-dependencies", is_flag=True, - default=True, - help="include dev dependencies in the lockfile (where applicable)", + help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", + hidden=False, + is_eager=True, + callback=lambda: click.BadParameter("Deprecated option, use `--extra dev` instead.") ) @click.option( "-f", @@ -1455,7 +1457,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) @@ -1509,8 +1510,10 @@ def lock( @click.option( "--dev/--no-dev", is_flag=True, - default=DEFAULT_INSTALL_OPT_DEV, - help="install dev dependencies from the lockfile (where applicable)", + help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", + hidden=False, + is_eager=True, + callback=lambda: click.BadParameter("Deprecated option, use `--extra dev` instead.") ) @click.option( "-E", @@ -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: @@ -1617,8 +1619,10 @@ def install( @click.option( "--dev-dependencies/--no-dev-dependencies", is_flag=True, - default=True, - help="include dev dependencies in the lockfile (where applicable)", + help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", + hidden=False, + is_eager=True, + callback=lambda: click.BadParameter("Deprecated option, use `--extra dev` instead.") ) @click.option( "-k", @@ -1729,8 +1733,10 @@ def render( @click.option( "--dev-dependencies/--no-dev-dependencies", is_flag=True, - default=True, - help="include dev dependencies in the lockfile spec (where applicable)", + help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", + hidden=False, + is_eager=True, + callback=lambda: click.BadParameter("Deprecated option, use `--extra dev` instead."), ) @click.option( "-f", From 3ccf30b4f858488f767834108673a95eeb87524b Mon Sep 17 00:00:00 2001 From: Quentin Marcou <18257721+qmarcou@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:02:08 +0100 Subject: [PATCH 2/8] =?UTF-8?q?=F0=9F=92=A5=20remove=20dev=20support=20fro?= =?UTF-8?q?m=20main=20functions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conda_lock/conda_lock.py | 49 +++++++++------------------------------- 1 file changed, 11 insertions(+), 38 deletions(-) diff --git a/conda_lock/conda_lock.py b/conda_lock/conda_lock.py index cd41c4efc..06ef4aacb 100644 --- a/conda_lock/conda_lock.py +++ b/conda_lock/conda_lock.py @@ -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, @@ -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 : @@ -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( @@ -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, @@ -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, @@ -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 : @@ -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( @@ -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, @@ -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, @@ -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 : @@ -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] = [] @@ -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]: @@ -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 @@ -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, ) @@ -1069,6 +1050,13 @@ def _detect_lockfile_kind(path: pathlib.Path) -> TKindAll: "lockfiles must contain the line '@EXPLICIT'." ) +def _deprecated_dev_cli(ctx, param, value): + """A click callback function raising a deprecation error.""" + raise click.BadParameter( + "--dev-dependencies/--no-dev-dependencies and --dev/--no-dev options " + "are deprecated. Use `--extra dev` instead." + ) + def handle_no_specified_source_files( lockfile_path: Optional[pathlib.Path], @@ -1131,7 +1119,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, @@ -1165,7 +1152,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, @@ -1232,7 +1218,7 @@ def main() -> None: help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", hidden=False, is_eager=True, - callback=lambda: click.BadParameter("Deprecated option, use `--extra dev` instead.") + callback=_deprecated_dev_cli, ) @click.option( "-f", @@ -1353,7 +1339,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, @@ -1381,7 +1366,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. @@ -1423,7 +1407,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), @@ -1513,7 +1496,7 @@ def lock( help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", hidden=False, is_eager=True, - callback=lambda: click.BadParameter("Deprecated option, use `--extra dev` instead.") + callback=_deprecated_dev_cli, ) @click.option( "-E", @@ -1542,7 +1525,6 @@ def click_install( auth_file: Optional[PathLike], validate_platform: bool, log_level: TLogLevel, - dev: bool, extras: List[str], force_platform: str, ) -> None: @@ -1565,7 +1547,6 @@ def click_install( auth=auth, auth_file=auth_file, validate_platform=validate_platform, - dev=dev, extras=extras, force_platform=force_platform, ) @@ -1604,7 +1585,6 @@ def install( ) with _render_lockfile_for_install( lock_file, - include_dev_dependencies=dev, extras=set(extras), force_platform=force_platform, ) as lockfile: @@ -1622,7 +1602,7 @@ def install( help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", hidden=False, is_eager=True, - callback=lambda: click.BadParameter("Deprecated option, use `--extra dev` instead.") + callback=_deprecated_dev_cli, ) @click.option( "-k", @@ -1664,7 +1644,6 @@ 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], @@ -1692,7 +1671,6 @@ def render( lock_content, filename_template=filename_template, kinds=kind, - include_dev_dependencies=dev_dependencies, extras=set(extras), override_platform=platform, ) @@ -1736,7 +1714,7 @@ def render( help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", hidden=False, is_eager=True, - callback=lambda: click.BadParameter("Deprecated option, use `--extra dev` instead."), + callback=_deprecated_dev_cli, ) @click.option( "-f", @@ -1878,7 +1856,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], @@ -1999,7 +1976,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, @@ -2017,7 +1993,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, @@ -2030,8 +2005,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( From 8d179084d80c7c09246bdbc9857ccc5a7df3bfa0 Mon Sep 17 00:00:00 2001 From: Quentin Marcou <18257721+qmarcou@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:52:41 +0100 Subject: [PATCH 3/8] =?UTF-8?q?=F0=9F=90=9B=20set=20--dev=20as=20click=20b?= =?UTF-8?q?asic=20option=20not=20flag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit setting as a flag involved passing a default value to any CLI invocation --- conda_lock/conda_lock.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/conda_lock/conda_lock.py b/conda_lock/conda_lock.py index 06ef4aacb..04a011b4b 100644 --- a/conda_lock/conda_lock.py +++ b/conda_lock/conda_lock.py @@ -1050,6 +1050,10 @@ def _detect_lockfile_kind(path: pathlib.Path) -> TKindAll: "lockfiles must contain the line '@EXPLICIT'." ) +_deprecated_dev_help = ( + "(DEPRECATED) include (or not) dev dependencies in the lockfile (where " + "applicable)", +) def _deprecated_dev_cli(ctx, param, value): """A click callback function raising a deprecation error.""" raise click.BadParameter( @@ -1213,9 +1217,8 @@ 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", - is_flag=True, - help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", + "--dev-dependencies", "--no-dev-dependencies", + help=_deprecated_dev_help, hidden=False, is_eager=True, callback=_deprecated_dev_cli, @@ -1491,9 +1494,8 @@ def lock( type=click.Choice(["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]), ) @click.option( - "--dev/--no-dev", - is_flag=True, - help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", + "--dev", "--no-dev", + help=_deprecated_dev_help, hidden=False, is_eager=True, callback=_deprecated_dev_cli, @@ -1597,9 +1599,8 @@ def install( @main.command("render", context_settings=CONTEXT_SETTINGS) @click.option( - "--dev-dependencies/--no-dev-dependencies", - is_flag=True, - help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", + "--dev-dependencies", "--no-dev-dependencies", + help=_deprecated_dev_help, hidden=False, is_eager=True, callback=_deprecated_dev_cli, @@ -1709,9 +1710,8 @@ 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", - is_flag=True, - help="(DEPRECATED) include dev dependencies in the lockfile (where applicable)", + "--dev-dependencies", "--no-dev-dependencies", + help=_deprecated_dev_help, hidden=False, is_eager=True, callback=_deprecated_dev_cli, From 0078709e1848a3b47ed77f7c3a3d915ec4be95c0 Mon Sep 17 00:00:00 2001 From: Quentin Marcou <18257721+qmarcou@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:53:35 +0100 Subject: [PATCH 4/8] =?UTF-8?q?=E2=9C=85=20remove=20--dev=20references=20i?= =?UTF-8?q?n=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_conda_lock.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/test_conda_lock.py b/tests/test_conda_lock.py index f947dbeda..b25cebaa6 100644 --- a/tests/test_conda_lock.py +++ b/tests/test_conda_lock.py @@ -1138,7 +1138,6 @@ def test_explicit_toposorted() -> None: lockfile=lockfile, kind="explicit", platform="linux-64", - include_dev_dependencies=False, extras=set(), ) @@ -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: From 648c16948527b94df477c5616a2bab40baf70e1f Mon Sep 17 00:00:00 2001 From: Quentin Marcou <18257721+qmarcou@users.noreply.github.com> Date: Mon, 17 Feb 2025 16:19:29 +0100 Subject: [PATCH 5/8] :bug: set --dev/--no-dev to be synon boolean flags --- conda_lock/conda_lock.py | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/conda_lock/conda_lock.py b/conda_lock/conda_lock.py index 04a011b4b..96d22646c 100644 --- a/conda_lock/conda_lock.py +++ b/conda_lock/conda_lock.py @@ -1054,12 +1054,15 @@ def _detect_lockfile_kind(path: pathlib.Path) -> TKindAll: "(DEPRECATED) include (or not) dev dependencies in the lockfile (where " "applicable)", ) + + def _deprecated_dev_cli(ctx, param, value): """A click callback function raising a deprecation error.""" - raise click.BadParameter( - "--dev-dependencies/--no-dev-dependencies and --dev/--no-dev options " - "are deprecated. Use `--extra dev` instead." - ) + if value: + raise click.BadParameter( + "--dev-dependencies/--no-dev-dependencies and --dev/--no-dev " + "switches are deprecated. Use `--extra dev` instead." + ) def handle_no_specified_source_files( @@ -1217,7 +1220,9 @@ 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=False, help=_deprecated_dev_help, hidden=False, is_eager=True, @@ -1358,6 +1363,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. @@ -1494,7 +1500,9 @@ def lock( type=click.Choice(["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]), ) @click.option( - "--dev", "--no-dev", + " /--dev", " /--no-dev", "dev", + is_flag=True, + default=False, help=_deprecated_dev_help, hidden=False, is_eager=True, @@ -1529,6 +1537,7 @@ def click_install( log_level: TLogLevel, 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) @@ -1599,7 +1608,9 @@ 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=False, help=_deprecated_dev_help, hidden=False, is_eager=True, @@ -1652,6 +1663,7 @@ def render( 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) @@ -1710,7 +1722,9 @@ 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=False, help=_deprecated_dev_help, hidden=False, is_eager=True, @@ -1875,6 +1889,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) From 393d9da29bd6959cb31265dafa6d2aa8893080f3 Mon Sep 17 00:00:00 2001 From: Quentin Marcou <18257721+qmarcou@users.noreply.github.com> Date: Tue, 18 Feb 2025 12:53:07 +0100 Subject: [PATCH 6/8] =?UTF-8?q?=F0=9F=9A=91=EF=B8=8F=20remove=20extraneous?= =?UTF-8?q?=20comma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conda_lock/conda_lock.py | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/conda_lock/conda_lock.py b/conda_lock/conda_lock.py index 96d22646c..45d1e47c6 100644 --- a/conda_lock/conda_lock.py +++ b/conda_lock/conda_lock.py @@ -1050,19 +1050,22 @@ def _detect_lockfile_kind(path: pathlib.Path) -> TKindAll: "lockfiles must contain the line '@EXPLICIT'." ) + _deprecated_dev_help = ( "(DEPRECATED) include (or not) dev dependencies in the lockfile (where " - "applicable)", + "applicable)" ) -def _deprecated_dev_cli(ctx, param, value): +def _deprecated_dev_cli(ctx: Any, param: Any, value: Any) -> Any: """A click callback function raising a deprecation error.""" if value: raise click.BadParameter( "--dev-dependencies/--no-dev-dependencies and --dev/--no-dev " "switches are deprecated. Use `--extra dev` instead." - ) + ) + else: + return value def handle_no_specified_source_files( @@ -1220,7 +1223,9 @@ 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", + " /--dev-dependencies", + " /--no-dev-dependencies", + "dev_dependencies", is_flag=True, default=False, help=_deprecated_dev_help, @@ -1500,7 +1505,9 @@ def lock( type=click.Choice(["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]), ) @click.option( - " /--dev", " /--no-dev", "dev", + " /--dev", + " /--no-dev", + "dev", is_flag=True, default=False, help=_deprecated_dev_help, @@ -1537,7 +1544,7 @@ def click_install( log_level: TLogLevel, extras: List[str], force_platform: str, - dev: bool, #DEPRECATED + dev: bool, # DEPRECATED ) -> None: # bail out if we do not encounter the lockfile lock_file = pathlib.Path(lock_file) @@ -1608,7 +1615,9 @@ def install( @main.command("render", context_settings=CONTEXT_SETTINGS) @click.option( - " /--dev-dependencies", " /--no-dev-dependencies", "dev_dependencies", + " /--dev-dependencies", + " /--no-dev-dependencies", + "dev_dependencies", is_flag=True, default=False, help=_deprecated_dev_help, @@ -1663,7 +1672,7 @@ def render( lock_file: PathLike, pdb: bool, platform: Sequence[str], - dev_dependencies: bool, #DEPRECATED + dev_dependencies: bool, # DEPRECATED ) -> None: """Render multi-platform lockfile into single-platform env or explicit file""" logging.basicConfig(level=log_level) @@ -1722,7 +1731,9 @@ 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", + " /--dev-dependencies", + " /--no-dev-dependencies", + "dev_dependencies", is_flag=True, default=False, help=_deprecated_dev_help, @@ -1889,7 +1900,7 @@ def render_lock_spec( # noqa: C901 stdout: bool, pixi_project_name: Optional[str], editable: Sequence[str], - dev_dependencies: bool, #DEPRECATED + dev_dependencies: bool, # DEPRECATED ) -> None: """Combine source files into a single lock specification""" kinds = set(kind) From 3a8797c06845703446656f541a82e7af9589d30e Mon Sep 17 00:00:00 2001 From: Quentin Marcou <18257721+qmarcou@users.noreply.github.com> Date: Tue, 18 Feb 2025 13:01:56 +0100 Subject: [PATCH 7/8] =?UTF-8?q?=F0=9F=92=A1=20improve=20callback=20type=20?= =?UTF-8?q?hints?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conda_lock/conda_lock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda_lock/conda_lock.py b/conda_lock/conda_lock.py index 45d1e47c6..d5ad066ea 100644 --- a/conda_lock/conda_lock.py +++ b/conda_lock/conda_lock.py @@ -1057,7 +1057,7 @@ def _detect_lockfile_kind(path: pathlib.Path) -> TKindAll: ) -def _deprecated_dev_cli(ctx: Any, param: Any, value: Any) -> Any: +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( From f753f705f38f8166e2dab9365ed5d87d0b90341d Mon Sep 17 00:00:00 2001 From: Quentin Marcou <18257721+qmarcou@users.noreply.github.com> Date: Tue, 18 Feb 2025 14:56:06 +0100 Subject: [PATCH 8/8] :bug: fix switch deprecation --- conda_lock/conda_lock.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/conda_lock/conda_lock.py b/conda_lock/conda_lock.py index d5ad066ea..20b0617cb 100644 --- a/conda_lock/conda_lock.py +++ b/conda_lock/conda_lock.py @@ -1052,8 +1052,7 @@ def _detect_lockfile_kind(path: pathlib.Path) -> TKindAll: _deprecated_dev_help = ( - "(DEPRECATED) include (or not) dev dependencies in the lockfile (where " - "applicable)" + "(DEPRECATED) include (or not) dev dependencies in the lockfile (where applicable)" ) @@ -1061,7 +1060,7 @@ def _deprecated_dev_cli(ctx: click.Context, param: click.Parameter, value: Any) """A click callback function raising a deprecation error.""" if value: raise click.BadParameter( - "--dev-dependencies/--no-dev-dependencies and --dev/--no-dev " + "--dev-dependencies/--no-dev-dependencies (lock, render) and --dev/--no-dev (install) " "switches are deprecated. Use `--extra dev` instead." ) else: @@ -1223,10 +1222,11 @@ 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, + flag_value=True, default=False, help=_deprecated_dev_help, hidden=False, @@ -1505,10 +1505,11 @@ def lock( type=click.Choice(["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]), ) @click.option( - " /--dev", - " /--no-dev", + "--dev", + "--no-dev", "dev", is_flag=True, + flag_value=True, default=False, help=_deprecated_dev_help, hidden=False, @@ -1615,10 +1616,11 @@ 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, + flag_value=True, default=False, help=_deprecated_dev_help, hidden=False, @@ -1731,10 +1733,11 @@ 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, + flag_value=True, default=False, help=_deprecated_dev_help, hidden=False,