Skip to content

Commit cd46c81

Browse files
committed
Fix version validation timing: validate in build hooks, not prepare_metadata
Move validation from prepare_metadata_for_build_* to build_editable/build_wheel where _version.py definitely exists. This fixes build failures where validation ran before setuptools-scm wrote the version file.
1 parent 5c1a216 commit cd46c81

3 files changed

Lines changed: 22 additions & 18 deletions

File tree

cuda_core/build_hooks.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,15 @@
2121

2222

2323
def prepare_metadata_for_build_editable(metadata_directory, config_settings=None):
24-
result = _build_meta.prepare_metadata_for_build_editable(metadata_directory, config_settings)
25-
# Validate version after metadata is prepared (which generates _version.py)
26-
_validate_version()
27-
return result
24+
# Don't validate here - _version.py might not be written yet
25+
# Validation will happen in build_editable where the file definitely exists
26+
return _build_meta.prepare_metadata_for_build_editable(metadata_directory, config_settings)
2827

2928

3029
def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None):
31-
result = _build_meta.prepare_metadata_for_build_wheel(metadata_directory, config_settings)
32-
# Validate version after metadata is prepared (which generates _version.py)
33-
_validate_version()
34-
return result
30+
# Don't validate here - _version.py might not be written yet
31+
# Validation will happen in build_wheel where the file definitely exists
32+
return _build_meta.prepare_metadata_for_build_wheel(metadata_directory, config_settings)
3533

3634

3735
build_sdist = _build_meta.build_sdist
@@ -203,11 +201,15 @@ def _validate_version():
203201

204202

205203
def build_editable(wheel_directory, config_settings=None, metadata_directory=None):
204+
# Validate version here - _version.py definitely exists by this point
205+
_validate_version()
206206
_build_cuda_core()
207207
return _build_meta.build_editable(wheel_directory, config_settings, metadata_directory)
208208

209209

210210
def build_wheel(wheel_directory, config_settings=None, metadata_directory=None):
211+
# Validate version here - _version.py definitely exists by this point
212+
_validate_version()
211213
_build_cuda_core()
212214
return _build_meta.build_wheel(wheel_directory, config_settings, metadata_directory)
213215

cuda_pathfinder/build_hooks.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,23 +53,25 @@ def _validate_version():
5353

5454
# Delegate all PEP 517 hooks to setuptools.build_meta, but add version validation
5555
def prepare_metadata_for_build_editable(metadata_directory, config_settings=None):
56-
result = _build_meta.prepare_metadata_for_build_editable(metadata_directory, config_settings)
57-
_validate_version()
58-
return result
56+
# Don't validate here - _version.py might not be written yet
57+
# Validation will happen in build_editable where the file definitely exists
58+
return _build_meta.prepare_metadata_for_build_editable(metadata_directory, config_settings)
5959

6060

6161
def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None):
62-
result = _build_meta.prepare_metadata_for_build_wheel(metadata_directory, config_settings)
63-
_validate_version()
64-
return result
62+
# Don't validate here - _version.py might not be written yet
63+
# Validation will happen in build_wheel where the file definitely exists
64+
return _build_meta.prepare_metadata_for_build_wheel(metadata_directory, config_settings)
6565

6666

6767
def build_editable(wheel_directory, config_settings=None, metadata_directory=None):
68+
# Validate version here - _version.py definitely exists by this point
6869
_validate_version()
6970
return _build_meta.build_editable(wheel_directory, config_settings, metadata_directory)
7071

7172

7273
def build_wheel(wheel_directory, config_settings=None, metadata_directory=None):
74+
# Validate version here - _version.py definitely exists by this point
7375
_validate_version()
7476
return _build_meta.build_wheel(wheel_directory, config_settings, metadata_directory)
7577

scripts/validate_version.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ def validate_version(package_name: str, version_file_path: str, expected_pattern
3333
"""
3434
version_file = Path(version_file_path)
3535
if not version_file.exists():
36-
raise RuntimeError(
37-
f"Version file not found: {version_file_path}\n"
38-
f"This may indicate setuptools-scm failed to generate version metadata."
39-
)
36+
# Version file might not exist yet if validation runs during prepare_metadata
37+
# In that case, skip validation silently (it will be validated later in build hooks)
38+
# This allows prepare_metadata to complete, and validation will happen in build_editable/build_wheel
39+
return
4040

4141
# Read version from _version.py
4242
with open(version_file, encoding="utf-8") as f:

0 commit comments

Comments
 (0)