2525 select_ruff_rules ,
2626)
2727from usethis ._integrations .uv .call import call_uv_subprocess
28- from usethis ._integrations .uv .deps import (
29- Dependency ,
30- add_deps_to_group ,
31- remove_deps_from_group ,
32- )
3328from usethis ._integrations .uv .init import ensure_pyproject_toml
3429from usethis ._tool import (
3530 ALL_TOOLS ,
@@ -53,7 +48,7 @@ def use_codespell(*, remove: bool = False) -> None:
5348
5449 if not remove :
5550 if not PreCommitTool ().is_used ():
56- add_deps_to_group ( tool .dev_deps , "dev" )
51+ tool .add_dev_deps ( )
5752 if is_bitbucket_used ():
5853 add_bitbucket_steps_in_default (tool .get_bitbucket_steps ())
5954 else :
@@ -65,7 +60,7 @@ def use_codespell(*, remove: bool = False) -> None:
6560 remove_bitbucket_steps_from_default (tool .get_bitbucket_steps ())
6661 tool .remove_pyproject_configs ()
6762 tool .remove_pre_commit_repo_configs ()
68- remove_deps_from_group ( tool .dev_deps , "dev" )
63+ tool .remove_dev_deps ( )
6964 tool .remove_managed_files ()
7065
7166
@@ -75,16 +70,12 @@ def use_coverage(*, remove: bool = False) -> None:
7570 ensure_pyproject_toml ()
7671
7772 if not remove :
78- deps = tool .dev_deps
79- if PytestTool ().is_used ():
80- deps += [Dependency (name = "pytest-cov" )]
81- add_deps_to_group (deps , "test" )
82-
73+ tool .add_test_deps ()
8374 tool .add_pyproject_configs ()
8475 tool .print_how_to_use ()
8576 else :
8677 tool .remove_pyproject_configs ()
87- remove_deps_from_group ([ * tool .dev_deps , Dependency ( name = "pytest-cov" )], "test" )
78+ tool .remove_test_deps ( )
8879 tool .remove_managed_files ()
8980
9081
@@ -94,7 +85,7 @@ def use_deptry(*, remove: bool = False) -> None:
9485 ensure_pyproject_toml ()
9586
9687 if not remove :
97- add_deps_to_group ( tool .dev_deps , "dev" )
88+ tool .add_dev_deps ( )
9889 if PreCommitTool ().is_used ():
9990 tool .add_pre_commit_repo_configs ()
10091 elif is_bitbucket_used ():
@@ -105,33 +96,34 @@ def use_deptry(*, remove: bool = False) -> None:
10596 tool .remove_pre_commit_repo_configs ()
10697 tool .remove_pyproject_configs ()
10798 remove_bitbucket_steps_from_default (tool .get_bitbucket_steps ())
108- remove_deps_from_group ( tool .dev_deps , "dev" )
99+ tool .remove_dev_deps ( )
109100 tool .remove_managed_files ()
110101
111102
112103def use_pre_commit (* , remove : bool = False ) -> None :
113104 tool = PreCommitTool ()
114105 pyproject_fmt_tool = PyprojectFmtTool ()
115106 codespell_tool = CodespellTool ()
107+ requirements_txt_tool = RequirementsTxtTool ()
116108
117109 ensure_pyproject_toml ()
118110
119111 if not remove :
120- add_deps_to_group ( tool .dev_deps , "dev" )
112+ tool .add_dev_deps ( )
121113 _add_all_tools_pre_commit_configs ()
122114
123115 # We will use pre-commit instead of project-installed dependencies:
124116 if pyproject_fmt_tool .is_used ():
125- remove_deps_from_group ( pyproject_fmt_tool .dev_deps , "dev" )
117+ pyproject_fmt_tool .remove_dev_deps ( )
126118 pyproject_fmt_tool .add_pyproject_configs ()
127- PyprojectFmtTool () .print_how_to_use ()
119+ pyproject_fmt_tool .print_how_to_use ()
128120 if codespell_tool .is_used ():
129- remove_deps_from_group ( codespell_tool .dev_deps , "dev" )
121+ codespell_tool .remove_dev_deps ( )
130122 codespell_tool .add_pyproject_configs ()
131- CodespellTool () .print_how_to_use ()
123+ codespell_tool .print_how_to_use ()
132124
133- if RequirementsTxtTool () .is_used ():
134- RequirementsTxtTool () .print_how_to_use ()
125+ if requirements_txt_tool .is_used ():
126+ requirements_txt_tool .print_how_to_use ()
135127
136128 if not get_hook_names ():
137129 add_placeholder_hook ()
@@ -151,21 +143,21 @@ def use_pre_commit(*, remove: bool = False) -> None:
151143 uninstall_pre_commit_hooks ()
152144
153145 remove_pre_commit_config ()
154- remove_deps_from_group ( tool .dev_deps , "dev" )
146+ tool .remove_dev_deps ( )
155147
156148 # Need to add a new way of running some hooks manually if they are not dev
157149 # dependencies yet - explain to the user.
158150 if pyproject_fmt_tool .is_used ():
159- add_deps_to_group ( pyproject_fmt_tool .dev_deps , "dev" )
160- PyprojectFmtTool () .print_how_to_use ()
151+ pyproject_fmt_tool .add_dev_deps ( )
152+ pyproject_fmt_tool .print_how_to_use ()
161153 if codespell_tool .is_used ():
162- add_deps_to_group ( codespell_tool .dev_deps , "dev" )
163- CodespellTool () .print_how_to_use ()
154+ codespell_tool .add_dev_deps ( )
155+ codespell_tool .print_how_to_use ()
164156
165157 # Likewise, explain how to manually generate the requirements.txt file, since
166158 # they're not going to do it via pre-commit anymore.
167- if RequirementsTxtTool () .is_used ():
168- RequirementsTxtTool () .print_how_to_use ()
159+ if requirements_txt_tool .is_used ():
160+ requirements_txt_tool .print_how_to_use ()
169161 tool .remove_managed_files ()
170162
171163
@@ -200,7 +192,7 @@ def use_pyproject_fmt(*, remove: bool = False) -> None:
200192
201193 if not remove :
202194 if not PreCommitTool ().is_used ():
203- add_deps_to_group ( tool .dev_deps , "dev" )
195+ tool .add_dev_deps ( )
204196 if is_bitbucket_used ():
205197 add_bitbucket_steps_in_default (tool .get_bitbucket_steps ())
206198 else :
@@ -212,7 +204,7 @@ def use_pyproject_fmt(*, remove: bool = False) -> None:
212204 remove_bitbucket_steps_from_default (tool .get_bitbucket_steps ())
213205 tool .remove_pyproject_configs ()
214206 tool .remove_pre_commit_repo_configs ()
215- remove_deps_from_group ( tool .dev_deps , "dev" )
207+ tool .remove_dev_deps ( )
216208 tool .remove_managed_files ()
217209
218210
@@ -235,11 +227,7 @@ def use_pytest(*, remove: bool = False) -> None:
235227 ensure_pyproject_toml ()
236228
237229 if not remove :
238- deps = tool .dev_deps
239- if CoverageTool ().is_used ():
240- deps += [Dependency (name = "pytest-cov" )]
241- add_deps_to_group (deps , "test" )
242-
230+ tool .add_test_deps ()
243231 tool .add_pyproject_configs ()
244232 if RuffTool ().is_used ():
245233 select_ruff_rules (tool .get_associated_ruff_rules ())
@@ -262,8 +250,7 @@ def use_pytest(*, remove: bool = False) -> None:
262250 if RuffTool ().is_used ():
263251 deselect_ruff_rules (tool .get_associated_ruff_rules ())
264252 tool .remove_pyproject_configs ()
265- remove_deps_from_group ([* tool .dev_deps , Dependency (name = "pytest-cov" )], "test" )
266-
253+ tool .remove_test_deps ()
267254 remove_pytest_dir () # Last, since this is a manual step
268255
269256 if CoverageTool ().is_used ():
@@ -339,7 +326,7 @@ def use_ruff(*, remove: bool = False) -> None:
339326 ]
340327
341328 if not remove :
342- add_deps_to_group ( tool .dev_deps , "dev" )
329+ tool .add_dev_deps ( )
343330 tool .add_pyproject_configs ()
344331 select_ruff_rules (rules )
345332 ignore_ruff_rules (ignored_rules )
@@ -353,5 +340,5 @@ def use_ruff(*, remove: bool = False) -> None:
353340 tool .remove_pre_commit_repo_configs ()
354341 remove_bitbucket_steps_from_default (tool .get_bitbucket_steps ())
355342 tool .remove_pyproject_configs ()
356- remove_deps_from_group ( tool .dev_deps , "dev" )
343+ tool .remove_dev_deps ( )
357344 tool .remove_managed_files ()
0 commit comments