@@ -216,6 +216,27 @@ def build_cmd() -> None:
216216
217217 # Resolve version via conventional commits if not provided and needed
218218 resolved_version = args .version
219+
220+ # Derive package name for subfolder builds (used for both version resolution and publishing)
221+ derived_package_name = None
222+ if is_subfolder :
223+ if args .package_name :
224+ derived_package_name = args .package_name
225+ else :
226+ # Derive package name: {root_project_name}-{subfolder_name}
227+ root_project_name = _get_root_project_name (project_root )
228+ subfolder_name = src_dir .name .replace ("_" , "-" ).replace (
229+ " " , "-"
230+ ).lower ().strip ("-" )
231+
232+ if root_project_name :
233+ # Normalize root project name (replace underscores/hyphens consistently)
234+ root_name_normalized = root_project_name .replace ("_" , "-" ).lower ()
235+ derived_package_name = f"{ root_name_normalized } -{ subfolder_name } "
236+ else :
237+ # Fallback to just subfolder name if root project name not found
238+ derived_package_name = subfolder_name
239+
219240 if not resolved_version and not args .analyze_only :
220241 # Version is needed for subfolder builds or when publishing main package
221242 if is_subfolder or args .publish :
@@ -243,35 +264,18 @@ def build_cmd() -> None:
243264 if is_subfolder :
244265 # Workflow 1: subfolder build
245266 # src_dir is guaranteed to be relative to project_root due to is_subfolder check
246- if args .package_name :
247- package_name = args .package_name
248- else :
249- # Derive package name: {root_project_name}-{subfolder_name}
250- root_project_name = _get_root_project_name (project_root )
251- subfolder_name = src_dir .name .replace ("_" , "-" ).replace (
252- " " , "-"
253- ).lower ().strip ("-" )
254-
255- if root_project_name :
256- # Normalize root project name (replace underscores/hyphens consistently)
257- root_name_normalized = root_project_name .replace ("_" , "-" ).lower ()
258- package_name = f"{ root_name_normalized } -{ subfolder_name } "
259- else :
260- # Fallback to just subfolder name if root project name not found
261- package_name = subfolder_name
262-
263267 subfolder_rel_path = src_dir .relative_to (project_root )
264268
265269 # Log the package name being used for version query
266270 logger = logging .getLogger (__name__ )
267271 logger .info (
268- f"Querying registry for package name: '{ package_name } ' "
272+ f"Querying registry for package name: '{ derived_package_name } ' "
269273 f"(derived from src_dir: '{ src_dir .name } ', root_project: { _get_root_project_name (project_root )} , args.package_name: { args .package_name } )"
270274 )
271275
272276 resolved_version , error_details = resolve_version (
273277 project_root ,
274- package_name = package_name ,
278+ package_name = derived_package_name ,
275279 subfolder_path = subfolder_rel_path ,
276280 repository = repository ,
277281 repository_url = repository_url ,
@@ -332,7 +336,7 @@ def build_cmd() -> None:
332336 skip_existing = args .skip_existing ,
333337 version = args .version ,
334338 restore_versioning = not args .no_restore_versioning ,
335- package_name = args .package_name ,
339+ package_name = derived_package_name if is_subfolder else args .package_name ,
336340 dependency_group = args .dependency_group ,
337341 )
338342 else :
@@ -342,7 +346,10 @@ def build_cmd() -> None:
342346 if is_subfolder :
343347 from .subfolder_build import SubfolderBuildConfig
344348
345- if args .package_name :
349+ # Use derived_package_name if available, otherwise derive it again
350+ if derived_package_name is not None :
351+ package_name = derived_package_name
352+ elif args .package_name :
346353 package_name = args .package_name
347354 else :
348355 # Derive package name: {root_project_name}-{subfolder_name}
0 commit comments