mirror of
https://github.com/microsoft/debugpy.git
synced 2025-12-23 08:48:12 +00:00
Fix #1408: Can no longer expand Numpy arrays to view elements
Fix regression when loading pydevd plugins for numpy, pandas, and django. Add smoke test for numpy arrays.
This commit is contained in:
parent
3da94f36b1
commit
8f60dcc531
6 changed files with 94 additions and 3 deletions
9
setup.py
9
setup.py
|
|
@ -176,7 +176,14 @@ if __name__ == "__main__":
|
|||
"License :: OSI Approved :: MIT License",
|
||||
],
|
||||
package_dir={"": "src"},
|
||||
packages=setuptools.find_namespace_packages(where="src", include=["debugpy*"]),
|
||||
packages=[
|
||||
"debugpy",
|
||||
"debugpy.adapter",
|
||||
"debugpy.common",
|
||||
"debugpy.launcher",
|
||||
"debugpy.server",
|
||||
"debugpy._vendored",
|
||||
],
|
||||
package_data={
|
||||
"debugpy": ["ThirdPartyNotices.txt"],
|
||||
"debugpy._vendored": [
|
||||
|
|
|
|||
2
src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py
Normal file
2
src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
import pkgutil
|
||||
__path__ = pkgutil.extend_path(__path__, __name__)
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
import pkgutil
|
||||
__path__ = pkgutil.extend_path(__path__, __name__)
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
import pkgutil
|
||||
__path__ = pkgutil.extend_path(__path__, __name__)
|
||||
77
tests/debugpy/test_numpy.py
Normal file
77
tests/debugpy/test_numpy.py
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See LICENSE in the project root
|
||||
# for license information.
|
||||
|
||||
from tests import debug
|
||||
from tests.patterns import some
|
||||
|
||||
|
||||
def test_ndarray(pyfile, target, run):
|
||||
@pyfile
|
||||
def code_to_debug():
|
||||
import numpy
|
||||
import debuggee
|
||||
|
||||
debuggee.setup()
|
||||
a = numpy.array([123, 456], numpy.int32)
|
||||
print(a) # @bp
|
||||
|
||||
with debug.Session() as session:
|
||||
session.config["variablePresentation"] = {"all": "hide", "protected": "inline"}
|
||||
with run(session, target(code_to_debug)):
|
||||
session.set_breakpoints(code_to_debug, all)
|
||||
|
||||
stop = session.wait_for_stop()
|
||||
scopes = session.request("scopes", {"frameId": stop.frame_id})["scopes"]
|
||||
globals_ref = scopes[0]["variablesReference"]
|
||||
vars = session.request(
|
||||
"variables",
|
||||
{"variablesReference": globals_ref},
|
||||
)["variables"]
|
||||
print(vars)
|
||||
|
||||
# Fetch children variables of the array.
|
||||
(a,) = (v for v in vars if v["name"] == "a")
|
||||
a_vars = session.request(
|
||||
"variables",
|
||||
{"variablesReference": a["variablesReference"]},
|
||||
)["variables"]
|
||||
print(a_vars)
|
||||
|
||||
# Fetch the actual array items
|
||||
(items,) = (v for v in a_vars if v["name"] == "[0:2] ")
|
||||
a_items = session.request(
|
||||
"variables",
|
||||
{"variablesReference": items["variablesReference"]},
|
||||
)["variables"]
|
||||
print(a_items)
|
||||
|
||||
assert a_items == [
|
||||
some.dict.containing(
|
||||
{
|
||||
"type": "int32",
|
||||
"name": "0",
|
||||
"value": "123",
|
||||
"variablesReference": some.int,
|
||||
}
|
||||
),
|
||||
some.dict.containing(
|
||||
{
|
||||
"type": "int32",
|
||||
"name": "1",
|
||||
"value": "456",
|
||||
"variablesReference": some.int,
|
||||
}
|
||||
),
|
||||
some.dict.containing(
|
||||
{
|
||||
"type": "int",
|
||||
"name": "len()",
|
||||
"value": "2",
|
||||
"presentationHint": {"attributes": ["readOnly"]},
|
||||
"variablesReference": 0,
|
||||
}
|
||||
),
|
||||
]
|
||||
|
||||
session.request_continue()
|
||||
|
|
@ -13,6 +13,7 @@ psutil
|
|||
## Used in Python code that is run/debugged by the tests:
|
||||
|
||||
django
|
||||
requests
|
||||
gevent
|
||||
flask
|
||||
gevent
|
||||
numpy
|
||||
requests
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue