Skip to content

Commit 78d9eb0

Browse files
committed
Refactor package name derivation logic in main function
This commit enhances the package name derivation process by introducing a new variable, derived_package_name, which is used to construct the package name for subfolder builds. The logic now checks for an existing package name argument and derives the name from the root project name and subfolder name if not provided. This change improves clarity and consistency in how package names are handled during version resolution and publishing.
1 parent 55ce250 commit 78d9eb0

File tree

1 file changed

+28
-21
lines changed

1 file changed

+28
-21
lines changed

src/python_package_folder/python_package_folder.py

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)