fix pypi publish: use wheel-only build, remove build hook (#804)

This commit is contained in:
Adil Hafeez 2026-03-05 12:54:40 -08:00 committed by GitHub
parent 8f7a8a8a17
commit a1508f4de1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 6 additions and 55 deletions

View file

@ -30,7 +30,7 @@ jobs:
enable-cache: true enable-cache: true
- name: Build package - name: Build package
run: uv build run: uv build --wheel
- name: Publish to PyPI - name: Publish to PyPI
env: env:

View file

@ -69,7 +69,6 @@ RUN pip install --no-cache-dir uv
COPY cli/pyproject.toml ./ COPY cli/pyproject.toml ./
COPY cli/uv.lock ./ COPY cli/uv.lock ./
COPY cli/README.md ./ COPY cli/README.md ./
COPY cli/hatch_build.py ./
COPY config/plano_config_schema.yaml /config/plano_config_schema.yaml COPY config/plano_config_schema.yaml /config/plano_config_schema.yaml
COPY config/envoy.template.yaml /config/envoy.template.yaml COPY config/envoy.template.yaml /config/envoy.template.yaml

1
cli/.gitignore vendored
View file

@ -1 +0,0 @@
planoai/data/

View file

@ -1,44 +0,0 @@
"""Hatch build hook to bundle config files from the repo into the package.
Single source of truth stays in ../config/. This hook copies them into
planoai/data/ so they end up inside both the sdist and wheel.
"""
import os
import shutil
from hatchling.builders.hooks.plugin.interface import BuildHookInterface
FILES = {
"plano_config_schema.yaml": "plano_config_schema.yaml",
"envoy.template.yaml": "envoy.template.yaml",
}
class CustomBuildHook(BuildHookInterface):
def initialize(self, version, build_data):
root = os.path.dirname(__file__)
# Repo checkout: ../config/ | sdist: config/
candidates = [
os.path.join(root, "..", "config"),
os.path.join(root, "config"),
]
dest_dir = os.path.join(root, "planoai", "data")
os.makedirs(dest_dir, exist_ok=True)
for src_name, dest_name in FILES.items():
dest = os.path.join(dest_dir, dest_name)
copied = False
for cand in candidates:
src = os.path.join(cand, src_name)
if os.path.exists(src):
shutil.copy2(src, dest)
copied = True
break
if not copied and not os.path.exists(dest):
raise FileNotFoundError(
f"Config file {src_name} not found. "
"Build from the repo root or ensure files are present."
)
build_data["force_include"][dest_dir] = "planoai/data"

View file

@ -37,15 +37,12 @@ path = "planoai/__init__.py"
[tool.hatch.build.targets.wheel] [tool.hatch.build.targets.wheel]
packages = ["planoai"] packages = ["planoai"]
[tool.hatch.build.targets.wheel.force-include]
"../config/plano_config_schema.yaml" = "planoai/data/plano_config_schema.yaml"
"../config/envoy.template.yaml" = "planoai/data/envoy.template.yaml"
[tool.hatch.build.targets.sdist] [tool.hatch.build.targets.sdist]
include = ["planoai/**", "hatch_build.py"] include = ["planoai/**"]
[tool.hatch.build.targets.sdist.force-include]
"../config/plano_config_schema.yaml" = "config/plano_config_schema.yaml"
"../config/envoy.template.yaml" = "config/envoy.template.yaml"
[tool.hatch.build]
hooks.custom.path = "hatch_build.py"
[tool.pytest.ini_options] [tool.pytest.ini_options]
addopts = ["-v"] addopts = ["-v"]