# -------------------------------------------------------------------------
# This file is part of the MindStudio project.
# Copyright (c) 2025 Huawei Technologies Co.,Ltd.
#
# MindStudio is licensed under Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
#
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# -------------------------------------------------------------------------
import re
PATH_WHITE_LIST_REGEX = re.compile(r"[^_A-Za-z0-9/.-]")
KILOBYTE = 1024
CONFIG_FILE_MAX_SIZE = 1 * 1024 * 1024 # work for .ini config file
TEXT_FILE_MAX_SIZE = 100 * 1024 * 1024 # work for txt, csv, py
JSON_FILE_MAX_SIZE = 1024 * 1024 * 1024
ONNX_MODEL_MAX_SIZE = 2 * 1024 * 1024 * 1024
TENSOR_MAX_SIZE = 10 * 1024 * 1024 * 1024
MODEL_WEIGHT_MAX_SIZE = 300 * 1024 * 1024 * 1024
DB_MAX_SIZE = 5 * 1024 * 1024 * 1024
INPUT_FILE_MAX_SIZE = 5 * 1024 * 1024 * 1024
DATA_SIZE_WARNING_THRESHOLD = 500 * 1024 * 1024
# Constants migrated from ms_service_profiler_ext/common/constants.py
MAX_BATCH_NUMBER = 1000
US_PER_MS = 1000
EXT_SIZE_MAPPING = {
'.db': DB_MAX_SIZE,
'.py': TEXT_FILE_MAX_SIZE,
".ini": CONFIG_FILE_MAX_SIZE,
'.csv': TEXT_FILE_MAX_SIZE,
'.txt': TEXT_FILE_MAX_SIZE,
'.pth': MODEL_WEIGHT_MAX_SIZE,
'.bin': MODEL_WEIGHT_MAX_SIZE,
'.json': JSON_FILE_MAX_SIZE,
'.onnx': ONNX_MODEL_MAX_SIZE,
}