# Path: scar/exceptions.py
# class GitHubTagNotFoundError(ScarError):
#     """
#     The specified tag was not found in the GitHub repository
# 
#     :ivar version: Tag used for the search
#     """
# 
#     fmt = "The tag '{tag}' was not found in the GitHub repository."
# 
# class YamlFileNotFoundError(ScarError):
#     """
#     The yaml configuration file does not exist
# 
#     :ivar file_path: Path of the file
#     """
#     fmt = "Unable to find the yaml file '{file_path}'"


import base64
import json
import os
import re
import shutil
import subprocess
import tarfile
import tempfile
import uuid
import sys
import yaml
import scar.logger as logger
import scar.http.request as request
from copy import deepcopy
from zipfile import ZipFile
from io import BytesIO
from typing import Optional, Dict, List, Generator, Union, Any, Tuple
from distutils import dir_util
from packaging import version
from scar.exceptions import GitHubTagNotFoundError, YamlFileNotFoundError
        dir_util.copy_tree(source, dest)

    @staticmethod
    def create_folder(folder_name):
        """Creates a system folder. Does nothing if the folder exists."""
        os.makedirs(folder_name, exist_ok=True)

    @staticmethod
    def get_scar_root_path() -> str:
        """Returns the root path of the project."""
        return os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

    @staticmethod
    def join_paths(*paths: str) -> str:
        """Returns the strings passed joined as a system path."""
        return os.path.join(*paths)

    @staticmethod
    def get_tmp_dir() -> str:
        """Gets the directory where the temporal
        folder of the system is located."""
        return tempfile.gettempdir()

    @staticmethod
    def create_tmp_dir() -> tempfile.TemporaryDirectory:
        """Creates a directory in the temporal folder of the system.
        When the context is finished, the folder is automatically deleted."""
        return tempfile.TemporaryDirectory()

    @staticmethod

# Path: scar/exceptions.py
# class GitHubTagNotFoundError(ScarError):
#     """
#     The specified tag was not found in the GitHub repository
# 
#     :ivar version: Tag used for the search
#     """
# 
#     fmt = "The tag '{tag}' was not found in the GitHub repository."
# 
# class YamlFileNotFoundError(ScarError):
#     """
#     The yaml configuration file does not exist
# 
#     :ivar file_path: Path of the file
#     """
#     fmt = "Unable to find the yaml file '{file_path}'"


# Path: scar/utils.py
import base64
import json
import os
import re
import shutil
import subprocess
import tarfile
import tempfile
import uuid
import sys
import yaml
import scar.logger as logger
import scar.http.request as request
from copy import deepcopy
from zipfile import ZipFile
from io import BytesIO
from typing import Optional, Dict, List, Generator, Union, Any, Tuple
from distutils import dir_util
from packaging import version
from scar.exceptions import GitHubTagNotFoundError, YamlFileNotFoundError

        dir_util.copy_tree(source, dest)

    @staticmethod
    def create_folder(folder_name):
        """Creates a system folder. Does nothing if the folder exists."""
        os.makedirs(folder_name, exist_ok=True)

    @staticmethod
    def get_scar_root_path() -> str:
        """Returns the root path of the project."""
        return os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

    @staticmethod
    def join_paths(*paths: str) -> str:
        """Returns the strings passed joined as a system path."""
        return os.path.join(*paths)

    @staticmethod
    def get_tmp_dir() -> str:
        """Gets the directory where the temporal
        folder of the system is located."""
        return tempfile.gettempdir()

    @staticmethod
    def create_tmp_dir() -> tempfile.TemporaryDirectory:
        """Creates a directory in the temporal folder of the system.
        When the context is finished, the folder is automatically deleted."""
        return tempfile.TemporaryDirectory()

    @staticmethod

    def create_tmp_file(**kwargs) -> tempfile.NamedTemporaryFile: