File: exceptions.py

package info (click to toggle)
pyinstaller 6.13.0%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 11,520 kB
  • sloc: python: 41,347; ansic: 11,334; makefile: 176; sh: 136; xml: 19
file content (84 lines) | stat: -rw-r--r-- 3,080 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#-----------------------------------------------------------------------------
# Copyright (c) 2005-2023, PyInstaller Development Team.
#
# Distributed under the terms of the GNU General Public License (version 2
# or later) with exception for distributing the bootloader.
#
# The full license is in the file COPYING.txt, distributed with this software.
#
# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception)
#-----------------------------------------------------------------------------

from PyInstaller import compat


class ExecCommandFailed(SystemExit):
    pass


class HookError(Exception):
    """
    Base class for hook related errors.
    """
    pass


class ImportErrorWhenRunningHook(HookError):
    def __str__(self):
        return (
            "ERROR: Failed to import module {0} required by hook for module {1}. Please check whether module {0} "
            "actually exists and whether the hook is compatible with your version of {1}: You might want to read more "
            "about hooks in the manual and provide a pull-request to improve PyInstaller.".format(
                self.args[0], self.args[1]
            )
        )


class RemovedCipherFeatureError(SystemExit):
    def __init__(self, message):
        super().__init__(
            f"ERROR: Bytecode encryption was removed in PyInstaller v6.0. {message}"
            " For the rationale and alternatives see https://github.com/pyinstaller/pyinstaller/pull/6999"
        )


class RemovedExternalManifestError(SystemExit):
    def __init__(self, message):
        super().__init__(f"ERROR: Support for external executable manifest was removed in PyInstaller v6.0. {message}")


class RemovedWinSideBySideSupportError(SystemExit):
    def __init__(self, message):
        super().__init__(
            f"ERROR: Support for collecting and processing WinSxS assemblies was removed in PyInstaller v6.0. {message}"
        )


_MISSING_PYTHON_LIB_MSG = \
"""ERROR: Python library not found: {0}
    This means your Python installation does not come with proper shared library files.
    This usually happens due to missing development package, or unsuitable build parameters of the Python installation.

    * On Debian/Ubuntu, you need to install Python development packages:
      * apt-get install python3-dev
      * apt-get install python-dev
    * If you are building Python by yourself, rebuild with `--enable-shared` (or, `--enable-framework` on macOS).
"""  # noqa: E122


class PythonLibraryNotFoundError(IOError):
    def __init__(self):
        super().__init__(_MISSING_PYTHON_LIB_MSG.format(", ".join(compat.PYDYLIB_NAMES),))


class InvalidSrcDestTupleError(SystemExit):
    def __init__(self, src_dest, message):
        super().__init__(f"ERROR: Invalid (SRC, DEST_DIR) tuple: {src_dest!r}. {message}")


class ImportlibMetadataError(SystemExit):
    def __init__(self):
        super().__init__(
            "ERROR: PyInstaller requires importlib.metadata from python >= 3.10 stdlib or importlib_metadata from "
            "importlib-metadata >= 4.6"
        )