# Path: utils/misc_utils.py
# def Is64Windows():
# def Is64Mac():
# def Is32Windows():
# def GetProgramFiles32():
# def GetProgramFiles64():
# def get_current_os_names() -> Tuple[str, ...]:
#     def __init__(self) -> None:
#     def write(self, text: Any):
#     def list(self) -> List:
#     def __init__(self, initial_list=()) -> None:
#     def __setitem__(self, index, item):
#     def __delitem__(self, index):
#     def __contains__(self, item):
#     def append(self, item):
#     def extend(self, items=()):
#     def insert(self, index, item):
#     def remove(self, item):
#     def pop(self, index=-1):
#     def count(self, item):
#     def sort(self, key=None, reverse=False):
#     def empty(self):
#     def clear(self):
#     def __init__(self, initial_list=()) -> None:
# def print_var(var_name):
# def deprecated(deprecated_func):
#     def raise_deprecation(*unused_args, **unused_kwargs):
# def max_widths(list_of_lists, string_align='<', numbers_align='>'):
# def gen_col_format(width_list, align_list=None, sep=' '):
# def format_by_width(list_of_lists, string_align='<', numbers_align='>'):
# def ContinuationIter(the_iter, continuation_value=None):
# def ParallelContinuationIter(*iterables):
# def get_buffer_checksum(buff):
# def compare_checksums(_1st_checksum, _2nd_checksum):
# def check_buffer_checksum(buff, expected_checksum):
# def check_file_checksum(file_path, expected_checksum):
# def get_file_checksum(file_path, follow_symlinks=True):
# def compare_files_by_checksum(_1st_file_path, _2nd_file_path, follow_symlinks=False):
# def need_to_download_file(file_path, file_checksum):
# def separate_guids_from_iids(items_list):
# def make_one_list(*things):
# def P4GetPathFromDepotPath(depot_path):
# def replace_all_from_dict(in_text, *in_replace_only_these, **in_replacement_dic):
# def find_sequences(in_sorted_list, is_next_func=lambda a, b: int(a) + 1 == int(b), return_string=True):
# def timing(f):
#     def wrap(*args, **kwargs):
# def time_it(message):
# def compile_regex_list_ORed(regex_list, verbose=False):
# def unix_permissions_to_str(the_mod):
#     def __init__(self, current_dict, past_dict) -> None:
#     def added(self):
#     def removed(self):
#     def changed(self):
#     def unchanged(self):
# def find_mount_point(path):
#     def __init__(self, name, print_results=True) -> None:
#     def __enter__(self):
#     def __exit__(self, *_):
#     def child(self, name):
#     def start(self):
#     def stop(self):
#     def print_results(self):
#     def _format_results(self, indent='  '):
#     def _get_time(self):
# def is_wtar_file(in_possible_wtar) -> bool:
# def is_first_wtar_file(in_possible_wtar):
# def original_name_from_wtar_name(wtar_name):
# def original_names_from_wtars_names(original_list):
# def get_recursive_checksums(some_path, ignore=None):
# def obj_memory_size(obj, seen=None):
# def get_wtar_total_checksum(wtar_file_path):
# def extra_json_serializer(obj):
#     def default(self, obj):
# def get_system_log_folder_path():
# def get_system_log_file_path():
# def iter_complete_to_longest(*list_of_lists):
# def clock(func):
#     def clocked(*args, **kwargs):
# def partition_list(in_list, partition_condition):
# def iter_grouper(n, iterable):
# def get_os_description():
# def add_to_actions_stack(action: str):
# def get_latest_action_from_stack():
# def get_curl_err_msg(key: int) -> str:
# class write_to_list(object):
# class unique_list(list):
# class set_with_order(unique_list):
# class DictDiffer(object):
# class Timer_CM(object):
# class JsonExtraTypesDecoder(json.JSONDecoder):


import os
import re
import sys
import json
import inspect
import multiprocessing
import threading
import traceback
import queue
import logging
import logging.handlers
from pathlib import Path
from utils import misc_utils as utils
#!/usr/bin/env python3.9


"""
    Copyright (c) 2013, Shai Shasag
    All rights reserved.
    Licensed under BSD 3 clause license, see LICENSE file for details.
"""



