1313from variantlib .constants import VARIANT_INFO_NAMESPACE_KEY
1414from variantlib .constants import VARIANT_INFO_PROVIDER_DATA_KEY
1515from variantlib .constants import VARIANT_INFO_PROVIDER_PLUGIN_API_KEY
16+ from variantlib .constants import VARIANT_INFO_PROVIDER_REQUIRES_KEY
1617from variantlib .constants import VARIANTS_JSON_VARIANT_DATA_KEY
1718from variantlib .errors import PluginError
1819from variantlib .errors import ValidationError
@@ -364,19 +365,23 @@ def test_load_plugin_invalid_arg() -> None:
364365 ],
365366 providers = {
366367 "test_namespace" : ProviderInfo (
367- plugin_api = "tests.mocked_plugins:MockedPluginA"
368+ requires = ["variantlib" ],
369+ plugin_api = "tests.mocked_plugins:MockedPluginA" ,
368370 ),
369371 "second_namespace" : ProviderInfo (
370372 # always true
371373 enable_if = "python_version >= '3.10'" ,
374+ requires = ["variantlib" ],
372375 plugin_api = "tests.mocked_plugins:MockedPluginB" ,
373376 ),
374377 "incompatible_namespace" : ProviderInfo (
375378 # always false (hopefully)
376379 enable_if = 'platform_machine == "frobnicator"' ,
380+ requires = ["variantlib" ],
377381 plugin_api = "tests.mocked_plugins:MockedPluginC" ,
378382 ),
379383 "one_more" : ProviderInfo (
384+ requires = ["variantlib" ],
380385 plugin_api = "tests.mocked_plugins:NoSuchClass" ,
381386 optional = True ,
382387 ),
@@ -388,9 +393,11 @@ def test_load_plugin_invalid_arg() -> None:
388393{ VARIANT_INFO_NAMESPACE_KEY } = ["test_namespace", "second_namespace"]
389394
390395[{ PYPROJECT_TOML_TOP_KEY } .{ VARIANT_INFO_PROVIDER_DATA_KEY } .test_namespace]
396+ { VARIANT_INFO_PROVIDER_REQUIRES_KEY } = ["variantlib"]
391397{ VARIANT_INFO_PROVIDER_PLUGIN_API_KEY } = "tests.mocked_plugins:MockedPluginA"
392398
393399[{ PYPROJECT_TOML_TOP_KEY } .{ VARIANT_INFO_PROVIDER_DATA_KEY } .second_namespace]
400+ { VARIANT_INFO_PROVIDER_REQUIRES_KEY } = ["variantlib"]
394401{ VARIANT_INFO_PROVIDER_PLUGIN_API_KEY } = "tests.mocked_plugins:MockedPluginB"
395402""" )
396403 ),
@@ -401,10 +408,12 @@ def test_load_plugin_invalid_arg() -> None:
401408 },
402409 VARIANT_INFO_PROVIDER_DATA_KEY : {
403410 "test_namespace" : {
404- VARIANT_INFO_PROVIDER_PLUGIN_API_KEY : "tests.mocked_plugins:MockedPluginA" # noqa: E501
411+ VARIANT_INFO_PROVIDER_REQUIRES_KEY : ["variantlib" ],
412+ VARIANT_INFO_PROVIDER_PLUGIN_API_KEY : "tests.mocked_plugins:MockedPluginA" , # noqa: E501
405413 },
406414 "second_namespace" : {
407- VARIANT_INFO_PROVIDER_PLUGIN_API_KEY : "tests.mocked_plugins:MockedPluginB" # noqa: E501
415+ VARIANT_INFO_PROVIDER_REQUIRES_KEY : ["variantlib" ],
416+ VARIANT_INFO_PROVIDER_PLUGIN_API_KEY : "tests.mocked_plugins:MockedPluginB" , # noqa: E501
408417 },
409418 },
410419 VARIANTS_JSON_VARIANT_DATA_KEY : {},
@@ -486,10 +495,12 @@ def test_optional_plugins(value: bool | list[VariantNamespace], expected: bool)
486495 ],
487496 providers = {
488497 "test_namespace" : ProviderInfo (
489- plugin_api = "tests.mocked_plugins:MockedPluginA"
498+ requires = [ "variantlib" ], plugin_api = "tests.mocked_plugins:MockedPluginA"
490499 ),
491500 "second_namespace" : ProviderInfo (
492- plugin_api = "tests.mocked_plugins:MockedPluginB" , optional = True
501+ requires = ["variantlib" ],
502+ plugin_api = "tests.mocked_plugins:MockedPluginB" ,
503+ optional = True ,
493504 ),
494505 },
495506 )
@@ -534,10 +545,10 @@ def test_filter_plugins(value: list[VariantNamespace]) -> None:
534545 ],
535546 providers = {
536547 "test_namespace" : ProviderInfo (
537- plugin_api = "tests.mocked_plugins:MockedPluginA"
548+ requires = [ "variantlib" ], plugin_api = "tests.mocked_plugins:MockedPluginA"
538549 ),
539550 "second_namespace" : ProviderInfo (
540- plugin_api = "tests.mocked_plugins:MockedPluginB"
551+ requires = [ "variantlib" ], plugin_api = "tests.mocked_plugins:MockedPluginB"
541552 ),
542553 },
543554 )
@@ -580,9 +591,10 @@ def test_package_defined_properties(include_build_plugins: bool) -> None:
580591 },
581592 providers = {
582593 "test_namespace" : ProviderInfo (
583- plugin_api = "tests.mocked_plugins:MockedPluginA"
594+ requires = [ "variantlib" ], plugin_api = "tests.mocked_plugins:MockedPluginA"
584595 ),
585596 "second_namespace" : ProviderInfo (
597+ requires = ["variantlib" ],
586598 plugin_api = "tests.mocked_plugins:MockedPluginB" ,
587599 plugin_use = PluginUse .BUILD ,
588600 ),
0 commit comments