Skip to content

sm new scaffold emits hatchling build-system but no package dir — uv sync fails to build wheel #106

Description

@antosubash

Summary

sm new generates a pyproject.toml with a [build-system] block declaring hatchling.build as the backend, and a name = \"<app>\" project. Hatchling then tries to build a wheel for the host app and fails because there is no <app>/ directory matching the project name (a host app is not a library — there's nothing to ship).

Reproduction

uvx --from simple_module_cli sm new my-app --db sqlite --preset standard -y --no-install
cd my-app
# (after working around #1 — i.e. removing simple_module_test from dev deps)
make install

Tail of the failure:

ValueError: Unable to determine which files to ship
inside the wheel using the following heuristics:
https://hatch.pypa.io/latest/plugins/builder/wheel/#default-file-selection
The most likely cause of this is that there is no directory that matches
the name of your project (simple_module_chat).
...
hint: This usually indicates a problem with the package or the build
environment.

Generated pyproject.toml (relevant excerpt)

[project]
name = "simple_module_chat"...dependencies = ["simple_module_hosting==0.0.6", ...]
[build-system]requires = ["hatchling"]
build-backend = "hatchling.build"[dependency-groups]dev = ["..."]

Suggested fix

Host apps aren't installable libraries. The scaffold should declare them as non-package projects so uv skips the build step entirely:

[tool.uv]
package = false

…and drop the [build-system] table, since nothing builds it.

Workaround

Replace the [build-system] block with [tool.uv]\npackage = false in the generated pyproject.toml.

Environment

  • simple_module_cli 0.0.6
  • uv 0.7.5
  • macOS 25.4.0 (arm64), Python 3.12.10

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions