Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import widgets
from widgets import Widget


def render(name: str, width: int) -> str:
widget: widgets.Widget = widgets.Widget(name, width=width)
try:
return widgets.Widget.render(widget, prefix="> ")
except widgets.WidgetError:
return ""
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"pythonVersion": "3.11",
"extraPaths": ["../../site-packages"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# < definition scip-python python snapshot-util 0.1 external_class/__init__:

import widgets
# ^^^^^^^ reference widgets 1.2.3 widgets/__init__:
from widgets import Widget
# ^^^^^^^ reference widgets 1.2.3 widgets/__init__:
# ^^^^^^ reference widgets 1.2.3 `widgets.models`/Widget#


def render(name: str, width: int) -> str:
# ^^^^^^ definition snapshot-util 0.1 external_class/render().
# ^^^^ definition snapshot-util 0.1 external_class/render().(name)
# ^^^ reference python-stdlib 3.11 builtins/str#
# ^^^^^ definition snapshot-util 0.1 external_class/render().(width)
# ^^^ reference python-stdlib 3.11 builtins/int#
# ^^^ reference python-stdlib 3.11 builtins/str#
widget: widgets.Widget = widgets.Widget(name, width=width)
# ^^^^^^ definition local 0
# ^^^^^^^ reference widgets 1.2.3 widgets/__init__:
# ^^^^^^ reference widgets 1.2.3 `widgets.models`/Widget#
# ^^^^^^^ reference widgets 1.2.3 widgets/__init__:
# ^^^^^^ reference widgets 1.2.3 `widgets.models`/Widget#
# ^^^^ reference snapshot-util 0.1 external_class/render().(name)
# ^^^^^ reference widgets 1.2.3 `widgets.models`/Widget#__init__().(width)
# ^^^^^ reference snapshot-util 0.1 external_class/render().(width)
try:
return widgets.Widget.render(widget, prefix="> ")
# ^^^^^^^ reference widgets 1.2.3 widgets/__init__:
# ^^^^^^ reference widgets 1.2.3 `widgets.models`/Widget#
# ^^^^^^ reference widgets 1.2.3 `widgets.models`/Widget#render().
# ^^^^^^ reference local 0
# ^^^^^^ reference widgets 1.2.3 `widgets.models`/Widget#render().(prefix)
except widgets.WidgetError:
# ^^^^^^^ reference widgets 1.2.3 widgets/__init__:
# ^^^^^^^^^^^ reference widgets 1.2.3 `widgets.models`/WidgetError#
return ""

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from .models import Widget, WidgetError

__all__ = ["Widget", "WidgetError"]
11 changes: 11 additions & 0 deletions packages/pyright-scip/snapshots/site-packages/widgets/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class WidgetError(Exception):
pass


class Widget:
def __init__(self, name: str, width: int = 0) -> None:
self.name = name
self.width = width

def render(self, prefix: str = "") -> str:
return prefix + self.name
5 changes: 5 additions & 0 deletions packages/pyright-scip/snapshots/testEnv.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,10 @@
"name": "sqlparse",
"version": "0.4.2",
"files": []
},
{
"name": "widgets",
"version": "1.2.3",
"files": ["widgets/__init__.py", "widgets/models.py"]
}
]
20 changes: 17 additions & 3 deletions packages/pyright-scip/src/treeVisitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1123,7 +1123,13 @@ export class TreeVisitor extends ParseTreeWalker {
const bound = typeVar.details.boundType! as ClassType;

return this.getSymbolOnce(node, () => {
const pythonPackage = this.getPackageInfo(node, bound.details.moduleName)!;
const pythonPackage = this.guessPackage(
bound.details.moduleName,
bound.details.filePath
);
if (!pythonPackage) {
return ScipSymbol.local(this.counter.next());
}
let symbol = Symbols.makeTerm(
Symbols.makeType(
Symbols.makeModule(pythonPackage, bound.details.moduleName),
Expand Down Expand Up @@ -1343,7 +1349,12 @@ export class TreeVisitor extends ParseTreeWalker {
}
return this.getFunctionSymbol(decl);
} else if (Types.isClass(typeObj)) {
const pythonPackage = this.getPackageInfo(node, typeObj.details.moduleName)!;
// The package comes from the declaring file. `node` is the referencing
// site, which is in the project whenever a project file is visited.
const pythonPackage = this.guessPackage(typeObj.details.moduleName, typeObj.details.filePath);
if (!pythonPackage) {
return ScipSymbol.local(this.counter.next());
}
return Symbols.makeClass(pythonPackage, typeObj.details.moduleName, node.value);
} else if (Types.isClassInstance(typeObj)) {
typeObj = typeObj as ClassType;
Expand All @@ -1352,7 +1363,10 @@ export class TreeVisitor extends ParseTreeWalker {
} else if (Types.isTypeVar(typeObj)) {
throw 'typevar';
} else if (Types.isModule(typeObj)) {
const pythonPackage = this.getPackageInfo(node, typeObj.moduleName)!;
const pythonPackage = this.guessPackage(typeObj.moduleName, typeObj.filePath);
if (!pythonPackage) {
return ScipSymbol.local(this.counter.next());
}
return Symbols.makeModuleInit(pythonPackage, typeObj.moduleName);
} else if (Types.isOverloadedFunction(typeObj)) {
if (!typeObj.overloads) {
Expand Down