Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
marvel
GitHub Repository: marvel/qnf
Path: blob/master/elisp/emacs-for-python/rope-dist/rope/base/pynamesdef.py
1439 views
1
import rope.base.oi.soi
2
from rope.base import pynames
3
from rope.base.pynames import *
4
5
6
class AssignedName(pynames.AssignedName):
7
8
def __init__(self, lineno=None, module=None, pyobject=None):
9
self.lineno = lineno
10
self.module = module
11
self.assignments = []
12
self.pyobject = _Inferred(self._get_inferred,
13
pynames._get_concluded_data(module))
14
self.pyobject.set(pyobject)
15
16
@utils.prevent_recursion(lambda: None)
17
def _get_inferred(self):
18
if self.module is not None:
19
return rope.base.oi.soi.infer_assigned_object(self)
20
21
def get_object(self):
22
return self.pyobject.get()
23
24
def get_definition_location(self):
25
"""Returns a (module, lineno) tuple"""
26
if self.lineno is None and self.assignments:
27
self.lineno = self.assignments[0].get_lineno()
28
return (self.module, self.lineno)
29
30
def invalidate(self):
31
"""Forget the `PyObject` this `PyName` holds"""
32
self.pyobject.set(None)
33
34
35
class ParameterName(pynames.ParameterName):
36
37
def __init__(self, pyfunction, index):
38
self.pyfunction = pyfunction
39
self.index = index
40
41
def get_object(self):
42
result = self.pyfunction.get_parameter(self.index)
43
if result is None:
44
result = rope.base.pyobjects.get_unknown()
45
return result
46
47
def get_objects(self):
48
"""Returns the list of objects passed as this parameter"""
49
return rope.base.oi.soi.get_passed_objects(
50
self.pyfunction, self.index)
51
52
def get_definition_location(self):
53
return (self.pyfunction.get_module(), self.pyfunction.get_ast().lineno)
54
55
_Inferred = pynames._Inferred
56
57