# -------------------------------------------------------------------------
# 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,
}