errors¶
tt error types.
errors.base module¶
The base tt exception type.
errors.arguments module¶
Generic exception types.
- exception tt.errors.arguments.ArgumentError(message, *args)[source]¶
An exception type for invalid arguments. This exception type should be sub-classed and is not meant to be raised explicitly.
- exception tt.errors.arguments.ConflictingArgumentsError(message, *args)[source]¶
An exception type for two or more conflicting arguments.
This error type can be seen in action by passing both an expression and a set of values to the
TruthTableclass:>>> from tt import TruthTable >>> t = TruthTable('A or B', from_values='1111') Traceback (most recent call last): ... tt.errors.arguments.ConflictingArgumentsError: `expr` and `from_values` are mutually exclusive arguments
- exception tt.errors.arguments.InvalidArgumentTypeError(message, *args)[source]¶
An exception type for invalid argument types.
To illustrate this error type, let’s try passing an invalid argument when creating a
TruthTable:>>> from tt import TruthTable >>> t = TruthTable(7) Traceback (most recent call last): ... tt.errors.arguments.InvalidArgumentTypeError: Arg `expr` must be of type `str` or `BooleanExpression`
- exception tt.errors.arguments.InvalidArgumentValueError(message, *args)[source]¶
An exception type for invalid argument values.
Here’s an example where we pass a non-power of 2 number of values when attempting to create a
TruthTable:>>> from tt import TruthTable >>> t = TruthTable(from_values='01x') Traceback (most recent call last): ... tt.errors.arguments.InvalidArgumentValueError: Must specify a number of input values that is a power of 2
- exception tt.errors.arguments.RequiredArgumentError(message, *args)[source]¶
An exception for when a required argument is missing.
Let’s try an example where we omit all arguments when attempting to make a new
TruthTableobject:>>> from tt import TruthTable >>> t = TruthTable() Traceback (most recent call last): ... tt.errors.arguments.RequiredArgumentError: Must specify either `expr` or `from_values`
errors.evaluation module¶
Exception type definitions related to expression evaluation.
- exception tt.errors.evaluation.EvaluationError(message, *args)[source]¶
An exception type for errors occurring in expression evaluation. This exception type should be sub-classed and is not meant to be raised explicitly.
- exception tt.errors.evaluation.InvalidBooleanValueError(message, *args)[source]¶
An exception for when an invalid truth or don’t care value is passed.
Here’s an example where we attempt to evaluate a
BooleanExpressionwith an invalid value passed throughkwargs:>>> from tt import BooleanExpression >>> b = BooleanExpression('A or B') >>> b.evaluate(A=1, B='brian') Traceback (most recent call last): ... tt.errors.evaluation.InvalidBooleanValueError: "brian" passed as value for "B" is not a valid Boolean value
- exception tt.errors.evaluation.NoEvaluationVariationError(message, *args)[source]¶
An exception type for when evaluation of an expression will not vary.
Let’s see an example where we attempt to make a
TruthTablefrom an expression that has no symbols nor variation in its results:>>> from tt import TruthTable >>> t = TruthTable('1 or 0') Traceback (most recent call last): ... tt.errors.evaluation.NoEvaluationVariationError: This expression is composed only of constant values
errors.grammar module¶
Exception type definitions related to expression grammar and parsing.
- exception tt.errors.grammar.BadParenPositionError(message, expr_str=None, error_pos=None, *args)[source]¶
An exception type for unexpected parentheses.
Here’s a quick and dirty example:
>>> from tt import BooleanExpression >>> b = BooleanExpression('A or B (') Traceback (most recent call last): ... tt.errors.grammar.BadParenPositionError: Unexpected parenthesis
- exception tt.errors.grammar.EmptyExpressionError(message, expr_str=None, error_pos=None, *args)[source]¶
An exception type for when an empty expression is received.
Let’s take a brief look:
>>> from tt import BooleanExpression >>> b = BooleanExpression('') Traceback (most recent call last): ... tt.errors.grammar.EmptyExpressionError: Empty expression is invalid
- exception tt.errors.grammar.ExpressionOrderError(message, expr_str=None, error_pos=None, *args)[source]¶
An exception type for unexpected operands or operators.
Here’s an example with an unexpected operator:
>>> from tt import BooleanExpression >>> b = BooleanExpression('A or or B') Traceback (most recent call last): ... tt.errors.grammar.ExpressionOrderError: Unexpected binary operator "or"
- exception tt.errors.grammar.GrammarError(message, expr_str=None, error_pos=None, *args)[source]¶
Base type for errors that occur in the handling of expression. This exception type should be sub-classed and is not meant to be raised explicitly.
- property error_pos¶
The position in the expression where the error occurred.
If this property is left as
None, it can be assumed that there is no specific location in the expression causing the exception.- Type:
- exception tt.errors.grammar.InvalidIdentifierError(message, expr_str=None, error_pos=None, *args)[source]¶
An exception type for invalid operand names. Invalid operand names are determined via the
is_valid_identifierfunction.Here are a couple of examples, for both expressions and tables:
>>> from tt import BooleanExpression, TruthTable >>> b = BooleanExpression('__A xor B') Traceback (most recent call last): ... tt.errors.grammar.InvalidIdentifierError: Invalid operand name "__A" >>> t = TruthTable(from_values='0x11', ordering=['for', 'operand']) Traceback (most recent call last): ... tt.errors.grammar.InvalidIdentifierError: "for" in ordering is not a valid symbol name
- exception tt.errors.grammar.UnbalancedParenError(message, expr_str=None, error_pos=None, *args)[source]¶
An exception type for unbalanced parentheses.
Here’s a short example:
>>> from tt import BooleanExpression >>> b = BooleanExpression('A or B or C)') Traceback (most recent call last): ... tt.errors.grammar.UnbalancedParenError: Unbalanced parenthesis
errors.state module¶
Exception type definitions related to invalid operations based on state.
- exception tt.errors.state.AlreadyConstrainedSymbolError(message, *args)[source]¶
An exception to be raised when trying to doubly constrain a symbol.
>>> from tt import BooleanExpression >>> b = BooleanExpression('A or B or C') >>> with b.constrain(C=1): ... with b.constrain(C=0): ... pass ... Traceback (most recent call last): tt.errors.state.AlreadyConstrainedSymbolError: Symbol "C" cannot be constrained multiple times
- exception tt.errors.state.AlreadyFullTableError(message, *args)[source]¶
An exception to be raised when attempting to fill an already-full table.
>>> from tt import TruthTable >>> t = TruthTable('A or B', fill_all=False) >>> t.fill() >>> t.is_full True >>> t.fill() Traceback (most recent call last): tt.errors.state.AlreadyFullTableError: Cannot fill an already-full table
- exception tt.errors.state.RequiresFullTableError(message, *args)[source]¶
An exception to be raised when a full table is required.
>>> from tt import TruthTable >>> t = TruthTable('A or B', fill_all=False) >>> t.equivalent_to('A or B') Traceback (most recent call last): tt.errors.state.RequiresFullTableError: Equivalence can only be checked on full truth tables
- exception tt.errors.state.RequiresNormalFormError(message, *args)[source]¶
An exception to be raised when expression normal form is required.
>>> from tt import BooleanExpression >>> b = BooleanExpression('A nand (B or C)') >>> b.is_cnf or b.is_dnf False >>> for clause in b.iter_clauses(): ... print(clause) ... Traceback (most recent call last): tt.errors.state.RequiresNormalFormError: Must be in conjunctive or disjunctive normal form to iterate clauses
errors.symbols module¶
Exception types related to symbol processing.
- exception tt.errors.symbols.DuplicateSymbolError(message, *args)[source]¶
An exception type for user-specified duplicate symbols.
Here’s an example where we try to pass duplicate symbols to the
orderingproperty of theTruthTableclass:>>> from tt import TruthTable >>> t = TruthTable('A or B', ordering=['A', 'A', 'B']) Traceback (most recent call last): ... tt.errors.symbols.DuplicateSymbolError: Received duplicate symbols
- exception tt.errors.symbols.ExtraSymbolError(message, *args)[source]¶
An exception for a passed token that is not a parsed symbol.
Here’s a quick table example:
>>> from tt import TruthTable >>> t = TruthTable('A or B', ordering=['A', 'B', 'C']) Traceback (most recent call last): ... tt.errors.symbols.ExtraSymbolError: Received unexpected symbols: "C"
- exception tt.errors.symbols.MissingSymbolError(message, *args)[source]¶
An exception type for a missing token value in evaluation.
>>> from tt import BooleanExpression >>> b = BooleanExpression('A and B') >>> b.evaluate(A=1) Traceback (most recent call last): ... tt.errors.symbols.MissingSymbolError: Did not receive value for the following symbols: "B"