@@ -65,26 +65,39 @@ def register_default_group(group: str) -> None:
6565 This ensures that dependencies in the group will be installed by default.
6666 """
6767 if group == "dev" :
68+ # Note, if the "dev" group is missing already then then we'll respect the
69+ # user's choice since they presumably would have added it themselves. So, we
70+ # won't register in that case.
6871 return
6972
70- ensure_dev_group_is_defined ()
71-
72- try :
73- default_groups = get_pyproject_value (["tool" , "uv" , "default-groups" ])
74- if not isinstance (default_groups , list ):
75- default_groups = []
76- except KeyError :
77- default_groups = []
73+ default_groups = get_default_groups ()
7874
75+ # Choose which groups we want to add
7976 groups_to_add = []
8077 if group not in default_groups :
8178 groups_to_add .append (group )
8279 # Add "dev" if section is empty or if we're adding a new group and "dev" isn't present
8380 if (not default_groups or group != "dev" ) and "dev" not in default_groups :
81+ ensure_dev_group_is_defined ()
8482 groups_to_add .append ("dev" )
8583
8684 if groups_to_add :
87- extend_pyproject_list (["tool" , "uv" , "default-groups" ], groups_to_add )
85+ add_default_groups (groups = groups_to_add )
86+
87+
88+ def add_default_groups (groups : list [str ]) -> None :
89+ extend_pyproject_list (["tool" , "uv" , "default-groups" ], groups )
90+
91+
92+ def get_default_groups () -> list [str ]:
93+ try :
94+ default_groups = get_pyproject_value (["tool" , "uv" , "default-groups" ])
95+ if not isinstance (default_groups , list ):
96+ default_groups = []
97+ except KeyError :
98+ default_groups = []
99+
100+ return default_groups
88101
89102
90103def ensure_dev_group_is_defined () -> None :
@@ -112,8 +125,6 @@ def add_deps_to_group(deps: list[Dependency], group: str) -> None:
112125 if usethis_config .frozen :
113126 box_print (f"Install the dependenc{ ies } { deps_str } ." )
114127
115- register_default_group (group ) # Register the group before adding dependencies
116-
117128 for dep in to_add_deps :
118129 try :
119130 call_uv_subprocess (
@@ -125,6 +136,9 @@ def add_deps_to_group(deps: list[Dependency], group: str) -> None:
125136 msg += (Path .cwd () / "pyproject.toml" ).read_text ()
126137 raise UVDepGroupError (msg ) from None
127138
139+ # Register the group - don't do this before adding the deps in case that step fails
140+ register_default_group (group )
141+
128142
129143def is_dep_satisfied_in (dep : Dependency , * , in_ : list [Dependency ]) -> bool :
130144 return any (_is_dep_satisfied_by (dep , by = by ) for by in in_ )
0 commit comments