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