False-positive DeprecationWarning
Describe the bug
Simply just importing one of the class request builders is enough to trigger a deprecation warnings. The reproduction steps below will output 3 different deprecation warnings, even though the deprecated classes are not being used.
This is because the warnings are in the class scope, so will be ran at "compile" time. Changing the first example to the second will only warn when the dataclass is instantiated.
# kiota_abstractions.default_query_parameters.py
@dataclass
class GetQueryParameters(QueryParameters):
"""
Default placeholder class for query parameters.
"""
warn("GetQueryParameters is deprecated. Use QueryParameters instead.", DeprecationWarning)
# kiota_abstractions.default_query_parameters.py
@dataclass
class GetQueryParameters(QueryParameters):
"""
Default placeholder class for query parameters.
"""
def __init__(self, *args, **kwargs):
warn("GetQueryParameters is deprecated. Use QueryParameters instead.", DeprecationWarning)
super().__init__(*args, **kwargs)
Expected behavior
Deprecation warnings are only raised when you instantiate a deprecated class I.E. are actually using it, not just importing it.
How to reproduce
python -Wd -c "from msgraph.generated.education.classes.classes_request_builder import ClassesRequestBuilder"
SDK Version
1.12.0
Latest version known to work for scenario above?
No response
Known Workarounds
Only workaround is to suppress deprecation warnings from this library.
import warnings
warnings.filterwarnings("ignore", module="msgraph", category=DeprecationWarning)
warnings.filterwarnings(
"ignore",
module="kiota_abstractions",
category=DeprecationWarning,
)
Debug output
Click to expand log
```</details>
### Configuration
_No response_
### Other information
_No response_
FYI this is the new issue raised to handle @ChrisLoveringSendient's comment in #812.
Getting the same issue when trying to use GraphServiceClient.service_principals_with_app_id
The import in that function triggers the deprecation warning. The deprecated class is not used anywhere.
Getting the same 'flavour' of warnings when importing service_principals_request_builder.ServicePrincipalsRequestBuilder and groups_request_builder.GroupsRequestBuilder, even when not instantiating the deprecated sub-classes.