xref: /aosp_15_r20/external/executorch/exir/_warnings.py (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Worker# Copyright (c) Meta Platforms, Inc. and affiliates.
2*523fa7a6SAndroid Build Coastguard Worker# All rights reserved.
3*523fa7a6SAndroid Build Coastguard Worker#
4*523fa7a6SAndroid Build Coastguard Worker# This source code is licensed under the BSD-style license found in the
5*523fa7a6SAndroid Build Coastguard Worker# LICENSE file in the root directory of this source tree.
6*523fa7a6SAndroid Build Coastguard Worker
7*523fa7a6SAndroid Build Coastguard Worker"""Decorators used to warn about non-stable APIs."""
8*523fa7a6SAndroid Build Coastguard Worker
9*523fa7a6SAndroid Build Coastguard Worker# pyre-strict
10*523fa7a6SAndroid Build Coastguard Worker
11*523fa7a6SAndroid Build Coastguard Workerfrom typing import Any, Dict, Optional, Sequence, Type
12*523fa7a6SAndroid Build Coastguard Worker
13*523fa7a6SAndroid Build Coastguard Workerfrom typing_extensions import deprecated
14*523fa7a6SAndroid Build Coastguard Worker
15*523fa7a6SAndroid Build Coastguard Worker__all__ = ["deprecated", "experimental"]
16*523fa7a6SAndroid Build Coastguard Worker
17*523fa7a6SAndroid Build Coastguard Worker
18*523fa7a6SAndroid Build Coastguard Workerclass ExperimentalWarning(DeprecationWarning):
19*523fa7a6SAndroid Build Coastguard Worker    """Emitted when calling an experimental API.
20*523fa7a6SAndroid Build Coastguard Worker
21*523fa7a6SAndroid Build Coastguard Worker    Derives from DeprecationWarning so that it is similarly filtered out by
22*523fa7a6SAndroid Build Coastguard Worker    default.
23*523fa7a6SAndroid Build Coastguard Worker    """
24*523fa7a6SAndroid Build Coastguard Worker
25*523fa7a6SAndroid Build Coastguard Worker    def __init__(self, /, *args: Sequence[Any], **kwargs: Dict[str, Any]) -> None:
26*523fa7a6SAndroid Build Coastguard Worker        super().__init__(*args, **kwargs)
27*523fa7a6SAndroid Build Coastguard Worker
28*523fa7a6SAndroid Build Coastguard Worker
29*523fa7a6SAndroid Build Coastguard Workerclass experimental(deprecated):
30*523fa7a6SAndroid Build Coastguard Worker    """Indicates that a class, function or overload is experimental.
31*523fa7a6SAndroid Build Coastguard Worker
32*523fa7a6SAndroid Build Coastguard Worker    When this decorator is applied to an object, the type checker
33*523fa7a6SAndroid Build Coastguard Worker    will generate a diagnostic on usage of the experimental object.
34*523fa7a6SAndroid Build Coastguard Worker    """
35*523fa7a6SAndroid Build Coastguard Worker
36*523fa7a6SAndroid Build Coastguard Worker    def __init__(
37*523fa7a6SAndroid Build Coastguard Worker        self,
38*523fa7a6SAndroid Build Coastguard Worker        message: str,
39*523fa7a6SAndroid Build Coastguard Worker        /,
40*523fa7a6SAndroid Build Coastguard Worker        *,
41*523fa7a6SAndroid Build Coastguard Worker        category: Optional[Type[Warning]] = ExperimentalWarning,
42*523fa7a6SAndroid Build Coastguard Worker        stacklevel: int = 1,
43*523fa7a6SAndroid Build Coastguard Worker    ) -> None:
44*523fa7a6SAndroid Build Coastguard Worker        super().__init__(message, category=category, stacklevel=stacklevel)
45