@@ -615,13 +615,28 @@ def _string_or_strings(value: Any, name: str) -> List[str]:
615
615
return config
616
616
617
617
618
- class Project () :
619
- """Meson project wrapper to generate Python artifacts ."""
618
+ def _validate_metadata ( metadata : pyproject_metadata . StandardMetadata ) -> None :
619
+ """Validate package metadata ."""
620
620
621
- _ALLOWED_DYNAMIC_FIELDS : ClassVar [ List [ str ]] = [
621
+ allowed_dynamic_fields = [
622
622
'version' ,
623
623
]
624
624
625
+ # check for unsupported dynamic fields
626
+ unsupported_dynamic = {key for key in metadata .dynamic if key not in allowed_dynamic_fields }
627
+ if unsupported_dynamic :
628
+ s = ', ' .join (f'"{ x } "' for x in unsupported_dynamic )
629
+ raise ConfigError (f'unsupported dynamic metadata fields: { s } ' )
630
+
631
+ # check if we are running on an unsupported interpreter
632
+ if metadata .requires_python :
633
+ metadata .requires_python .prereleases = True
634
+ if platform .python_version ().rstrip ('+' ) not in metadata .requires_python :
635
+ raise ConfigError (f'building with Python { platform .python_version ()} , version { metadata .requires_python } required' )
636
+
637
+
638
+ class Project ():
639
+ """Meson project wrapper to generate Python artifacts."""
625
640
def __init__ (
626
641
self ,
627
642
source_dir : Path ,
@@ -719,7 +734,7 @@ def __init__(
719
734
'{yellow}{bold}! Using Meson to generate the project metadata '
720
735
'(no `project` section in pyproject.toml){reset}' .format (** _STYLES )
721
736
)
722
- self . _validate_metadata ()
737
+ _validate_metadata (self . _metadata )
723
738
724
739
# set version from meson.build if dynamic
725
740
if 'version' in self ._metadata .dynamic :
@@ -761,27 +776,6 @@ def _configure(self, reconfigure: bool = False) -> None:
761
776
762
777
self ._run (['meson' , 'setup' , * setup_args ])
763
778
764
- def _validate_metadata (self ) -> None :
765
- """Check the pyproject.toml metadata and see if there are any issues."""
766
-
767
- # check for unsupported dynamic fields
768
- unsupported_dynamic = {
769
- key for key in self ._metadata .dynamic
770
- if key not in self ._ALLOWED_DYNAMIC_FIELDS
771
- }
772
- if unsupported_dynamic :
773
- s = ', ' .join (f'"{ x } "' for x in unsupported_dynamic )
774
- raise MesonBuilderError (f'Unsupported dynamic fields: { s } ' )
775
-
776
- # check if we are running on an unsupported interpreter
777
- if self ._metadata .requires_python :
778
- self ._metadata .requires_python .prereleases = True
779
- if platform .python_version ().rstrip ('+' ) not in self ._metadata .requires_python :
780
- raise MesonBuilderError (
781
- f'Unsupported Python version { platform .python_version ()} , '
782
- f'expected { self ._metadata .requires_python } '
783
- )
784
-
785
779
@cached_property
786
780
def _wheel_builder (self ) -> _WheelBuilder :
787
781
return _WheelBuilder (
0 commit comments