summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* print_statement -> print_function.fix-python3-testsOmer Katz2015-06-023-3/+3
|
* Fixed syntax errors in Python 3.Omer Katz2015-06-017-15/+16
|
* Add a new SuperError exception subclass, SuperArgumentTypeError, which is ↵Claudiu Popa2015-05-293-8/+17
| | | | raised when there's a problem with any argument of the super call (invalid types).
* Fail when calling Super.super_mro if the object-or-type is not the expected ↵Claudiu Popa2015-05-292-1/+15
| | | | type.
* Remove unused import.Claudiu Popa2015-05-281-1/+1
|
* Update the rules for what descriptor is returned from a super(), depending ↵Claudiu Popa2015-05-283-17/+82
| | | | on the accessed object.
* Add a new *inference object* called SuperClaudiu Popa2015-05-286-2/+578
| | | | | | | | | | | | 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.
* Fix Pylint warnings over astroid.Claudiu Popa2015-05-244-7/+10
|
* Update the list of disabled messages.Claudiu Popa2015-05-191-1/+3
|
* Fix pylint warnings over astroid, update the list of disabled messages in ↵Claudiu Popa2015-05-1920-265/+266
| | | | pylintrc.
* Activate a disabled test.Claudiu Popa2015-05-191-10/+11
|
* Fix bad-continuation errors from astroid.Claudiu Popa2015-05-197-47/+46
|
* Remove redundant if, astroid is 2.7+ only.Claudiu Popa2015-05-191-2/+1
|
* Specify that inference objects can be found in the AST tree, but only after ↵Claudiu Popa2015-05-192-3/+3
| | | | inference.
* Add a new type of nodes, called *inference objects*.Claudiu Popa2015-05-197-1/+181
| | | | | | | | | | | Inference objects are similar with AST nodes, but they can be obtained only after inference, so they can't be found inside the AST tree. Their purpose is to handle at astroid level some operations which can't be handled when using brain transforms. For instance, the first object added is FrozenSet, which can be manipulated at astroid's level (inferred, itered etc). Code such as this 'frozenset((1,2))' will not return an Instance of frozenset, without having access to its content, but a new objects.FrozenSet, which can be used just as a nodes.Set.
* Merge.Claudiu Popa2015-05-132-0/+32
|\
| * Merged in raylu/astroid/pylint-480 (pull request #76)Claudiu Popa2015-05-132-0/+33
| |\ | | | | | | | | | brain module for dateutil.parser.parse
| | * Add brain module for dateutil.parser.parsepylint-480raylu2015-05-122-0/+33
| |/
* | Cleanup.Claudiu Popa2015-05-111-2/+5
|/
* Raise an InferenceError when having multiple 'as' bindings from a context ↵Claudiu Popa2015-05-092-1/+19
| | | | manager, but the result doesn't have those indices.
* Remove trailing whitespace.Claudiu Popa2015-05-091-2/+2
|
* Add support for understanding context managers created with ↵Claudiu Popa2015-05-093-9/+95
| | | | contextlib.contextmanager.
* Add a test which shows that using namedtuple-generated classes with classes ↵Claudiu Popa2015-05-091-0/+11
| | | | with the same name leads to an invalid MRO.
* local_attr_ancestors fallbacks to using .ancestors if .mro() fails.Claudiu Popa2015-05-092-4/+11
|
* .root() can't always return a Module, do a getattr over pure_python method ↵Claudiu Popa2015-05-091-1/+1
| | | | instead.
* Remove trailing whitespace.Claudiu Popa2015-05-092-3/+3
|
* Add basic support for understanding context managers.Claudiu Popa2015-05-093-9/+151
| | | | | | | Currently, there's no way to understand whatever __enter__ returns in a context manager and what it is binded using the ``as`` keyword. With these changes, we can understand ``bar`` in ``with foo() as bar``, which will be the result of __enter__. There's no support for contextlib.contextmanager yet.
* Remove unused variable.Claudiu Popa2015-05-081-1/+1
|
* Handle builtins without a __module__, especially for Jython.Claudiu Popa2015-05-082-6/+13
|
* Remove trailing whitespace.Claudiu Popa2015-05-081-1/+1
|
* open doesn't have a __module__ attribute on Jython. Handle this case.Claudiu Popa2015-05-082-2/+19
|
* Make sure that sys.stderr is reset after the .infer() call.Claudiu Popa2015-05-071-7/+13
|
* Class.has_dynamic_getattr doesn't return True for special methods which ↵Claudiu Popa2015-05-073-5/+37
| | | | | | | | | | aren't implemented in pure Python. Since most likely the methods were coming from a live object, this implies that all of them will have __getattr__ and __getattribute__ present and it is wrong to consider that those methods were actually implemented (the descriptors will be there, not necessarily implying that the function is user implemented).
* Update the docstring for has_dynamic_getattr to better reflect reality.Claudiu Popa2015-05-061-2/+7
|
* Remove hardcoded behaviour of has_dynamic_getattr for optparse.Claudiu Popa2015-05-061-3/+0
|
* _io names itself io. This patch fixes some cyclic dependencies when solving ↵Claudiu Popa2015-05-062-1/+24
| | | | io.BufferedReader and friends.
* Classes aren't marked as interfaces anymore, in the `type` attribute.Claudiu Popa2015-05-053-6/+4
|
* Merged in lorenzph/astroid/fix-recursive-attr-lookups (pull request #75)Claudiu Popa2015-05-052-3/+21
|\ | | | | | | Fix recursive class attribute lookups
| * Fix recursive class attribute lookupsfix-recursive-attr-lookupsPhilip Lorenz2015-05-042-3/+21
|/ | | | | | | Commit 83053ac added MRO lookup support for new-style only class hierarchies. Due to a typo old-style / mixed-style class hierarchies were either not traversed recursively or traversed with the wrong context.
* Add a new possible property, lazy_attribute.Claudiu Popa2015-05-031-1/+2
|
* Add two new exceptions for handling MRO error cases.Claudiu Popa2015-05-034-12/+48
| | | | | | | 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.
* Merged in lorenzph/astroid/enum-fixes (pull request #74)Claudiu Popa2015-05-020-0/+0
|\ | | | | | | Ensure that generated enum values have the correct base classes
* | Ensure that generated enum values have the correct base classesenum-fixesPhilip Lorenz2015-05-013-2/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Enum values should share the same base classes as their defining class. If this is not the case it may lead to wrong inference results when an enum member is used - e.g. for the following snippet: class X(enum.IntEnum): one = 1 print([1, 2][X.one]) pylint will detect a "invalid-sequence-index" error as the __index__ method of X.one is not detected.
* | Add basic unit test for enum supportPhilip Lorenz2015-05-011-0/+34
|/ | | | | This test verifies that the generated enum member stubs behave implement the correct interface.
* Don't let ResolveError leak out from local_attr, when using .mro().Claudiu Popa2015-04-302-1/+13
|
* SyncManager is a context manager as well.Claudiu Popa2015-04-291-0/+2
|
* Expose a implicit_metaclass() method in Class.Claudiu Popa2015-04-253-1/+30
| | | | | This will return a builtins.type instance for newstyle classes, otherwise it will return None.
* remove set_context linejarradhope2015-04-241-1/+0
|
* Add six tips for vendorized requests library.Claudiu Popa2015-04-241-0/+1
|
* Class.local_attr and Class.local_attr_ancestors uses internally a mro ↵Claudiu Popa2015-04-183-2/+41
| | | | | | | | | | | | | lookup, using .mro() method, if they can. That means for newstyle classes, when trying to lookup a member using one of these functions, the first one according to the mro will be returned. This reflects nicely the reality, but it can have as a drawback the fact that it is a behaviour change (the previous behaviour was incorrect though). Also, having bases which can return multiple values when inferred will not work with the new approach, because .mro() only retrieves the first value inferred from a base.