1ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh"""distutils.errors
2ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
3ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehProvides exceptions used by the Distutils modules.  Note that Distutils
4ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehmodules may raise standard exceptions; in particular, SystemExit is
5ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehusually raised for errors that are obviously the end-user's fault
6ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh(eg. bad command-line arguments).
7ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
8ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehThis module is safe to use in "from ... import *" mode; it only exports
9ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehsymbols whose names start with "Distutils" and end with "Error"."""
10ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
11ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh__revision__ = "$Id$"
12ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
13ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsError(Exception):
14ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """The root of all Distutils evil."""
15ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
16ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsModuleError(DistutilsError):
17ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Unable to load an expected module, or to find an expected class
18ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    within some module (in particular, command modules and classes)."""
19ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
20ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsClassError(DistutilsError):
21ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Some command class (or possibly distribution class, if anyone
22ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    feels a need to subclass Distribution) is found not to be holding
23ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    up its end of the bargain, ie. implementing some part of the
24ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    "command "interface."""
25ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
26ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsGetoptError(DistutilsError):
27ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """The option table provided to 'fancy_getopt()' is bogus."""
28ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
29ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsArgError(DistutilsError):
30ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Raised by fancy_getopt in response to getopt.error -- ie. an
31ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    error in the command line usage."""
32ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
33ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsFileError(DistutilsError):
34ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Any problems in the filesystem: expected file not found, etc.
35ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    Typically this is for problems that we detect before IOError or
36ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    OSError could be raised."""
37ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
38ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsOptionError(DistutilsError):
39ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Syntactic/semantic errors in command options, such as use of
40ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    mutually conflicting options, or inconsistent options,
41ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    badly-spelled values, etc.  No distinction is made between option
42ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    values originating in the setup script, the command line, config
43ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    files, or what-have-you -- but if we *know* something originated in
44ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    the setup script, we'll raise DistutilsSetupError instead."""
45ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
46ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsSetupError(DistutilsError):
47ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """For errors that can be definitely blamed on the setup script,
48ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    such as invalid keyword arguments to 'setup()'."""
49ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
50ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsPlatformError(DistutilsError):
51ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """We don't know how to do something on the current platform (but
52ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    we do know how to do it on some platform) -- eg. trying to compile
53ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    C files on a platform not supported by a CCompiler subclass."""
54ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
55ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsExecError(DistutilsError):
56ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Any problems executing an external program (such as the C
57ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    compiler, when compiling C files)."""
58ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
59ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsInternalError(DistutilsError):
60ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Internal inconsistencies or impossibilities (obviously, this
61ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    should never be seen if the code is working!)."""
62ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
63ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsTemplateError(DistutilsError):
64ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Syntax error in a file list template."""
65ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
66ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass DistutilsByteCompileError(DistutilsError):
67ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Byte compile error."""
68ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
69ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# Exception classes used by the CCompiler implementation classes
70ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass CCompilerError(Exception):
71ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Some compile/link operation failed."""
72ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
73ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass PreprocessError(CCompilerError):
74ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Failure to preprocess one or more C/C++ files."""
75ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
76ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass CompileError(CCompilerError):
77ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Failure to compile one or more C/C++ source files."""
78ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
79ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass LibError(CCompilerError):
80ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Failure to create a static library from one or more C/C++ object
81ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    files."""
82ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
83ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass LinkError(CCompilerError):
84ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Failure to link one or more C/C++ object files into an executable
85ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    or shared library file."""
86ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
87ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass UnknownFileError(CCompilerError):
88ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    """Attempt to process an unknown file type."""
89