Skip to content

Commit

Permalink
Update pydevd
Browse files Browse the repository at this point in the history
  • Loading branch information
fabioz committed Mar 12, 2024
1 parent f5f506c commit 75e2832
Show file tree
Hide file tree
Showing 293 changed files with 42,702 additions and 42,858 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ AUTO_LINK: false
AUTO_LITERALS: true
AUTO_PAR: true
AUTO_WRITE_IMPORT_STR: true
BLACK_FORMATTER_FILE_LOCATION: ''
BLACK_FORMATTER_LOCATION_OPTION: LOCATION_SEARCH
BLACK_PARAMETERS: ''
BLANK_LINES_INNER: 1
BLANK_LINES_TOP_LEVEL: 2
Expand All @@ -18,7 +20,7 @@ DATE_FIELD_FORMAT: yyyy-MM-dd
DATE_FIELD_NAME: __updated__
DELETE_UNUSED_IMPORTS: false
ENABLE_DATE_FIELD_ACTION: false
FORMATTER_STYLE: PYDEVF
FORMATTER_STYLE: RUFF
FORMAT_BEFORE_SAVING: true
FORMAT_ONLY_CHANGED_LINES: false
FORMAT_WITH_AUTOPEP8: false
Expand All @@ -32,6 +34,9 @@ PEP8_IMPORTS: true
PYDEV_TEST_RUNNER: '2'
PYDEV_TEST_RUNNER_DEFAULT_PARAMETERS: --capture=no -vv --tb=native -n 0
PYDEV_USE_PYUNIT_VIEW: true
RUFF_FORMATTER_FILE_LOCATION: ''
RUFF_FORMATTER_LOCATION_OPTION: LOCATION_SEARCH
RUFF_PARAMETERS: ''
SAVE_ACTIONS_ONLY_ON_WORKSPACE_FILES: true
SMART_INDENT_PAR: true
SMART_LINE_MOVE: false
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
'''
"""
License: Apache 2.0
Author: Yuli Fitterman
'''
"""
import types

from _pydevd_bundle.pydevd_constants import IS_JYTHON

try:
import inspect
except:
import traceback;
import traceback

traceback.print_exc() # Ok, no inspect available (search will not work)

Expand All @@ -18,7 +18,7 @@

def is_bound_method(obj):
if isinstance(obj, types.MethodType):
return getattr(obj, '__self__', getattr(obj, 'im_self', None)) is not None
return getattr(obj, "__self__", getattr(obj, "im_self", None)) is not None
else:
return False

Expand All @@ -28,7 +28,7 @@ def get_class_name(instance):


def get_bound_class_name(obj):
my_self = getattr(obj, '__self__', getattr(obj, 'im_self', None))
my_self = getattr(obj, "__self__", getattr(obj, "im_self", None))
if my_self is None:
return None
return get_class_name(my_self)
Expand All @@ -40,8 +40,8 @@ def get_description(obj):
except:
ob_call = None

if isinstance(obj, type) or type(obj).__name__ == 'classobj':
fob = getattr(obj, '__init__', lambda: None)
if isinstance(obj, type) or type(obj).__name__ == "classobj":
fob = getattr(obj, "__init__", lambda: None)
if not isinstance(fob, (types.FunctionType, types.MethodType)):
fob = obj
elif is_bound_method(ob_call):
Expand All @@ -55,16 +55,16 @@ def get_description(obj):
if isinstance(fob, (types.FunctionType, types.MethodType)):
spec_info = inspect.getfullargspec(fob)
argspec = inspect.formatargspec(*spec_info)
fn_name = getattr(fob, '__name__', None)
if isinstance(obj, type) or type(obj).__name__ == 'classobj':
fn_name = getattr(fob, "__name__", None)
if isinstance(obj, type) or type(obj).__name__ == "classobj":
fn_name = "__init__"
fn_class = getattr(obj, "__name__", "UnknownClass")
elif is_bound_method(obj) or is_bound_method(ob_call):
fn_class = get_bound_class_name(obj) or "UnknownClass"

else:
fn_name = getattr(fob, '__name__', None)
fn_self = getattr(fob, '__self__', None)
fn_name = getattr(fob, "__name__", None)
fn_self = getattr(fob, "__self__", None)
if fn_self is not None and not isinstance(fn_self, types.ModuleType):
fn_class = get_class_name(fn_self)

Expand All @@ -77,7 +77,7 @@ def create_method_stub(fn_name, fn_class, argspec, doc_string):
doc_string = "" if doc_string is None else doc_string
fn_stub = create_function_stub(fn_name, argspec, doc_string, indent=1 if fn_class else 0)
if fn_class:
expr = fn_class if fn_name == '__init__' else fn_class + '().' + fn_name
expr = fn_class if fn_name == "__init__" else fn_class + "()." + fn_name
return create_class_stub(fn_class, fn_stub) + "\n" + expr
else:
expr = fn_name
Expand All @@ -87,10 +87,10 @@ def create_method_stub(fn_name, fn_class, argspec, doc_string):
restored_signature, _ = signature_from_docstring(doc_string, fn_name)
if restored_signature:
return create_method_stub(fn_name, fn_class, restored_signature, doc_string)
return create_function_stub('unknown', '(*args, **kwargs)', doc_string) + '\nunknown'
return create_function_stub("unknown", "(*args, **kwargs)", doc_string) + "\nunknown"

else:
return ''
return ""


def get_docstring(obj):
Expand All @@ -105,21 +105,20 @@ def get_docstring(obj):
from _pydev_bundle import _pydev_jy_imports_tipper

is_method, infos = _pydev_jy_imports_tipper.ismethod(obj)
ret = ''
ret = ""
if is_method:
for info in infos:
ret += info.get_as_doc()
return ret

else:

doc = inspect.getdoc(obj)
if doc is not None:
return doc
except:
pass
else:
return ''
return ""
try:
# if no attempt succeeded, try to return repr()...
return repr(obj)
Expand All @@ -129,17 +128,16 @@ def get_docstring(obj):
return str(obj.__class__)
except:
# if all fails, go to an empty string
return ''
return ""


def create_class_stub(class_name, contents):
return "class %s(object):\n%s" % (class_name, contents)


def create_function_stub(fn_name, fn_argspec, fn_docstring, indent=0):

def shift_right(string, prefix):
return ''.join(prefix + line for line in string.splitlines(True))
return "".join(prefix + line for line in string.splitlines(True))

fn_docstring = shift_right(inspect.cleandoc(fn_docstring), " " * (indent + 1))
ret = '''
Expand All @@ -148,7 +146,7 @@ def %s%s:
pass
''' % (fn_name, fn_argspec, fn_docstring)
ret = ret[1:] # remove first /n
ret = ret.replace('\t', " ")
ret = ret.replace("\t", " ")
if indent:
prefix = " " * indent
ret = shift_right(ret, prefix)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
try:
import java.lang # @UnusedImport
from _pydev_bundle import _pydev_jy_imports_tipper

_pydev_imports_tipper = _pydev_jy_imports_tipper
except ImportError:
IS_JYTHON = False
Expand All @@ -17,13 +18,13 @@
dir2 = _pydev_imports_tipper.generate_imports_tip_for_module


#=======================================================================================================================
# =======================================================================================================================
# _StartsWithFilter
#=======================================================================================================================
# =======================================================================================================================
class _StartsWithFilter:
'''
Used because we can't create a lambda that'll use an outer scope in jython 2.1
'''
"""
Used because we can't create a lambda that'll use an outer scope in jython 2.1
"""

def __init__(self, start_with):
self.start_with = start_with.lower()
Expand All @@ -32,13 +33,12 @@ def __call__(self, name):
return name.lower().startswith(self.start_with)


#=======================================================================================================================
# =======================================================================================================================
# Completer
#
# This class was gotten from IPython.completer (dir2 was replaced with the completer already in pydev)
#=======================================================================================================================
# =======================================================================================================================
class Completer:

def __init__(self, namespace=None, global_namespace=None):
"""Create a new completer for the command line.
Expand Down Expand Up @@ -82,7 +82,7 @@ def complete(self, text):
"""
if self.use_main_ns:
# In pydev this option should never be used
raise RuntimeError('Namespace must be provided!')
raise RuntimeError("Namespace must be provided!")
self.namespace = __main__.__dict__ # @UndefinedVariable

if "." in text:
Expand Down Expand Up @@ -148,15 +148,15 @@ def attr_matches(self, text):


def generate_completions(frame, act_tok):
'''
"""
:return list(tuple(method_name, docstring, parameters, completion_type))
method_name: str
docstring: str
parameters: str -- i.e.: "(a, b)"
completion_type is an int
See: _pydev_bundle._pydev_imports_tipper for TYPE_ constants
'''
"""
if frame is None:
return []

Expand Down Expand Up @@ -189,21 +189,21 @@ def completions_to_xml(completions):

for comp in completions:
msg.append('<comp p0="')
msg.append(valid_xml(quote(comp[0], '/>_= \t')))
msg.append(valid_xml(quote(comp[0], "/>_= \t")))
msg.append('" p1="')
msg.append(valid_xml(quote(comp[1], '/>_= \t')))
msg.append(valid_xml(quote(comp[1], "/>_= \t")))
msg.append('" p2="')
msg.append(valid_xml(quote(comp[2], '/>_= \t')))
msg.append(valid_xml(quote(comp[2], "/>_= \t")))
msg.append('" p3="')
msg.append(valid_xml(quote(comp[3], '/>_= \t')))
msg.append(valid_xml(quote(comp[3], "/>_= \t")))
msg.append('"/>')
msg.append("</xml>")

return ''.join(msg)
return "".join(msg)


identifier_start = ascii_letters + '_'
identifier_part = ascii_letters + '_' + digits
identifier_start = ascii_letters + "_"
identifier_part = ascii_letters + "_" + digits

identifier_start = set(identifier_start)
identifier_part = set(identifier_part)
Expand All @@ -213,18 +213,18 @@ def isidentifier(s):
return s.isidentifier()


TokenAndQualifier = namedtuple('TokenAndQualifier', 'token, qualifier')
TokenAndQualifier = namedtuple("TokenAndQualifier", "token, qualifier")


def extract_token_and_qualifier(text, line=0, column=0):
'''
"""
Extracts the token a qualifier from the text given the line/colum
(see test_extract_token_and_qualifier for examples).
:param unicode text:
:param int line: 0-based
:param int column: 0-based
'''
"""
# Note: not using the tokenize module because text should be unicode and
# line/column refer to the unicode text (otherwise we'd have to know
# those ranges after converted to bytes).
Expand All @@ -234,32 +234,32 @@ def extract_token_and_qualifier(text, line=0, column=0):
column = 0

