• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4# Copyright (c) 2021-2024 Huawei Device Co., Ltd.
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16#
17
18from functools import cached_property
19from typing import Dict, List, Optional
20
21from runner.options.decorator_value import value, _to_int, _to_str
22from runner.options.options_jit import JitOptions
23
24
25class ArkOptions:
26    __DEFAULT_TIMEOUT = 10
27
28    def __str__(self) -> str:
29        return _to_str(self, 1)
30
31    def to_dict(self) -> Dict[str, object]:
32        return {
33            "timeout": self.timeout,
34            "interpreter-type": self.interpreter_type,
35            "jit": self.jit.to_dict(),
36            "ark-args": self.ark_args
37        }
38
39    @cached_property
40    @value(yaml_path="ark.timeout", cli_name="timeout", cast_to_type=_to_int)
41    def timeout(self) -> int:
42        return ArkOptions.__DEFAULT_TIMEOUT
43
44    @cached_property
45    @value(yaml_path="ark.interpreter-type", cli_name="interpreter_type")
46    def interpreter_type(self) -> Optional[str]:
47        return None
48
49    @cached_property
50    @value(yaml_path="ark.ark-args", cli_name="ark_args")
51    def ark_args(self) -> List[str]:
52        return []
53
54    jit = JitOptions()
55
56    def get_command_line(self) -> str:
57        _ark_args = [f'--ark-args="{arg}"' for arg in self.ark_args]
58        options = [
59            f'--timeout={self.timeout}' if self.timeout != ArkOptions.__DEFAULT_TIMEOUT else '',
60            f'--interpreter-type={self.interpreter_type}' if self.interpreter_type is not None else '',
61            ' '.join(_ark_args),
62            self.jit.get_command_line()
63        ]
64        return ' '.join(options)
65