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