# -*- coding: utf-8 -*-

# Copyright 2025 (c) Vladislav Punko <iam.vlad.punko@gmail.com>

import subprocess  # nosec

__all__ = ["ConfigError", "ExternalProcessError", "FileSystemError"]


class ConfigError(ValueError):
    """The custom exception class should include an error message that describes the
    issue that occurred while processing configurations.

    This exception is intended for cases such as missing required options
    or invalid configuration values.
    """


class ExternalProcessError(subprocess.SubprocessError):
    """This custom exception class represents errors encountered when
    executing an external process.

    This exception is used to represent all errors related to errors during
    execution of external processes, such as command line utilities or system tools.
    """


class FileSystemError(OSError):
    """The custom exception class to represent operating system or disk errors.

    This exception is used to represent all errors related to the operating system
    or input and output operations on the current working machine. This includes all
    system-level errors generated by failed system calls.
    """
