@@ -722,13 +722,28 @@ def _string_or_strings(value: Any, name: str) -> List[str]:
722
722
return config
723
723
724
724
725
- class Project () :
726
- """Meson project wrapper to generate Python artifacts ."""
725
+ def _validate_metadata ( metadata : pyproject_metadata . StandardMetadata ) -> None :
726
+ """Validate package metadata ."""
727
727
728
- _ALLOWED_DYNAMIC_FIELDS : ClassVar [ List [ str ]] = [
728
+ allowed_dynamic_fields = [
729
729
'version' ,
730
730
]
731
731
732
+ # check for unsupported dynamic fields
733
+ unsupported_dynamic = {key for key in metadata .dynamic if key not in allowed_dynamic_fields }
734
+ if unsupported_dynamic :
735
+ s = ', ' .join (f'"{ x } "' for x in unsupported_dynamic )
736
+ raise ConfigError (f'unsupported dynamic metadata fields: { s } ' )
737
+
738
+ # check if we are running on an unsupported interpreter
739
+ if metadata .requires_python :
740
+ metadata .requires_python .prereleases = True
741
+ if platform .python_version ().rstrip ('+' ) not in metadata .requires_python :
742
+ raise ConfigError (f'building with Python { platform .python_version ()} , version { metadata .requires_python } required' )
743
+
744
+
745
+ class Project ():
746
+ """Meson project wrapper to generate Python artifacts."""
732
747
def __init__ (
733
748
self ,
734
749
source_dir : Path ,
@@ -825,7 +840,7 @@ def __init__(
825
840
'{yellow}{bold}! Using Meson to generate the project metadata '
826
841
'(no `project` section in pyproject.toml){reset}' .format (** _STYLES )
827
842
)
828
- self . _validate_metadata ()
843
+ _validate_metadata (self . _metadata )
829
844
830
845
# set version from meson.build if dynamic
831
846
if 'version' in self ._metadata .dynamic :
@@ -866,27 +881,6 @@ def _configure(self, reconfigure: bool = False) -> None:
866
881
867
882
self ._run (['meson' , 'setup' , * setup_args ])
868
883
869
- def _validate_metadata (self ) -> None :
870
- """Check the pyproject.toml metadata and see if there are any issues."""
871
-
872
- # check for unsupported dynamic fields
873
- unsupported_dynamic = {
874
- key for key in self ._metadata .dynamic
875
- if key not in self ._ALLOWED_DYNAMIC_FIELDS
876
- }
877
- if unsupported_dynamic :
878
- s = ', ' .join (f'"{ x } "' for x in unsupported_dynamic )
879
- raise MesonBuilderError (f'Unsupported dynamic fields: { s } ' )
880
-
881
- # check if we are running on an unsupported interpreter
882
- if self ._metadata .requires_python :
883
- self ._metadata .requires_python .prereleases = True
884
- if platform .python_version ().rstrip ('+' ) not in self ._metadata .requires_python :
885
- raise MesonBuilderError (
886
- f'Unsupported Python version { platform .python_version ()} , '
887
- f'expected { self ._metadata .requires_python } '
888
- )
889
-
890
884
@cached_property
891
885
def _wheel_builder (self ) -> _WheelBuilder :
892
886
return _WheelBuilder (
0 commit comments