summaryrefslogtreecommitdiff
path: root/astroid/exceptions.py
Commit message (Collapse)AuthorAgeFilesLines
* Let the type error propagate as an AstroidTypeError.Claudiu Popa2016-12-301-0/+8
|
* Even more granular copyrights (thanks to copyrite)Claudiu Popa2016-07-221-2/+5
|
* Keep a consistent copyright notice across the board.Claudiu Popa2016-07-191-0/+2
|
* Now is_subtype / is_supertype raises an internal exception when a type ↵Claudiu Popa2016-06-031-0/+4
| | | | | | | | hierarchy can't be determined It used to return Uninferable, but no call site was actually taking care of this potential return. It is better though to simply raise an exception and to let the call sites to handle them in which way they want to.
* Convert all files to new license headerCeridwen2016-05-171-17/+3
|
* Revert "Try to solve the packaging issues again"Claudiu Popa2016-02-111-0/+221
| | | | This reverts commit d37b81de4f1e64abc2f222c487785d816ab469ea.
* Try to solve the packaging issues againCeridwen2016-02-081-221/+0
|
* relative_to_absolute_name will now raise TooManyLevelsError when a relative ↵Claudiu Popa2015-12-061-0/+15
| | | | import is trying to access something beyond the top-level package.
* AstroidBuildingException is now AstroidBuildingError, the former being ↵Claudiu Popa2015-12-061-4/+4
| | | | removed in 2.0.
* Add two new exceptions, AstroidImportError and AstroidSyntaxError.Claudiu Popa2015-12-061-0/+10
| | | | | | | | They are subclasses of AstroidBuildingException and are raised when a module can't be imported from various reasons. Also do_import_module lets the errors to bubble up without converting them to InferenceError. This particular conversion happens only during the inference.
* Merge structured exceptions into 2.0Claudiu Popa2015-11-131-52/+127
|\
| * Merge upstream changesCeridwen2015-11-061-3/+3
| |\
| * | Add structured exceptions to decorators and remaining functions.Ceridwen2015-11-061-12/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Use explicit StopIteration to pass information from generators to raise_if_nothing_inferred and path_wrapper, rather than return or implicit termination by reaching the end of the code block. * Remove remove_nodes in favor of handling the cases in local_attr, istance_attr, and getattr, to avoid the need for complicated information passing when needing to raise an exception.
| * | This bookmark adds structured exceptions to astroid.Ceridwen2015-11-021-45/+133
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Major changes: * AstroidError has an __init__ that accepts arbitrary keyword-only arguments for adding information to exceptions, and a __str__ that lazily uses exception attributes to generate a message. The first positional argument to an exception is assigned to .message. The new API should be fully backwards compatible in general. * Some exceptions are combined or renamed; the old names are still available. * The OperationErrors used by pylint are now BadOperationMessages and located in util.py. * The AstroidBuildingException in _data_build stores the SyntaxError in its .error attribute rather than args[0]. * Many places where exceptions are raised have new, hopefully more useful error messages. The only major issue remaining is how to propagate information into decorators.
* | Remove the circular dependency between protocols.py and node_classes.pyClaudiu Popa2015-11-041-0/+18
|/ | | | | | | | | | | | | | | | This is accomplished with two types of modifications: * implementing dispatch functions on virtual base classes, which removes entirely the need of monkey-patching of node classes's methods. * since some of the functions in protocols.py needed to create new nodes, we injected the node_classes module into the dispatched function when calling it, which is a nice use case of dependency injection. This commit also includes new exceptions, which might be raised whenever trying to access a capability, with a dispatch function, on a node which does not support it.
* Remove doctype and future imports which aren't useful.Claudiu Popa2015-10-111-2/+0
|
* Add support for retrieving TypeErrors for binary arithmetic operations and ↵Claudiu Popa2015-06-281-0/+13
| | | | | | | | | augmented assignments. The change is similar to what was added for UnaryOps: a new method called *type_errors* for both AugAssign and BinOp, which can be used to retrieve type errors occurred during inference. Also, a new exception object was added, BinaryOperationError.
* Use the name of the operand for UnaryOperationError.__str__.Claudiu Popa2015-06-131-1/+1
|
* Make the first steps towards detecting type errors for unary and binary ↵Claudiu Popa2015-06-111-0/+21
| | | | | | | | | | | | operations. In exceptions, one object was added for holding information about a possible UnaryOp TypeError, object called `UnaryOperationError`. Even though the name suggests it's an exception, it's actually not one. When inferring UnaryOps, we use this special object to mark a possible TypeError, object which can be interpreted by pylint in order to emit a new warning. We are also exposing a new method for UnaryOps, called `type_errors`, which returns a list of UnaryOperationsError.
* Add a new SuperError exception subclass, SuperArgumentTypeError, which is ↵Claudiu Popa2015-05-291-0/+4
| | | | raised when there's a problem with any argument of the super call (invalid types).
* Add a new *inference object* called SuperClaudiu Popa2015-05-281-0/+4
| | | | | | | | | | | | This patch also adds support for understanding super calls. astroid understands the zero-argument form of super, specific to Python 3, where the interpreter fills itself the arguments of the call. Also, we are understanding the 2-argument form of super, both for bounded lookups (super(X, instance)) as well as for unbounded lookups (super(X, Y)), having as well support for validating that the object-or-type is a subtype of the first argument. The unbounded form of super (one argument) is not understood, since it's useless in practice and should be removed from Python's specification. Closes issue #89.
* Add two new exceptions for handling MRO error cases.Claudiu Popa2015-05-031-0/+12
| | | | | | | DuplicateBasesError is emitted when duplicate bases are found in a class, InconsistentMroError is raised when the method resolution is determined to be inconsistent. They share a common class, MroError, which is a subclass of ResolveError, meaning that this change is backwards compatible.
* Move all astroid modules into a its own directory, which is now the package.Torsten Marek2014-11-081-0/+51
python setup.py develop now works.