xref: /aosp_15_r20/platform_testing/libraries/annotations/src/py/NonApiTest.py (revision dd0948b35e70be4c0246aabd6c72554a5eb8b22a)
1 #  Copyright (C) 2024 The Android Open Source Project
2 #
3 #  Licensed under the Apache License, Version 2.0 (the "License");
4 #  you may not use this file except in compliance with the License.
5 #  You may obtain a copy of the License at
6 #
7 #       http://www.apache.org/licenses/LICENSE-2.0
8 #
9 #  Unless required by applicable law or agreed to in writing, software
10 #  distributed under the License is distributed on an "AS IS" BASIS,
11 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 #  See the License for the specific language governing permissions and
13 #  limitations under the License.
14 
15 """NonApiTest decorator."""
16 
17 from typing import List
18 from .ReasonType import ReasonType
19 
20 
21 class NonApiTest(object):
22   """Marks the type of CTS test not enforcing API functionalities and behaviors.
23 
24   @NonApiTest should be used only after a consultation with ape-relpgm-cls@.
25 
26   Args:
27     exemption_reasons: the list of reasons for not enforcing API behaviors.
28     justification: additional explanation for reason types listed.
29   """
30 
31   def __init__(
32       self, exemption_reasons: List[ReasonType] = [], justification: str = ''
33   ):
34     self._exemption_reasons = exemption_reasons
35     self._justification = justification
36 
37   def __call__(self, func):
38     return func
39