195640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org#!/usr/bin/env python
295640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org# Copyright (c) 2012 The Chromium Authors. All rights reserved.
301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org# Use of this source code is governed by a BSD-style license that can be
401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org# found in the LICENSE file.
501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org'''Exception types for GRIT.
701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org'''
801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass Base(Exception):
1001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''A base exception that uses the class's docstring in addition to any
1101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  user-provided message as the body of the Base.
1201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''
1301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  def __init__(self, msg=''):
1401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    if len(msg):
1501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      if self.__doc__:
1601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org        msg = self.__doc__ + ': ' + msg
1701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    else:
1801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      msg = self.__doc__
19b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org    super(Base, self).__init__(msg)
2001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
2101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
2201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass Parsing(Base):
2301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''An error occurred parsing a GRD or XTB file.'''
24b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
2501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
2601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
2701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass UnknownElement(Parsing):
2801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''An unknown node type was encountered.'''
29b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
3001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
3101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
3201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass MissingElement(Parsing):
3301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''An expected element was missing.'''
34b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
3501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
3601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
3701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass UnexpectedChild(Parsing):
3801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''An unexpected child element was encountered (on a leaf node).'''
39b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
4001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
4101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
4201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass UnexpectedAttribute(Parsing):
4301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''The attribute was not expected'''
44b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
4501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
4601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
4701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass UnexpectedContent(Parsing):
4801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''This element should not have content'''
49b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
5001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
5101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
5201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass MissingMandatoryAttribute(Parsing):
5301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''This element is missing a mandatory attribute'''
54b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
5501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
5601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
5701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass MutuallyExclusiveMandatoryAttribute(Parsing):
5801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''This element has 2 mutually exclusive mandatory attributes'''
59b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
6001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
6101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
6201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass DuplicateKey(Parsing):
6301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''A duplicate key attribute was found.'''
64b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
6501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
6601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
6701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass TooManyExamples(Parsing):
6801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''Only one <ex> element is allowed for each <ph> element.'''
69b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
7001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
7101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
7201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass GotPathExpectedFilenameOnly(Parsing):
7383717e82a9b5e0c629ff4f1078d50503ffd2ae75benrg@chromium.org  '''The 'filename' attribute of <output> and the 'file' attribute of <part>
7483717e82a9b5e0c629ff4f1078d50503ffd2ae75benrg@chromium.org  must be bare filenames, not paths.
7501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''
76b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
7701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
7801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
79ec8016c73b3b945b6284746230913d88653f35e7benrg@chromium.orgclass FileNotFound(Parsing):
80ec8016c73b3b945b6284746230913d88653f35e7benrg@chromium.org  '''The resource file was not found.
81ec8016c73b3b945b6284746230913d88653f35e7benrg@chromium.org  '''
82b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
83ec8016c73b3b945b6284746230913d88653f35e7benrg@chromium.org
84ec8016c73b3b945b6284746230913d88653f35e7benrg@chromium.org
8501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass InvalidMessage(Base):
8601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''The specified message failed validation.'''
87b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
8801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
8901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
9001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass InvalidTranslation(Base):
9101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''Attempt to add an invalid translation to a clique.'''
92b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
9301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
9401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
9501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass NoSuchTranslation(Base):
9601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''Requested translation not available'''
97b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
9801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
9901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
10001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass NotReady(Base):
10101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''Attempt to use an object before it is ready, or attempt to translate
10201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  an empty document.'''
103b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
10401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
10501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
10601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass TooManyPlaceholders(Base):
10701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''Too many placeholders for elements of the same type.'''
108b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
10901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
11001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
11101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass MismatchingPlaceholders(Base):
11201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''Placeholders do not match.'''
113b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
11401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
11501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
11601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass InvalidPlaceholderName(Base):
11701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''Placeholder name can only contain A-Z, a-z, 0-9 and underscore.'''
118b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
11901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
12001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
12101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass BlockTagInTranslateableChunk(Base):
12201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''A block tag was encountered where it wasn't expected.'''
123b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
12401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
12501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
12601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass SectionNotFound(Base):
12701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''The section you requested was not found in the RC file. Make
12801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgsure the section ID is correct (matches the section's ID in the RC file).
12901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgAlso note that you may need to specify the RC file's encoding (using the
13001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgencoding="" attribute) if it is not in the default Windows-1252 encoding.
13101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''
132b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
13301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
13401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
13501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass IdRangeOverlap(Base):
13601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''ID range overlap.'''
137b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org  pass
13801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
139