Skip to content
This repository was archived by the owner on Apr 14, 2022. It is now read-only.

Fix hovering over parts of 'from A.B import C` - #623

Merged
Mikhail Arkhipov (MikhailArkhipov) merged 12 commits into
microsoft:masterfrom
MikhailArkhipov:607
Feb 20, 2019
Merged

Mikhail Arkhipov (MikhailArkhipov) merged 12 commits into
microsoft:masterfrom
MikhailArkhipov:607

Conversation

@MikhailArkhipov

@MikhailArkhipov Mikhail Arkhipov (MikhailArkhipov) commented Feb 16, 2019 •

Copy link
Copy Markdown

Fixes #607
Fixes #569

  • Implements handling of platform conditionals
  • Implements specialization of os.path in conditionals
  • Better handles hover in import/from import statements
  • Fixes bug when variable was not defined in imports like from A import B as C
  • Fixed bug when type of C in import B as C was not extracted (and documentation was empty) b/c GetPythonType did not handle variables.
  • Several new tests for the above.

@jakebailey

Copy link
Copy Markdown
Member

Is this intended?

image

@MikhailArkhipov

Copy link
Copy Markdown
Author

Depends where you hover. Over numpy, no. Over linalg, yes.

@jakebailey

Copy link
Copy Markdown
Member

I hovered over numpy on the second line, not linalg.

Implement platform handling
Specialize os.path
@MikhailArkhipov

Copy link
Copy Markdown
Author

Ended up more complicated than originally planned.

@jakebailey

Copy link
Copy Markdown
Member

I can't get the LS to start with this branch anymore:

[Error - 9:51:35 AM] Server initialization failed.
  Message: Object reference not set to an instance of an object.
  Code: -32000 
   at Microsoft.Python.Analysis.MemberExtensions.IsUnknown(IMember m) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Extensions\MemberExtensions.cs:line 26
   at Microsoft.Python.Analysis.Types.PythonFunctionOverload.AddReturnValue(IMember value) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Types\PythonFunctionOverload.cs:line 91
   at Microsoft.Python.Analysis.Analyzer.Symbols.FunctionEvaluator.WalkAsync(ReturnStatement node, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\Symbols\FunctionEvaluator.cs:line 110
   at Microsoft.Python.Parsing.Ast.ReturnStatement.WalkAsync(PythonWalkerAsync walker, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Parsing\Impl\Ast\ReturnStatement.cs:line 36
   at Microsoft.Python.Parsing.Ast.SuiteStatement.WalkAsync(PythonWalkerAsync walker, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Parsing\Impl\Ast\SuiteStatement.cs:line 46
   at Microsoft.Python.Parsing.Ast.SuiteStatement.WalkAsync(PythonWalkerAsync walker, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Parsing\Impl\Ast\SuiteStatement.cs:line 46
   at Microsoft.Python.Analysis.Analyzer.Symbols.FunctionEvaluator.EvaluateAsync(CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\Symbols\FunctionEvaluator.cs:line 83
   at Microsoft.Python.Analysis.Analyzer.Symbols.ModuleSymbolTable.EvaluateScopeAsync(ScopeStatement target, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\Symbols\ModuleSymbolTable.cs:line 81
   at Microsoft.Python.Analysis.Analyzer.Symbols.ClassEvaluator.ProcessClassBody(CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\Symbols\ClassEvaluator.cs:line 109
   at Microsoft.Python.Analysis.Analyzer.Symbols.ClassEvaluator.EvaluateClassAsync(CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\Symbols\ClassEvaluator.cs:line 70
   at Microsoft.Python.Analysis.Analyzer.Symbols.ModuleSymbolTable.EvaluateAsync(ScopeStatement target, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\Symbols\ModuleSymbolTable.cs:line 92
   at Microsoft.Python.Analysis.Analyzer.Symbols.ClassEvaluator.ProcessClassBody(CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\Symbols\ClassEvaluator.cs:line 81
   at Microsoft.Python.Analysis.Analyzer.Symbols.ClassEvaluator.EvaluateClassAsync(CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\Symbols\ClassEvaluator.cs:line 70
   at Microsoft.Python.Analysis.Analyzer.Symbols.ModuleSymbolTable.EvaluateAsync(ScopeStatement target, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\Symbols\ModuleSymbolTable.cs:line 92
   at Microsoft.Python.Analysis.Analyzer.ModuleWalker.WalkAsync(ClassDefinition node, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\ModuleWalker.cs:line 53
   at Microsoft.Python.Parsing.Ast.ClassDefinition.WalkAsync(PythonWalkerAsync walker, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Parsing\Impl\Ast\ClassDefinition.cs:line 144
   at Microsoft.Python.Parsing.Ast.SuiteStatement.WalkAsync(PythonWalkerAsync walker, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Parsing\Impl\Ast\SuiteStatement.cs:line 46
   at Microsoft.Python.Parsing.Ast.PythonAst.WalkAsync(PythonWalkerAsync walker, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Parsing\Impl\Ast\PythonAst.cs:line 87
   at Microsoft.Python.Analysis.Analyzer.PythonAnalyzer.AnalyzeAsync(IDependencyChainNode node, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\PythonAnalyzer.cs:line 149
   at Microsoft.Python.Analysis.Analyzer.PythonAnalyzer.AnalyzeDocumentAsync(IDocument document, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\PythonAnalyzer.cs:line 59
   at Microsoft.Python.Analysis.Modules.Resolution.MainModuleResolution.LoadBuiltinTypesAsync(CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Modules\Resolution\MainModuleResolution.cs:line 144
   at Microsoft.Python.Analysis.Analyzer.PythonInterpreter.LoadBuiltinTypesAsync(String root, IServiceManager sm, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\PythonInterpreter.cs:line 61
   at Microsoft.Python.Analysis.Analyzer.PythonInterpreter.CreateAsync(InterpreterConfiguration configuration, String root, IServiceManager sm, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\Analysis\Ast\Impl\Analyzer\PythonInterpreter.cs:line 67
   at Microsoft.Python.LanguageServer.Implementation.Server.InitializeAsync(InitializeParams params, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\LanguageServer\Impl\Implementation\Server.cs:line 120
   at Microsoft.Python.LanguageServer.Implementation.LanguageServer.Initialize(JToken token, CancellationToken cancellationToken) in C:\Users\jabaile\mikhail-language-server\src\LanguageServer\Impl\LanguageServer.Lifetime.cs:line 36

@MikhailArkhipov
Mikhail Arkhipov (MikhailArkhipov) merged commit d07af9a into microsoft:master Feb 20, 2019
Jake Bailey (jakebailey) pushed a commit to jakebailey/python-language-server that referenced this pull request Nov 1, 2019
* Fix microsoft#601

* Fix microsoft#607

* Update test

* Fix version conditionals
Implement platform handling
Specialize os.path

* Null checks

* Merge issues

* Merge branch 'master' of https://github.com/Microsoft/python-language-server into 601

* Using

* Merge master
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants