Dave Halter
c4e45916c6
Modules also use a NamePart as a name, now.
2014-09-22 12:52:48 +02:00
Dave Halter
779618c08b
First changes to eventually replace Name by NamePart.
2014-09-22 11:57:19 +02:00
Dave Halter
b26f51ded2
Fix obvious UnboundLocalError.
2014-09-19 18:08:30 +02:00
Dave Halter
78bd775889
Only real modules should be added in get_modules_containing_name.
2014-09-19 18:05:57 +02:00
Dave Halter
e0f84ccb86
Tests for issues with default args in dynamic param contexts.
2014-09-19 16:56:26 +02:00
Dave Halter
d4503c77a5
get_parent_until should always have the same signature.
...
Fix it for ArrayMethod.get_parent_until.
2014-09-19 16:17:05 +02:00
Dave Halter
99d35e57b6
Fix alias usages in goto_assignments.
2014-09-19 13:42:47 +02:00
Dave Halter
ed56f73836
Care for nested imports in goto_assignments.
2014-09-19 12:14:29 +02:00
Dave Halter
fc5f73861c
Fix issues with the os module.
...
Using a try/finally assures that the recursion checkers work the right way.
2014-09-19 10:59:24 +02:00
Dave Halter
b2342c76be
Refactoring: Make Import.get_all_import_names return NameParts.
2014-09-19 01:40:09 +02:00
Dave Halter
83d2af5138
First imports are working with goto.
2014-09-19 01:21:17 +02:00
Dave Halter
610b2fc832
tests for goto on imports.
2014-09-19 00:49:22 +02:00
Dave Halter
7b0bb83d16
Change the behavior of eval_statement_element and follow_call_path. Arrays should only be looked at in the latter.
2014-09-18 23:44:11 +02:00
Dave Halter
69e6139527
Goto on named params in class calls is now working.
2014-09-18 20:11:58 +02:00
Dave Halter
ba80e35204
Test for an issue with named params in class calls (instead of functions).
2014-09-18 13:30:52 +02:00
Dave Halter
9fa6a86a19
Tests for Definition.is_definition().
2014-09-17 18:17:22 +02:00
Dave Halter
9983898162
Temporarily disable a test for goto on nested imports. The positions are currently wrong. But this is a known issue.
2014-09-11 02:27:53 +02:00
Dave Halter
085c8034b3
Apply evaluate.representation wrappers already before they go out into the goto world.
2014-09-11 02:20:54 +02:00
Dave Halter
1624fa0872
Replace BaseDefinition._name.get_definition() calls with BaseDefinition._definition.
2014-09-11 01:36:21 +02:00
Dave Halter
71efb51f2a
Remove BaseDefinition._start_pos.
2014-09-11 01:21:08 +02:00
Dave Halter
283afa78f1
Remove code that is not needed anymore, because the Definition/Completion import is now standardized (to NamePart).
2014-09-11 01:15:00 +02:00
Dave Halter
9f16555f47
Big refactoring: BaseDefinition._definnition changes to BaseDefinition._name, because it's a NamePart now.
...
This also includes changes to tests and some simplifications like deleting the old name logic of Definition.
2014-09-11 01:03:30 +02:00
Dave Halter
58526e2302
Completion now also uses only NameParts as its _definition attribute.
2014-09-10 20:12:19 +02:00
Dave Halter
8f892e3922
Use FakeName instead of a custom KeywordName.
2014-09-10 20:07:13 +02:00
Dave Halter
1fb9b4bc6b
Completion now always takes a NamePart as input.
2014-09-10 18:59:08 +02:00
Dave Halter
0eea30f227
NamePart migration of Definition is complete. Now Completion.
2014-09-10 18:29:10 +02:00
Dave Halter
2aa538999e
Removed an old test from the days where it was allowed to add Keywords to Definitions.
2014-09-10 18:05:04 +02:00
Dave Halter
46b49af5d9
Even params should be NameParts as a Definition input.
2014-09-10 17:41:06 +02:00
Dave Halter
5e28d69437
Fix remaining usage issues.
2014-09-10 17:15:58 +02:00
Dave Halter
4060c4dc55
Fix some goto issues.
2014-09-10 16:39:09 +02:00
Dave Halter
a93a389d5c
Fix all the normal issues with the NameFinder change. Now goto...
2014-09-10 16:30:22 +02:00
Dave Halter
657a2c7d4f
Trying to get the NameFinder to use only NameParts.
2014-09-10 16:20:30 +02:00
Dave Halter
43cf1d451f
Python 2/3 compatibility issues that were not resolved in the latest commit.
2014-09-09 17:51:39 +02:00
Dave Halter
fdc637c5c4
Add a forgotten test module, test_sys_path.py and fix Python2/3 compatibility issues.
2014-09-09 17:08:22 +02:00
Dave Halter
38f7296f39
Typo.
2014-09-09 16:51:46 +02:00
Dave Halter
87aa76678a
Goto should work on named params, too.
2014-09-09 16:48:53 +02:00
Dave Halter
110f130741
Make it possible to get previous statements of Calls.
2014-09-09 16:44:56 +02:00
Dave Halter
b68a59daef
Fix the last remaining issues of the first part of the NamePart switch.
2014-09-09 15:58:20 +02:00
Dave Halter
45e033c50e
Quite a few fixes to be eventually able to use NameParts as Definition inputs.
2014-09-09 15:21:27 +02:00
Dave Halter
1199defabb
Start to use NameParts only in Definition contexts.
2014-09-09 14:13:10 +02:00
Dave Halter
ff7680c15f
Generate the expression_list of a statement in any case.
...
This is a consequence of being able to have Calls as parents of Names. Otherwise we would have changing Name.parent values.
2014-09-09 12:54:46 +02:00
Dave Halter
740fd0657f
Add a goto_assignments test for named params
2014-09-09 00:06:24 +02:00
Dave Halter
0dcb91d236
Add a Definition.is_definition function to be able to check if a name is a definition or not.
2014-09-08 23:44:35 +02:00
Dave Halter
851717a968
Publicize jedi.names and add a first test.
2014-09-08 22:39:47 +02:00
Dave Halter
be85391321
Create a 'jedi.names' function with the proper docstring.
...
Modelled according the discussion in #477 .
2014-09-08 21:43:16 +02:00
Dave Halter
ca536baf9b
Last fixes, because of the Name.get_definition change. The recent parser.representation changes are now fully working and we're ready to improve Evaluator.goto again.
2014-09-06 13:23:00 +02:00
Dave Halter
ece9fdf4ae
Fixing most of the issues that existed, because of the recent Name.get_definition/Call.name.parent change.
2014-09-06 13:02:52 +02:00
Dave Halter
2e7e2f0a29
Name parents are now Calls (once their statements have generated the Calls).
...
This makes the goto function more powerful. Also fixes an issue with the deep_ast_copy, that I tried to fix previously, but failed, because I hadn't tested it.
2014-09-06 12:19:07 +02:00
Dave Halter
5a3ee02399
Use ExprStmt pretty much everywhere where it should be used.
...
ExprStmt is now really a normal statement. All the other statements are from now on considered legacy code. As a side effect this increases the parser pickling version.
2014-09-06 11:13:58 +02:00
Dave Halter
cb84bc0829
Start using ExprStmt.
2014-09-06 10:46:59 +02:00
Dave Halter
f57d9ef675
Rename Name.get_parent_stmt to Name.get_definition, because it's not always a statement. Also start using it in the NameFinder.
2014-09-06 10:43:26 +02:00
Dave Halter
99116cdcb7
Add a Name.get_parent_stmt() function.
2014-09-05 22:26:55 +02:00
Dave Halter
6c07c7acfe
Create an ExprStatement class to replace the Statement class in the future and separate array parts of actual statements
2014-09-05 22:21:26 +02:00
Dave Halter
12154fdecf
Refactor a few name finder things.
2014-09-05 12:12:29 +02:00
Dave Halter
ba805879b4
Updated helpers.deep_ast_copy. Now the function copies statements in a better way.
...
Previously statement attributes where scanned like every other objects. Now two statements get priority: _assignment_details and _expression_list. This is necessary if we want to switch towards proper name parents (A Call would be the parent of a name, not a Statement)
2014-09-05 11:49:45 +02:00
Dave Halter
42d6b57599
precedence._is_string -> precedence.is_string
2014-09-04 14:13:26 +02:00
Dave Halter
7b2e11d71b
Rewrote sys_path._paths_from_assignment.
2014-09-04 14:12:10 +02:00
Dave Halter
4180005893
Forgot to add the the params in the case of a class in the previous commit.
2014-09-04 12:53:42 +02:00
Dave Halter
06699993f1
Class inheritance definitions shouldn't be params. It's just statements.
2014-09-04 12:28:50 +02:00
Dave Halter
1df025c39d
Definitions should not be followed in Evaluator.goto.
2014-09-04 11:55:42 +02:00
Dave Halter
e872d9e073
Script.goto_assignments now always needs a call_path. Otherwise it raises a NotFoundError.
...
This change makes Jedi's behavior more consistent.
2014-09-04 00:56:58 +02:00
Dave Halter
fb10199f37
Remove search_name and search_name_part from goto returns.
...
The search_name can be retrieved by checking definitions for it. Definitions should always be names or even better name_parts in case of goto. Therefore we can just get it there.
2014-09-03 23:28:19 +02:00
Dave Halter
f7a1c110ba
Fix remaining issues with CompiledName.name change.
2014-09-03 19:47:37 +02:00
Dave Halter
bb5ffe9343
CompiledObject.name returns a Name now, not a string. This is more consistent with the Jedi design and doesn't lead to bugs while ducktyping.
2014-09-03 19:43:21 +02:00
Dave Halter
18204c4c19
By trying to get rid of search_name in usages, we had to fix an issue with imports:
...
If used like 'follow(is_goto)', it could return a ModuleWrapper instead of a Name, which is what we actually want.
2014-09-03 19:30:00 +02:00
Dave Halter
59578966cf
Remove code that is not used anymore from Script._goto
2014-09-03 18:02:20 +02:00
Dave Halter
e2ca11435c
Script._goto improvements and documentation.
2014-09-03 17:27:26 +02:00
Dave Halter
95852f5e7f
Clarify inner workings of Evaluator.goto
2014-09-03 14:58:24 +02:00
Dave Halter
bcc84820fe
Fix issues with unreachable flows.
...
This benefits static analysis as well as autocompletion: Unreachable code (things like code within 'if 0:') should still be resolveable.
2014-09-03 00:05:37 +02:00
Dave Halter
ea5b98905e
Make statement_elements_in_statement work with ListComprehensions, Lambdas and 'except foo as' expressions
2014-09-02 14:52:04 +02:00
Dave Halter
38c71fce3f
Added tests for statement_elements_in_statement
2014-09-02 12:10:16 +02:00
Dave Halter
f785aa26dd
Additional helper methods, to find all the statement elements that are needed.
2014-09-02 03:26:17 +02:00
Dave Halter
be9e77d7d3
Add a temporary api._names, to make it possible to annotate a full script with types.
2014-09-01 18:10:40 +02:00
Dave Halter
bbf1070ad9
Add a helper function to list all name parts of a given module.
2014-09-01 13:20:01 +02:00
Dave Halter
76d91ba72a
Rename fast_parent_copy to deep_ast_copy.
2014-08-22 00:59:46 +02:00
Dave Halter
ed3b507ab7
cleanup
2014-08-22 00:47:08 +02:00
Dave Halter
6ba0b7b81e
lower than/greater than operators evaluate to a boolean now. This is not a 100% correct, because it doesn't evaluate __gt__, etc. But that's ok for now.
2014-08-22 00:26:55 +02:00
Dave Halter
039a5ecaf9
Fix issues caused by KeywordStatement, which needs to be copied as well.
2014-08-21 16:51:00 +02:00
Dave Halter
0ef030848d
refactor fast_parent_copy, use new_elements_default to hand in a dictionary, that contains all the generated duplicates.
2014-08-21 13:17:33 +02:00
Dave Halter
3cf8bfa8e1
Fix a few tests by either fixing the test cases or adding py__bool__ functions to objects that should have such a method.
2014-08-20 17:28:54 +02:00
Dave Halter
f911050300
Rewrote the isistance implementation, so that it works properly with tuples as well as normal classes.
2014-08-20 16:58:19 +02:00
Dave Halter
2a964d4e48
Also implement the or operator.
2014-08-20 16:28:04 +02:00
Dave Halter
148d17b3be
Implementation of the and operation.
2014-08-20 16:21:33 +02:00
Dave Halter
d6dd7cd55e
Move process_precedence_element from the Evaluator to the precedence module.
2014-08-20 15:59:37 +02:00
Dave Halter
9abc8a19e7
By adding a py__class__ method to CompiledObject and Class, we Jedi is able to understand isinstance checks, now.
...
This also includes a CheckAttribute class in evaluatue.compiled, because it's way easier to generalize the AttributeErrors there.
2014-08-20 14:46:18 +02:00
Dave Halter
0e66aef511
Use IterableWrapper in the iterable module to be able to add methods like is_class quickly.
2014-08-20 14:01:41 +02:00
Dave Halter
442a1a1d08
wrap some more values with er.wrap
2014-08-20 13:52:49 +02:00
Dave Halter
c9542cbc04
Start implementing an is_class function that will determine if an object is a class or not in the future.
2014-08-20 11:43:25 +02:00
Dave Halter
7f874620db
Start documenting all the py__foo__ methods
2014-08-20 11:31:23 +02:00
Dave Halter
2e949b43bb
Ignore FunctionExecutions in old style isinstance checks for now, because it collides with new style isinstance checks.
2014-08-20 11:31:11 +02:00
Dave Halter
09ca47fa93
Introduce a dedicated isinstance function implementation.
2014-08-19 23:57:59 +02:00
Dave Halter
49163e135c
flow_analysis test for isinstance as well as and/or operations.
2014-08-19 01:03:14 +02:00
Dave Halter
77673ba986
Add an optional param 'parent' to parser.representation.Simple, which simplifies some calls to that superclass.
2014-08-19 00:30:17 +02:00
Dave Halter
8bde89cc58
Fix the remaining issues with the StatementElement.next refactoring.
2014-08-19 00:12:14 +02:00
Dave Halter
8006d6f190
Change implementation of StatementElement.
...
Instead of having both next and execution as attributes, we now only have next, because it's an execution if there's an array.
2014-08-18 22:25:55 +02:00
Dave Halter
7619bf27d1
Simplify goto_definition in case it done on a function.
2014-08-18 15:00:14 +02:00
Dave Halter
00d15da143
refactor search_call_signatures. Now we don't need to set Call.next.parent in a strange way anymore and the whole thing seems to be more logical.
2014-08-18 14:51:38 +02:00
Dave Halter
542648f5a0
first step in refactoring call_signature_array_for_pos, use original_call as a param.
2014-08-18 13:39:01 +02:00
Dave Halter
9f38f10366
fix tests. Operators should not equal to other operators with a different position. or even parent.
2014-08-18 13:13:07 +02:00
Dave Halter
1d812c2414
Use the "wrong" parents again for next/execution in StatementElement. This is important for call_signature lookups. We might still be able to change this somewhere in time.
2014-08-18 11:22:38 +02:00