# Path: utils/misc_utils.py
# def Is64Windows():
# def Is64Mac():
# def Is32Windows():
# def GetProgramFiles32():
# def GetProgramFiles64():
# def get_current_os_names() -> Tuple[str, ...]:
#     def __init__(self) -> None:
#     def write(self, text: Any):
#     def list(self) -> List:
#     def __init__(self, initial_list=()) -> None:
#     def __setitem__(self, index, item):
#     def __delitem__(self, index):
#     def __contains__(self, item):
#     def append(self, item):
#     def extend(self, items=()):
#     def insert(self, index, item):
#     def remove(self, item):
#     def pop(self, index=-1):
#     def count(self, item):
#     def sort(self, key=None, reverse=False):
#     def empty(self):
#     def clear(self):
#     def __init__(self, initial_list=()) -> None:
# def print_var(var_name):
# def deprecated(deprecated_func):
#     def raise_deprecation(*unused_args, **unused_kwargs):
# def max_widths(list_of_lists, string_align='<', numbers_align='>'):
# def gen_col_format(width_list, align_list=None, sep=' '):
# def format_by_width(list_of_lists, string_align='<', numbers_align='>'):
# def ContinuationIter(the_iter, continuation_value=None):
# def ParallelContinuationIter(*iterables):
# def get_buffer_checksum(buff):
# def compare_checksums(_1st_checksum, _2nd_checksum):
# def check_buffer_checksum(buff, expected_checksum):
# def check_file_checksum(file_path, expected_checksum):
# def get_file_checksum(file_path, follow_symlinks=True):
# def compare_files_by_checksum(_1st_file_path, _2nd_file_path, follow_symlinks=False):
# def need_to_download_file(file_path, file_checksum):
# def separate_guids_from_iids(items_list):
# def make_one_list(*things):
# def P4GetPathFromDepotPath(depot_path):
# def replace_all_from_dict(in_text, *in_replace_only_these, **in_replacement_dic):
# def find_sequences(in_sorted_list, is_next_func=lambda a, b: int(a) + 1 == int(b), return_string=True):
# def timing(f):
#     def wrap(*args, **kwargs):
# def time_it(message):
# def compile_regex_list_ORed(regex_list, verbose=False):
# def unix_permissions_to_str(the_mod):
#     def __init__(self, current_dict, past_dict) -> None:
#     def added(self):
#     def removed(self):
#     def changed(self):
#     def unchanged(self):
# def find_mount_point(path):
#     def __init__(self, name, print_results=True) -> None:
#     def __enter__(self):
#     def __exit__(self, *_):
#     def child(self, name):
#     def start(self):
#     def stop(self):
#     def print_results(self):
#     def _format_results(self, indent='  '):
#     def _get_time(self):
# def is_wtar_file(in_possible_wtar) -> bool:
# def is_first_wtar_file(in_possible_wtar):
# def original_name_from_wtar_name(wtar_name):
# def original_names_from_wtars_names(original_list):
# def get_recursive_checksums(some_path, ignore=None):
# def obj_memory_size(obj, seen=None):
# def get_wtar_total_checksum(wtar_file_path):
# def extra_json_serializer(obj):
#     def default(self, obj):
# def get_system_log_folder_path():
# def get_system_log_file_path():
# def iter_complete_to_longest(*list_of_lists):
# def clock(func):
#     def clocked(*args, **kwargs):
# def partition_list(in_list, partition_condition):
# def iter_grouper(n, iterable):
# def get_os_description():
# def add_to_actions_stack(action: str):
# def get_latest_action_from_stack():
# def get_curl_err_msg(key: int) -> str:
# class write_to_list(object):
# class unique_list(list):
# class set_with_order(unique_list):
# class DictDiffer(object):
# class Timer_CM(object):
# class JsonExtraTypesDecoder(json.JSONDecoder):


# Path: utils/log_utils.py
import os
import re
import sys
import json
import inspect
import multiprocessing
import threading
import traceback
import queue
import logging
import logging.handlers
from pathlib import Path
from utils import misc_utils as utils

#!/usr/bin/env python3.9


"""
    Copyright (c) 2013, Shai Shasag
    All rights reserved.
    Licensed under BSD 3 clause license, see LICENSE file for details.
"""



from utils import misc_utils as utils