if isinstance(text, bytes):
text = text.decode('utf-8')
text = text.decode("utf-8")

lines = text.splitlines()
try:
text = lines[line]
except IndexError:
return TokenAndQualifier(u'', u'')
return TokenAndQualifier("", "")

if column >= len(text):
column = len(text)

text = text[:column]
token = u''
qualifier = u''
token = ""
qualifier = ""

temp_token = []
for i in range(column - 1, -1, -1):
c = text[i]
if c in identifier_part or isidentifier(c) or c == u'.':
if c in identifier_part or isidentifier(c) or c == ".":
temp_token.append(c)
else:
break
temp_token = u''.join(reversed(temp_token))
if u'.' in temp_token:
temp_token = temp_token.split(u'.')
token = u'.'.join(temp_token[:-1])
temp_token = "".join(reversed(temp_token))
if "." in temp_token:
temp_token = temp_token.split(".")
token = ".".join(temp_token[:-1])
qualifier = temp_token[-1]
else:
qualifier = temp_token
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@
def execfile(file, glob=None, loc=None):
if glob is None:
import sys

glob = sys._getframe().f_back.f_globals
if loc is None:
loc = glob

import tokenize

with tokenize.open(file) as stream:
contents = stream.read()

# execute the script (note: it's important to compile first to have the filename set in debug mode)
exec(compile(contents + "\n", file, 'exec'), glob, loc)
exec(compile(contents + "\n", file, "exec"), glob, loc)
Loading

0 comments on commit 75e2832

Please sign in to comment.